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); + } } }