From 245836904ba5cecdc31773cf7c9616396c8ad8c0 Mon Sep 17 00:00:00 2001 From: James Moger Date: Mon, 17 Mar 2014 21:30:46 -0400 Subject: Elevate the public key manager to a top-level manager --- src/main/java/com/gitblit/DaggerModule.java | 37 ++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/gitblit/DaggerModule.java') diff --git a/src/main/java/com/gitblit/DaggerModule.java b/src/main/java/com/gitblit/DaggerModule.java index 5ae8b253..b109f1db 100644 --- a/src/main/java/com/gitblit/DaggerModule.java +++ b/src/main/java/com/gitblit/DaggerModule.java @@ -32,6 +32,11 @@ import com.gitblit.manager.ProjectManager; import com.gitblit.manager.RepositoryManager; import com.gitblit.manager.RuntimeManager; import com.gitblit.manager.UserManager; +import com.gitblit.transport.ssh.FileKeyManager; +import com.gitblit.transport.ssh.IPublicKeyManager; +import com.gitblit.transport.ssh.MemoryKeyManager; +import com.gitblit.transport.ssh.NullKeyManager; +import com.gitblit.utils.StringUtils; import com.gitblit.wicket.GitBlitWebApp; import dagger.Module; @@ -53,6 +58,7 @@ import dagger.Provides; INotificationManager.class, IUserManager.class, IAuthenticationManager.class, + IPublicKeyManager.class, IRepositoryManager.class, IProjectManager.class, IFederationManager.class, @@ -62,7 +68,7 @@ import dagger.Provides; // the Gitblit Wicket app GitBlitWebApp.class - } + } ) public class DaggerModule { @@ -91,6 +97,31 @@ public class DaggerModule { userManager); } + @Provides @Singleton IPublicKeyManager providePublicKeyManager( + IStoredSettings settings, + IRuntimeManager runtimeManager) { + + String clazz = settings.getString(Keys.git.sshKeysManager, FileKeyManager.class.getName()); + if (StringUtils.isEmpty(clazz)) { + clazz = FileKeyManager.class.getName(); + } + if (FileKeyManager.class.getName().equals(clazz)) { + return new FileKeyManager(runtimeManager); + } else if (NullKeyManager.class.getName().equals(clazz)) { + return new NullKeyManager(); + } else if (MemoryKeyManager.class.getName().equals(clazz)) { + return new MemoryKeyManager(); + } else { + try { + Class mgrClass = Class.forName(clazz); + return (IPublicKeyManager) mgrClass.newInstance(); + } catch (Exception e) { + + } + return null; + } + } + @Provides @Singleton IRepositoryManager provideRepositoryManager( IRuntimeManager runtimeManager, IUserManager userManager) { @@ -127,6 +158,7 @@ public class DaggerModule { INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, + IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IFederationManager federationManager) { @@ -136,6 +168,7 @@ public class DaggerModule { notificationManager, userManager, authenticationManager, + publicKeyManager, repositoryManager, projectManager, federationManager); @@ -146,6 +179,7 @@ public class DaggerModule { INotificationManager notificationManager, IUserManager userManager, IAuthenticationManager authenticationManager, + IPublicKeyManager publicKeyManager, IRepositoryManager repositoryManager, IProjectManager projectManager, IFederationManager federationManager, @@ -156,6 +190,7 @@ public class DaggerModule { notificationManager, userManager, authenticationManager, + publicKeyManager, repositoryManager, projectManager, federationManager, -- cgit v1.2.3 From 84f406bfd20ec2076cf7616e7f396ad480513bc4 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Mon, 10 Mar 2014 01:50:49 +0100 Subject: Add plugins/extension infrastructure Plugins are stored in `${baseFolder}/plugins` and are loaded during startup by the PluginManager. A plugin defines it's metadata in META-INF/MANIFEST.MF: Plugin-Class: com.gitblit.plugins.cookbook.CookbookPlugin Plugin-Dependencies: foo, bar Plugin-Id: gitblit-plugin Plugin-Provider: John Doe Plugin-Version: 1.0 Plugins can define extension points that can be implemented by other plugins and they can depend on other plugins: Plugin-Dependencies: foo, bar During the load phase, a directed acyclic graph is built and the loading order of the dependency chain is reversed using a topological sort; parent followed by children. The parent plugin classloader is the combined classloader of all parent plugins. Change-Id: I738821fa2bff02a5dbe339a944cc7e3c4dd8e299 --- .classpath | 1 + build.moxie | 1 + gitblit.iml | 11 +++++ src/main/distrib/data/gitblit.properties | 8 ++++ src/main/java/WEB-INF/web.xml | 3 +- src/main/java/com/gitblit/DaggerModule.java | 13 ++++- src/main/java/com/gitblit/FederationClient.java | 2 +- src/main/java/com/gitblit/GitBlit.java | 7 ++- src/main/java/com/gitblit/dagger/DaggerFilter.java | 2 +- .../java/com/gitblit/manager/GitblitManager.java | 18 ++++++- src/main/java/com/gitblit/manager/IGitblit.java | 3 +- .../java/com/gitblit/manager/IPluginManager.java | 39 +++++++++++++++ .../java/com/gitblit/manager/PluginManager.java | 56 ++++++++++++++++++++++ .../java/com/gitblit/servlet/GitblitContext.java | 2 + .../com/gitblit/servlet/SyndicationFilter.java | 1 + 15 files changed, 157 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/gitblit/manager/IPluginManager.java create mode 100644 src/main/java/com/gitblit/manager/PluginManager.java (limited to 'src/main/java/com/gitblit/DaggerModule.java') diff --git a/.classpath b/.classpath index d3aec7e8..252a7c96 100644 --- a/.classpath +++ b/.classpath @@ -76,6 +76,7 @@ + diff --git a/build.moxie b/build.moxie index 6015becc..eb2878a8 100644 --- a/build.moxie +++ b/build.moxie @@ -174,6 +174,7 @@ dependencies: - compile 'args4j:args4j:2.0.26' :war :fedclient :authority - compile 'commons-codec:commons-codec:1.7' :war - compile 'redis.clients:jedis:2.3.1' :war +- compile 'ro.fortsoft.pf4j:pf4j:0.6' :war - test 'junit' # Dependencies for Selenium web page testing - test 'org.seleniumhq.selenium:selenium-java:${selenium.version}' @jar diff --git a/gitblit.iml b/gitblit.iml index a48f12ad..ed067f28 100644 --- a/gitblit.iml +++ b/gitblit.iml @@ -790,6 +790,17 @@ + + + + + + + + + + + diff --git a/src/main/distrib/data/gitblit.properties b/src/main/distrib/data/gitblit.properties index 64a52f5c..762344b4 100644 --- a/src/main/distrib/data/gitblit.properties +++ b/src/main/distrib/data/gitblit.properties @@ -1844,3 +1844,11 @@ server.requireClientCertificates = false # SINCE 0.5.0 # RESTART REQUIRED server.shutdownPort = 8081 + +# Base folder for plugins. +# This folder may contain Gitblit plugins +# +# SINCE 1.6.0 +# RESTART REQUIRED +# BASEFOLDER +plugins.folder = ${baseFolder}/plugins diff --git a/src/main/java/WEB-INF/web.xml b/src/main/java/WEB-INF/web.xml index 1451ec63..77456d47 100644 --- a/src/main/java/WEB-INF/web.xml +++ b/src/main/java/WEB-INF/web.xml @@ -199,7 +199,6 @@ /robots.txt -