GUACAMOLE-38: Handle encoded query parameters.

This commit is contained in:
Nick Couchman
2018-04-19 06:01:37 -04:00
parent d4b7e2b8b6
commit 963593ea27

View File

@@ -19,16 +19,21 @@
package org.apache.guacamole.auth.quickconnect.utility; package org.apache.guacamole.auth.quickconnect.utility;
import java.io.UnsupportedEncodingException;
import java.lang.StringBuilder; import java.lang.StringBuilder;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.apache.guacamole.GuacamoleClientException; import org.apache.guacamole.GuacamoleClientException;
import org.apache.guacamole.GuacamoleServerException;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.protocol.GuacamoleConfiguration; 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 * A utility class to parse out a URI into the settings necessary
@@ -36,6 +41,11 @@ import org.apache.guacamole.protocol.GuacamoleConfiguration;
*/ */
public class QCParser { 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 default protocol to parse to if one is provided in
* the incoming URI.. * the incoming URI..
@@ -131,7 +141,14 @@ public class QCParser {
if (paramList != null) { if (paramList != null) {
for (String parameter : paramList) { for (String parameter : paramList) {
String[] paramArray = parameter.split("=", 2); 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);
}
} }
} }