You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/04/18 12:39:01 UTC

qpid-jms-amqp-0-x git commit: QPID-8135: Mask connection URL password options

Repository: qpid-jms-amqp-0-x
Updated Branches:
  refs/heads/master 97347f0fb -> bcb5f70fd


QPID-8135: Mask connection URL password options


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/commit/bcb5f70f
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/tree/bcb5f70f
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/diff/bcb5f70f

Branch: refs/heads/master
Commit: bcb5f70fd8bc0f628c868cf30b30f2f2ca349295
Parents: 97347f0
Author: Alex Rudyy <or...@apache.org>
Authored: Wed Apr 18 13:12:25 2018 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Wed Apr 18 13:25:07 2018 +0100

----------------------------------------------------------------------
 .../apache/qpid/client/AMQConnectionURL.java    | 17 ++++++----
 .../org/apache/qpid/client/BrokerDetails.java   | 35 ++------------------
 .../java/org/apache/qpid/url/URLHelper.java     | 16 ++++++++-
 .../client/connectionurl/ConnectionURLTest.java | 32 ++++++++++++++++++
 4 files changed, 59 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/bcb5f70f/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java b/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java
index a2cd52a..5a19791 100644
--- a/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java
+++ b/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java
@@ -20,6 +20,8 @@
  */
 package org.apache.qpid.client;
 
+import static org.apache.qpid.client.BrokerDetails.PASSWORD_YIELDING_OPTIONS;
+
 import org.apache.qpid.client.url.URLParser;
 import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.url.URLHelper;
