Repository: karaf Updated Branches: refs/heads/karaf-2.3.x 7109f573c -> e3c3af996
[KARAF-2760]monitor etc/user.properties change with felix FileInstaller Project: http://git-wip-us.apache.org/repos/asf/karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/2cf59236 Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/2cf59236 Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/2cf59236 Branch: refs/heads/karaf-2.3.x Commit: 2cf592365f7a6a100107fda7bf40b6e8f15e95d2 Parents: c56e9c5 Author: Freeman Fang <[email protected]> Authored: Tue Feb 18 14:03:11 2014 +0800 Committer: Freeman Fang <[email protected]> Committed: Tue Feb 18 14:03:11 2014 +0800 ---------------------------------------------------------------------- jaas/modules/pom.xml | 5 ++ .../modules/properties/PropertiesInstaller.java | 54 ++++++++++++++++++++ .../properties/PropertiesLoginModule.java | 13 +++-- 3 files changed, 69 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/karaf/blob/2cf59236/jaas/modules/pom.xml ---------------------------------------------------------------------- diff --git a/jaas/modules/pom.xml b/jaas/modules/pom.xml index 1056b07..da38adb 100644 --- a/jaas/modules/pom.xml +++ b/jaas/modules/pom.xml @@ -53,6 +53,11 @@ </dependency> <dependency> + <groupId>org.apache.felix</groupId> + <artifactId>org.apache.felix.fileinstall</artifactId> + </dependency> + + <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <scope>provided</scope> http://git-wip-us.apache.org/repos/asf/karaf/blob/2cf59236/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesInstaller.java ---------------------------------------------------------------------- diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesInstaller.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesInstaller.java new file mode 100644 index 0000000..730e97e --- /dev/null +++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesInstaller.java @@ -0,0 +1,54 @@ +package org.apache.karaf.jaas.modules.properties; + +import java.io.File; + +import org.apache.felix.fileinstall.ArtifactInstaller; +import org.apache.felix.utils.properties.Properties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class PropertiesInstaller implements ArtifactInstaller { + + private final Logger LOGGER = LoggerFactory.getLogger(PropertiesInstaller.class); + + private String usersFileName; + + private File usersFile; + + + PropertiesLoginModule propertiesLoginModule; + + + public PropertiesInstaller(PropertiesLoginModule propertiesLoginModule, String usersFile) { + this.propertiesLoginModule = propertiesLoginModule; + this.usersFileName = usersFile; + } + + public boolean canHandle(File artifact) { + if (usersFile == null) { + usersFile = new File(usersFileName); + } + return artifact.getName().endsWith(usersFile.getName()); + } + + public void install(File artifact) throws Exception { + if (usersFile == null) { + usersFile = new File(usersFileName); + } + Properties userProperties = new Properties(usersFile); + this.propertiesLoginModule.encryptedPassword(userProperties); + } + + public void update(File artifact) throws Exception { + if (usersFile == null) { + usersFile = new File(usersFileName); + } + Properties userProperties = new Properties(usersFile); + this.propertiesLoginModule.encryptedPassword(userProperties); + } + + public void uninstall(File artifact) throws Exception { + LOGGER.warn("the users.properties was removed"); + } + +} http://git-wip-us.apache.org/repos/asf/karaf/blob/2cf59236/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModule.java ---------------------------------------------------------------------- diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModule.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModule.java index b57a0b9..9ce8940 100644 --- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModule.java +++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModule.java @@ -44,13 +44,20 @@ public class PropertiesLoginModule extends AbstractKarafLoginModule { private static final String USER_FILE = "users"; private String usersFile; - + + private PropertiesInstaller propertiesInstaller; + + public void initialize(Subject sub, CallbackHandler handler, Map sharedState, Map options) { super.initialize(sub,handler,options); usersFile = (String) options.get(USER_FILE); if (debug) { LOG.debug("Initialized debug=" + debug + " usersFile=" + usersFile); } + propertiesInstaller = new PropertiesInstaller(this, usersFile); + if (this.bundleContext != null) { + this.bundleContext.registerService("org.apache.felix.fileinstall.ArtifactInstaller", propertiesInstaller, null); + } } public boolean login() throws LoginException { @@ -68,7 +75,7 @@ public class PropertiesLoginModule extends AbstractKarafLoginModule { throw new LoginException("Unable to load user properties file " + f); } //encrypt all password if necessary - EncryptedPassword(users); + encryptedPassword(users); Callback[] callbacks = new Callback[2]; @@ -152,7 +159,7 @@ public class PropertiesLoginModule extends AbstractKarafLoginModule { return true; } - private void EncryptedPassword(Properties users) { + void encryptedPassword(Properties users) { for (Object userName : users.keySet()) { String user = (String)userName; String userInfos = null;
