GUACAMOLE-38: Handle encoded query parameters.

Project: http://git-wip-us.apache.org/repos/asf/guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/guacamole-client/commit/963593ea
Tree: http://git-wip-us.apache.org/repos/asf/guacamole-client/tree/963593ea
Diff: http://git-wip-us.apache.org/repos/asf/guacamole-client/diff/963593ea

Branch: refs/heads/master
Commit: 963593ea27831ae772f39d8f64b3d2d2a3ac5b8f
Parents: d4b7e2b
Author: Nick Couchman <vn...@apache.org>
Authored: Thu Apr 19 06:01:37 2018 -0400
Committer: Nick Couchman <vn...@apache.org>
Committed: Fri Jun 1 13:40:52 2018 -0400

----------------------------------------------------------------------
 .../auth/quickconnect/utility/QCParser.java      | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/guacamole-client/blob/963593ea/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
----------------------------------------------------------------------
diff --git 
a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
 
b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
index 7d5d7d4..650d561 100644
--- 
a/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
+++ 
b/extensions/guacamole-auth-quickconnect/src/main/java/org/apache/guacamole/auth/quickconnect/utility/QCParser.java
@@ -19,16 +19,21 @@
 
 package org.apache.guacamole.auth.quickconnect.utility;
 
+import java.io.UnsupportedEncodingException;
 import java.lang.StringBuilder;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.net.URLDecoder;
 import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.guacamole.GuacamoleClientException;
+import org.apache.guacamole.GuacamoleServerException;
 import org.apache.guacamole.GuacamoleException;
 import org.apache.guacamole.protocol.GuacamoleConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A utility class to parse out a URI into the settings necessary
@@ -37,6 +42,11 @@ import org.apache.guacamole.protocol.GuacamoleConfiguration;
 public class QCParser {
 
     /**
+     * Logger for this class.
+     */
+    private final static Logger logger = 
LoggerFactory.getLogger(QCParser.class);
+
+    /**
      * The default protocol to parse to if one is provided in
      * the incoming URI..
      */
@@ -131,7 +141,14 @@ public class QCParser {
         if (paramList != null) {
             for (String parameter : paramList) {
                 String[] paramArray = parameter.split("=", 2);
-                qcConfig.setParameter(paramArray[0],paramArray[1]);
+                try {
+                    qcConfig.setParameter(URLDecoder.decode(paramArray[0], 
"UTF-8"),
+                                          URLDecoder.decode(paramArray[1], 
"UTF-8"));
+                }
+                catch (UnsupportedEncodingException e) {
+                    logger.error("Unexpected lack of UTF-8 encoding support.");
+                    throw new GuacamoleServerException("Unexpected lack of 
UTF-8 encoding support.", e);
+                }
             }
         }
 

Reply via email to