You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ca...@apache.org on 2010/01/06 04:12:17 UTC

svn commit: r896316 - in /geronimo/server/branches/2.2/framework: configs/rmi-naming/src/main/plan/ modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/ modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/j...

Author: caijunj
Date: Wed Jan  6 03:12:17 2010
New Revision: 896316

URL: http://svn.apache.org/viewvc?rev=896316&view=rev
Log:
GERONIMO-3003 - Encrypt password strings in deployment plans: add a sub command in deploy command to encrypt a given string for use in deployment plan

Added:
    geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java   (with props)
    geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java   (with props)
Modified:
    geronimo/server/branches/2.2/framework/configs/rmi-naming/src/main/plan/plan.xml
    geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java
    geronimo/server/branches/2.2/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java
    geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java
    geronimo/server/branches/2.2/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java

Modified: geronimo/server/branches/2.2/framework/configs/rmi-naming/src/main/plan/plan.xml
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/configs/rmi-naming/src/main/plan/plan.xml?rev=896316&r1=896315&r2=896316&view=diff
==============================================================================
--- geronimo/server/branches/2.2/framework/configs/rmi-naming/src/main/plan/plan.xml (original)
+++ geronimo/server/branches/2.2/framework/configs/rmi-naming/src/main/plan/plan.xml Wed Jan  6 03:12:17 2010
@@ -61,5 +61,11 @@
         <attribute name="maxPoolSize">500</attribute>
         <attribute name="poolName">DefaultThreadPool</attribute>
     </gbean>
+    
+    <gbean name="ConfiguredEncryption" class="org.apache.geronimo.system.util.ConfiguredEncryption">
+        <reference name="ServerInfo">
+            <name>ServerInfo</name>
+        </reference>
+    </gbean>
 
 </module>

Modified: geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java?rev=896316&r1=896315&r2=896316&view=diff
==============================================================================
--- geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java (original)
+++ geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/DeployerCLParser.java Wed Jan  6 03:12:17 2010
@@ -89,6 +89,7 @@
         commandMetaData.add(InstallPluginCommandMetaData.META_DATA);
         commandMetaData.add(HelpCommandMetaData.META_DATA);
         commandMetaData.add(InstallLibraryCommandMetaData.META_DATA);
+        commandMetaData.add(EncryptCommandMetaData.META_DATA);
 
         addURI();
         addHost();

Added: geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java?rev=896316&view=auto
==============================================================================
--- geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java (added)
+++ geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java Wed Jan  6 03:12:17 2010
@@ -0,0 +1,36 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.cli.deployer;
+
+
+/**
+ * @version $Rev: 515007 $ $Date: 2007-03-06 18:26:41 +1100 (Tue, 06 Mar 2007) $
+ */
+public class EncryptCommandMetaData extends BaseCommandMetaData  {
+    public static final CommandMetaData META_DATA = new EncryptCommandMetaData();
+    
+    private EncryptCommandMetaData() {
+        super("encrypt", "2. Other Commands", "",
+                "Encrypt a string for use in deployment plan.\n" +
+                "If you want to use a running server to do the encryption (so that\n" +
+                "you will use the encryption setting of that server, make sure the\n" +
+                "server is running and specify the general options to connect to it.\n" +
+                "If you want to use the common simple encryption, use the --offline\n" +
+                "option. No running server is required in this case.");
+    }
+
+}

Propchange: geronimo/server/branches/2.2/framework/modules/geronimo-cli/src/main/java/org/apache/geronimo/cli/deployer/EncryptCommandMetaData.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/server/branches/2.2/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java?rev=896316&r1=896315&r2=896316&view=diff
==============================================================================
--- geronimo/server/branches/2.2/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java (original)
+++ geronimo/server/branches/2.2/framework/modules/geronimo-deploy-jsr88/src/main/java/org/apache/geronimo/deployment/plugin/jmx/JMXDeploymentManager.java Wed Jan  6 03:12:17 2010
@@ -337,4 +337,8 @@
     public void setInPlace(boolean inPlace) {
         commandContext.setInPlace(inPlace);
     }
+    
+    public Kernel getKernel() {
+        return kernel;
+    }
 }

