From 8d96b960e472433d2b4a5b71df7000bf1fbde648 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Thu, 10 Apr 2014 18:58:10 -0400 Subject: [PATCH] Track the SSH public key used for a session and add a `keys which` command --- src/main/java/com/gitblit/manager/GitblitManager.java | 36 +++++++++++++++++++++++++++++++----- 1 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java index a5a2637..0001706 100644 --- a/src/main/java/com/gitblit/manager/GitblitManager.java +++ b/src/main/java/com/gitblit/manager/GitblitManager.java @@ -42,6 +42,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import ro.fortsoft.pf4j.PluginWrapper; + import com.gitblit.Constants; import com.gitblit.Constants.AccessPermission; import com.gitblit.Constants.AccessRestrictionType; @@ -68,7 +70,8 @@ import com.gitblit.models.TeamModel; import com.gitblit.models.UserModel; import com.gitblit.tickets.ITicketService; -import com.gitblit.transport.ssh.SshSession; +import com.gitblit.transport.ssh.IPublicKeyManager; +import com.gitblit.transport.ssh.SshKey; import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.HttpUtils; import com.gitblit.utils.JsonUtils; @@ -101,11 +104,15 @@ protected final IRuntimeManager runtimeManager; + protected final IPluginManager pluginManager; + protected final INotificationManager notificationManager; protected final IUserManager userManager; protected final IAuthenticationManager authenticationManager; + + protected final IPublicKeyManager publicKeyManager; protected final IRepositoryManager repositoryManager; @@ -115,18 +122,22 @@ public GitblitManager( IRuntimeManager runtimeManager, + IPluginManager pluginManager, INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, + IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IFederationManager federationManager) { this.settings = runtimeManager.getSettings(); this.runtimeManager = runtimeManager; + this.pluginManager = pluginManager; this.notificationManager = notificationManager; this.userManager = userManager; this.authenticationManager = authenticationManager; + this.publicKeyManager = publicKeyManager; this.repositoryManager = repositoryManager; this.projectManager = projectManager; this.federationManager = federationManager; @@ -524,6 +535,11 @@ throw new RuntimeException("This class does not have a ticket service!"); } + @Override + public IPublicKeyManager getPublicKeyManager() { + return publicKeyManager; + } + /* * ISTOREDSETTINGS * @@ -652,12 +668,12 @@ } return user; } - + @Override - public UserModel authenticate(SshSession sshSession) { - return authenticationManager.authenticate(sshSession); + public UserModel authenticate(String username, SshKey key) { + return authenticationManager.authenticate(username, key); } - + @Override public UserModel authenticate(HttpServletRequest httpRequest, boolean requiresCertificate) { UserModel user = authenticationManager.authenticate(httpRequest, requiresCertificate); @@ -1161,4 +1177,14 @@ public boolean isIdle(Repository repository) { return repositoryManager.isIdle(repository); } + + @Override + public <T> List<T> getExtensions(Class<T> clazz) { + return pluginManager.getExtensions(clazz); + } + + @Override + public PluginWrapper whichPlugin(Class<?> clazz) { + return pluginManager.whichPlugin(clazz); + } } -- Gitblit v1.9.1