@@ -351,17 +353,18 @@ public class AMQConnectionURL implements ConnectionURL, Serializable
 
     private String optionsToString()
     {
-        StringBuffer sb = new StringBuffer("?");
+        StringBuilder sb = new StringBuilder();
         
         if (!_options.isEmpty())
         {
-            for (Map.Entry<String, String> option : _options.entrySet())
-            {
-                sb.append(option.getKey()).append("='").append(option.getValue()).append("'");
-                sb.append(URLHelper.DEFAULT_OPTION_SEPERATOR);
-            }
+            sb.append(URLHelper.printOptions(_options, PASSWORD_YIELDING_OPTIONS));
+            sb.append(URLHelper.DEFAULT_OPTION_SEPERATOR);
         }
-        
+        else
+        {
+            sb.append("?");
+        }
+
         sb.append(OPTIONS_BROKERLIST).append("='");
         for (BrokerDetails service : _brokers)
         {

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/bcb5f70f/client/src/main/java/org/apache/qpid/client/BrokerDetails.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/qpid/client/BrokerDetails.java b/client/src/main/java/org/apache/qpid/client/BrokerDetails.java
index 5b99285..609dd59 100644
--- a/client/src/main/java/org/apache/qpid/client/BrokerDetails.java
+++ b/client/src/main/java/org/apache/qpid/client/BrokerDetails.java
@@ -69,7 +69,7 @@ public class BrokerDetails implements Serializable
     public static final String OPTIONS_ENCRYPTION_KEY_STORE = "encryption_key_store";
     public static final String OPTIONS_ENCRYPTION_KEY_STORE_PASSWORD = "encryption_key_store_password";
 
-    private static final Set<String> PASSWORD_YIELDING_OPTIONS =
+    static final Set<String> PASSWORD_YIELDING_OPTIONS =
             Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
                     OPTIONS_TRUST_STORE_PASSWORD,
                     OPTIONS_KEY_STORE_PASSWORD,
@@ -424,38 +424,7 @@ public class BrokerDetails implements Serializable
 
     private String printOptionsURL()
     {
-        StringBuffer optionsURL = new StringBuffer();
-
-        optionsURL.append('?');
-
-        if (!(_options.isEmpty()))
-        {
-
-            for (String key : _options.keySet())
-            {
-                optionsURL.append(key);
-
-                optionsURL.append("='");
-
-                if (PASSWORD_YIELDING_OPTIONS.contains(key))
-                {
-                    optionsURL.append("********");
-                }
-                else
-                {
-                    optionsURL.append(_options.get(key));
-                }
-
-                optionsURL.append("'");
-
-                optionsURL.append(URLHelper.DEFAULT_OPTION_SEPERATOR);
-            }
-        }
-
-        //removeKey the extra DEFAULT_OPTION_SEPERATOR or the '?' if there are no options
-        optionsURL.deleteCharAt(optionsURL.length() - 1);
-
-        return optionsURL.toString();
+        return URLHelper.printOptions(_options, PASSWORD_YIELDING_OPTIONS);
     }
 
     public static String checkTransport(String broker)

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/bcb5f70f/client/src/main/java/org/apache/qpid/url/URLHelper.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/qpid/url/URLHelper.java b/client/src/main/java/org/apache/qpid/url/URLHelper.java
index c7fea15..219cccd 100644
--- a/client/src/main/java/org/apache/qpid/url/URLHelper.java
+++ b/client/src/main/java/org/apache/qpid/url/URLHelper.java
@@ -20,7 +20,9 @@
  */
 package org.apache.qpid.url;
 
+import java.util.Collections;
 import java.util.Map;
+import java.util.Set;
 
 public class URLHelper
 {
@@ -145,6 +147,11 @@ public class URLHelper
 
     public static String printOptions(Map<String, String> options)
     {
+        return printOptions(options, Collections.<String>emptySet());
+    }
+
+    public static String printOptions(Map<String, String> options, Set<String> optionNamesToMask)
+    {
         if (options.isEmpty())
         {
             return "";
@@ -159,7 +166,14 @@ public class URLHelper
 
                 sb.append("='");
 
-                sb.append(entry.getValue());
+                if (optionNamesToMask.contains(entry.getKey()))
+                {
+                    sb.append("********");
+                }
+                else
+                {
+                    sb.append(entry.getValue());
+                }
 
                 sb.append("'");
                 sb.append(DEFAULT_OPTION_SEPERATOR);

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/bcb5f70f/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java b/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
index c31eb4d..fb7b058 100644
--- a/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
+++ b/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
@@ -285,6 +285,38 @@ public class ConnectionURLTest extends QpidTestCase
         assertEquals("Unexpected toString form", expectedToString, actualToString);
     }
 
+    public void testToStringMasksConnectionOptionForEncryptionTrustStorePassword() throws Exception
+    {
+        ConnectionURL url = new AMQConnectionURL("amqp://user:pass@temp/test?encryption_trust_store_password='password'&brokerlist='tcp://localhost:5672'");
+
+        String expectedToString = "amqp://user:********@temp/test?encryption_trust_store_password='********'&brokerlist='tcp://localhost:5672'";
+        assertEquals("Unexpected toString", expectedToString, url.toString());
+    }
+
+    public void testToStringMasksConnectionOptionForEncryptionKeyStorePassword() throws Exception
+    {
+        ConnectionURL url = new AMQConnectionURL("amqp://user:pass@temp/test?encryption_key_store_password='password'&brokerlist='tcp://localhost:5672'");
+
+        String expectedToString = "amqp://user:********@temp/test?encryption_key_store_password='********'&brokerlist='tcp://localhost:5672'";
+        assertEquals("Unexpected toString", expectedToString, url.toString());
+    }
+
+    public void testToStringMasksConnectionOptionForTrustStorePassword() throws Exception
+    {
+        ConnectionURL url = new AMQConnectionURL("amqp://user:pass@temp/test?trust_store_password='password'&brokerlist='tcp://localhost:5672'");
+
+        String expectedToString = "amqp://user:********@temp/test?trust_store_password='********'&brokerlist='tcp://localhost:5672'";
+        assertEquals("Unexpected toString", expectedToString, url.toString());
+    }
+
+    public void testToStringMasksConnectionOptionForKeyStorePassword() throws Exception
+    {
+        ConnectionURL url = new AMQConnectionURL("amqp://user:pass@temp/test?key_store_password='password'&brokerlist='tcp://localhost:5672'");
+
+        String expectedToString = "amqp://user:********@temp/test?key_store_password='********'&brokerlist='tcp://localhost:5672'";
+        assertEquals("Unexpected toString", expectedToString, url.toString());
+    }
+
     /**
      * Test for QPID-3662 to ensure the {@code toString()} representation is correct.
      */


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org