You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2010/01/06 23:11:27 UTC

svn commit: r896695 - in /qpid/branches/0.5.x-dev/qpid/java: ./ broker/ broker/src/main/java/org/apache/qpid/server/management/ management/common/src/main/java/org/apache/qpid/management/common/mbeans/

Author: robbie
Date: Wed Jan  6 22:11:26 2010
New Revision: 896695

URL: http://svn.apache.org/viewvc?rev=896695&view=rev
Log:
QPID-2322: change the JMX parameter name for the password parameter to prevent the 0.5 management console from sending an MD5-hashed password to the once again versionless UserManagement MBean. Add compatibility check to alert users of the old console they should upgrade to a newer release.

merge r896692 from trunk

Modified:
    qpid/branches/0.5.x-dev/qpid/java/   (props changed)
    qpid/branches/0.5.x-dev/qpid/java/broker/   (props changed)
    qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/   (props changed)
    qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
    qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java   (contents, props changed)

Propchange: qpid/branches/0.5.x-dev/qpid/java/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan  6 22:11:26 2010
@@ -1,2 +1,2 @@
 /qpid/branches/java-broker-0-10/qpid/java:829414,829575
-/qpid/trunk/qpid/java:835115,884634-884635,884838,885765,887948,887950-887952,887994,888246,888248,888250,888345,888348,889645,891323-891332,892228,896674
+/qpid/trunk/qpid/java:835115,884634-884635,884838,885765,887948,887950-887952,887994,888246,888248,888250,888345,888348,889645,891323-891332,892228,896674,896692

Propchange: qpid/branches/0.5.x-dev/qpid/java/broker/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan  6 22:11:26 2010
@@ -1,3 +1,3 @@
 /qpid/branches/java-broker-0-10/qpid/java/broker:829414,829575
 /qpid/branches/jmx_mc_gsoc09/qpid/java/broker:787599
-/qpid/trunk/qpid/java/broker:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,889645,896674
+/qpid/trunk/qpid/java/broker:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,889645,896674,896692

Propchange: qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan  6 22:11:26 2010
@@ -1,4 +1,4 @@
 /qpid/branches/0.5-release/qpid/java/broker/src/main/java/org/apache/qpid/server/management:757268
 /qpid/branches/java-broker-0-10/qpid/java/broker/src/main/java/org/apache/qpid/server/management:829414,829575
 /qpid/branches/jmx_mc_gsoc09/qpid/java/broker/src/main/java/org/apache/qpid/server/management:787599
-/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management:753219-753220,753253,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674
+/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/management:753219-753220,753253,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790,835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674,896692

Modified: qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java?rev=896695&r1=896694&r2=896695&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java (original)
+++ qpid/branches/0.5.x-dev/qpid/java/broker/src/main/java/org/apache/qpid/server/management/MBeanInvocationHandlerImpl.java Wed Jan  6 22:11:26 2010
@@ -38,6 +38,7 @@
 import javax.management.JMException;
 import javax.management.NotificationListener;
 import javax.management.Notification;
+import javax.management.OperationsException;
 import javax.security.auth.Subject;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Proxy;
@@ -139,6 +140,8 @@
 
         Principal principal = principals.iterator().next();
         String identity = principal.getName();
+        
+        checkCompatibility(proxy, method, args);
 
         if (isAdminMethod(args))
         {
@@ -168,6 +171,49 @@
         throw new SecurityException("Access denied");
     }
 
+    private void checkCompatibility(final Object proxy, final Method method, final Object[] args) throws Throwable
+    {
+        if (args[0] instanceof ObjectName && method.getName().equals("invoke"))
+        {        
+            //get the ObjectName and invoked Method name
+            final ObjectName objectName = (ObjectName) args[0];
+            
+            final String mbeanMethod = (args.length > 1) ? (String) args[1] : null;
+            if (mbeanMethod == null)
+            {
+                return;
+            }
+            
+            //UserManagement MBean compatibility checks
+            if(objectName.getKeyProperty("type").equals(UserManagement.TYPE))
+            {
+                if (mbeanMethod.equals("createUser") || mbeanMethod.equals("setPassword"))
+                {
+                    //get the provided argument values and types for the method
+                    if( args.length > 2 && args[2] != null && args[2] instanceof Object[] &&
+                        args.length > 3 && args[3] != null && args[3] instanceof String[])
+                    {
+                        //check the 2nd argument value is a char[]
+                        final Object[] argValues = (Object[]) args[2];
+                        final String[] argTypes = (String[]) args[3];
+                        
+                        final Object actualValue = (argValues.length > 1) ? argValues[1] : null;
+                        final String expectedType = (argTypes.length > 1) ? (String) argTypes[1] : null;
+                        
+                        if (expectedType != null && expectedType.equals("[C"))
+                        {     
+                            if (actualValue != null && actualValue instanceof String)
+                            {
+                                throw new OperationsException("Incorrect parameter type provided.\n" +
+                                "Please upgrade to a newer management console release to correct this issue.");
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     private boolean isAdminMethod(Object[] args)
     {
         if (args[0] instanceof ObjectName)

Modified: qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java?rev=896695&r1=896694&r2=896695&view=diff
==============================================================================
--- qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java (original)
+++ qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java Wed Jan  6 22:11:26 2010
@@ -54,7 +54,7 @@
     @MBeanOperation(name = "setPassword", description = "Set password for user.",
                     impact = MBeanOperationInfo.ACTION)
     boolean setPassword(@MBeanOperationParameter(name = "username", description = "Username")String username,
-                        @MBeanOperationParameter(name = "password", description = "Password")char[] password);
+                        @MBeanOperationParameter(name = "passwd", description = "Password")char[] password);
 
     /**
      * set rights for users with given details
@@ -89,7 +89,7 @@
     @MBeanOperation(name = "createUser", description = "Create new user from system.",
                     impact = MBeanOperationInfo.ACTION)
     boolean createUser(@MBeanOperationParameter(name = "username", description = "Username")String username,
-                       @MBeanOperationParameter(name = "password", description = "Password")char[] password,
+                       @MBeanOperationParameter(name = "passwd", description = "Password")char[] password,
                        @MBeanOperationParameter(name = "read", description = "Administration read")boolean read,
                        @MBeanOperationParameter(name = "readAndWrite", description = "Administration write")boolean write,
                        @MBeanOperationParameter(name = "admin", description = "Administration rights")boolean admin);

Propchange: qpid/branches/0.5.x-dev/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan  6 22:11:26 2010
@@ -1,3 +1,3 @@
 /qpid/branches/java-broker-0-10/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:829414,829575
 /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/security/access/management/UserManagement.java:742626,743015,743028-743029,743304,743306,743311,743357,744113,747363,747367,747369-747370,747376,747783,747868-747870,747875,748561,748591,748641,748680,748686,749149,749282,749285,749315,749340,749572,753219-753220,753253,754934,754958,755256,757258,757270,758730,759097,760919,761721,762365,762992,763959,764026,764109,764140,764790
-/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674
+/qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:835115,884634-884635,884838,885765,887952,888246,888248,888250,888348,896674,896692



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org