Added: geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java?rev=896316&view=auto
==============================================================================
--- geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java (added)
+++ geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java Wed Jan  6 03:12:17 2010
@@ -0,0 +1,65 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+package org.apache.geronimo.deployment.cli;
+
+import javax.enterprise.deploy.spi.DeploymentManager;
+
+import jline.ConsoleReader;
+
+import org.apache.geronimo.cli.deployer.CommandArgs;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.crypto.EncryptionManager;
+import org.apache.geronimo.deployment.plugin.jmx.RemoteDeploymentManager;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.system.util.ConfiguredEncryption;
+
+/**
+ * The CLI command to encrypt a given string.
+ *
+ * @version $Rev: 617588 $ $Date: 2008-02-02 02:20:07 +0800 (Sat, 02 Feb 2008) $
+ */
+public class CommandEncrypt extends AbstractCommand {
+
+    public void execute(ConsoleReader consoleReader, ServerConnection connection, CommandArgs commandArgs) throws DeploymentException {
+        try {
+            if (commandArgs.getArgs().length == 0) {
+                consoleReader.printString(DeployUtils.reformat("Please enter the string to be encrypted after the encrypt command.", 4, 72));
+                return;
+            }
+            if (commandArgs.getArgs().length > 1) {
+                consoleReader.printString(DeployUtils.reformat("Too many parameters. Only the first string will be encrypted.", 4, 72));
+            }
+            
+            consoleReader.printString(DeployUtils.reformat("String to encrypt: "+commandArgs.getArgs()[0], 4, 72));
+            DeploymentManager dm = connection.getDeploymentManager();
+            if (dm instanceof RemoteDeploymentManager) {
+                // Online encryption
+                Kernel k = ((RemoteDeploymentManager)dm).getKernel();
+                Object ret = k.invoke(ConfiguredEncryption.class, "encrypt", new Object[] {commandArgs.getArgs()[0]}, new String[] {"java.lang.String"});
+                consoleReader.printString(DeployUtils.reformat("Online encryption result: "+ret, 4, 72));
+            } else {
+                // Offline encryption
+                Object ret = EncryptionManager.encrypt(commandArgs.getArgs()[0]);
+                consoleReader.printString(DeployUtils.reformat("Offline encryption result: "+ret, 4, 72));
+            }
+            consoleReader.printNewline();
+        } catch (Exception e) {
+            throw new DeploymentException("Unable to reach the server to do the encryption.", e);
+        }
+    }
+}

Propchange: geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/CommandEncrypt.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java?rev=896316&r1=896315&r2=896316&view=diff
==============================================================================
--- geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java (original)
+++ geronimo/server/branches/2.2/framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/DeployTool.java Wed Jan  6 03:12:17 2010
@@ -32,12 +32,15 @@
 
 import javax.enterprise.deploy.spi.factories.DeploymentFactory;
 
+import jline.ConsoleReader;
+
 import org.apache.geronimo.cli.deployer.CommandArgs;
 import org.apache.geronimo.cli.deployer.CommandFileCommandMetaData;
 import org.apache.geronimo.cli.deployer.CommandMetaData;
 import org.apache.geronimo.cli.deployer.DeployCommandMetaData;
 import org.apache.geronimo.cli.deployer.DeployerCLParser;
 import org.apache.geronimo.cli.deployer.DistributeCommandMetaData;
+import org.apache.geronimo.cli.deployer.EncryptCommandMetaData;
 import org.apache.geronimo.cli.deployer.InstallLibraryCommandMetaData;
 import org.apache.geronimo.cli.deployer.InstallPluginCommandMetaData;
 import org.apache.geronimo.cli.deployer.ListModulesCommandMetaData;
@@ -57,8 +60,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import jline.ConsoleReader;
-
 
 /**
  * The main class for the CLI deployer.  Handles chunking the input arguments
@@ -91,6 +92,7 @@
         commands.put(SearchPluginsCommandMetaData.META_DATA, new CommandListConfigurations());
         commands.put(InstallPluginCommandMetaData.META_DATA, new CommandInstallCAR());
         commands.put(InstallLibraryCommandMetaData.META_DATA, new CommandInstallLibrary());
+        commands.put(EncryptCommandMetaData.META_DATA, new CommandEncrypt());
     }
 
     private boolean failed = false;

Modified: geronimo/server/branches/2.2/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java
URL: http://svn.apache.org/viewvc/geronimo/server/branches/2.2/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java?rev=896316&r1=896315&r2=896316&view=diff
==============================================================================
--- geronimo/server/branches/2.2/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java (original)
+++ geronimo/server/branches/2.2/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/util/ConfiguredEncryption.java Wed Jan  6 03:12:17 2010
@@ -58,6 +58,10 @@
 
 
     public ConfiguredEncryption(String path, ServerInfo serverInfo) throws IOException, ClassNotFoundException {
+        if (path == null || "".equals(path)) {
+            spec = null;
+            return;
+        }
         File location = serverInfo.resolve(path);
         if (location.exists()) {
             FileInputStream in = new FileInputStream(location);
@@ -100,7 +104,9 @@
     }
 
     public void doStart() throws Exception {
-        EncryptionManager.setEncryptionPrefix("{Configured}", this);
+        if (spec != null) {
+            EncryptionManager.setEncryptionPrefix("{Configured}", this);
+        }
     }
 
     public void doStop() throws Exception {
@@ -112,6 +118,10 @@
     protected SecretKeySpec getSecretKeySpec() {
         return spec;
     }
+    
+    public String encrypt(String text) {
+        return EncryptionManager.encrypt(text);
+    }
 
     public static final GBeanInfo GBEAN_INFO;
 
@@ -120,6 +130,7 @@
         infoBuilder.addAttribute("path", String.class, true, true);
         infoBuilder.addReference("ServerInfo", ServerInfo.class, "GBean");
         infoBuilder.setConstructor(new String[]{"path", "ServerInfo"});
+        infoBuilder.addOperation("encrypt", new Class[] {String.class}, "java.lang.String");
         GBEAN_INFO = infoBuilder.getBeanInfo();
     }