You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ff...@apache.org on 2014/02/19 05:10:14 UTC

git commit: [KARAF-2760]monitor etc/user.properties change with felix FileInstaller (cherry picked from commit 2cf592365f7a6a100107fda7bf40b6e8f15e95d2)

Repository: karaf
Updated Branches:
  refs/heads/karaf-2.x 77ddd1b7a -> a60cec5bd


[KARAF-2760]monitor etc/user.properties change with felix FileInstaller
(cherry picked from commit 2cf592365f7a6a100107fda7bf40b6e8f15e95d2)

Conflicts:
	jaas/modules/src/main/java/org/apache/karaf/jaas/modules/properties/PropertiesLoginModule.java


Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/a60cec5b
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/a60cec5b
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/a60cec5b

Branch: refs/heads/karaf-2.x
Commit: a60cec5bdc0c7b2e8777a03937d3409f90db8ca9
Parents: 77ddd1b
Author: Freeman Fang <fr...@gmail.com>
Authored: Tue Feb 18 14:03:11 2014 +0800
Committer: Freeman Fang <fr...@gmail.com>
Committed: Wed Feb 19 12:09:34 2014 +0800

----------------------------------------------------------------------
 jaas/modules/pom.xml                            |  5 ++
 .../modules/properties/PropertiesInstaller.java | 54 ++++++++++++++++++++
 .../properties/PropertiesLoginModule.java       | 14 +++--
 3 files changed, 70 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/karaf/blob/a60cec5b/jaas/modules/pom.xml
----------------------------------------------------------------------
diff --git a/jaas/modules/pom.xml b/jaas/modules/pom.xml
index 02249e0..e41c2e0 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/a60cec5b/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/a60cec5b/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 2f456b9..c5f00c8 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
@@ -49,13 +49,20 @@ public class PropertiesLoginModule extends AbstractKarafLoginModule {
     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) {
             LOGGER.debug("Initialized debug={} usersFile={}", debug, 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 {
@@ -74,7 +81,7 @@ public class PropertiesLoginModule extends AbstractKarafLoginModule {
         }
 
         //encrypt all password if necessary
-        EncryptedPassword(users);
+        encryptedPassword(users);
 
         Callback[] callbacks = new Callback[2];
 
@@ -176,7 +183,8 @@ 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;