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;

Reply via email to