From b6383879201f49f570db8b4fc603e6f70ca45cfb Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Mon, 21 Jan 2019 17:38:21 -0800 Subject: [PATCH] GUACAMOLE-524: Provide distinct, documented, internal access to raw GuacamoleConfiguration within SimpleConnection. While raw, internal access to the GuacamoleConfiguration was originally present in older versions of SimpleConnection, this access was undocumented and could result in unexpected behavior if the default constructor was used, getConfiguration() was overridden, or setConfiguration() was called. --- .../net/auth/simple/SimpleConnection.java | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java index 2dec26a94..adbcaed90 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleConnection.java @@ -52,7 +52,7 @@ public class SimpleConnection extends AbstractConnection { /** * Backing configuration, containing all sensitive information. */ - private GuacamoleConfiguration config; + private GuacamoleConfiguration fullConfig; /** * Creates a completely uninitialized SimpleConnection. @@ -71,19 +71,36 @@ public class SimpleConnection extends AbstractConnection { */ public SimpleConnection(String name, String identifier, GuacamoleConfiguration config) { - - // Set name - setName(name); - // Set identifier - setIdentifier(identifier); + super.setName(name); + super.setIdentifier(identifier); + super.setConfiguration(config); - // Set config - setConfiguration(config); - this.config = config; + this.fullConfig = config; } + /** + * Returns the GuacamoleConfiguration describing how to connect to this + * connection. Unlike the GuacamoleConfiguration returned by + * {@link #getConfiguration()}, which may omit or tokenize information, + * the GuacamoleConfiguration returned by this function contains the full + * configuration to be used to establish the connection. + * + * @return + * The full GuacamoleConfiguration describing how to connect to this + * connection, without any information omitted or tokenized. + */ + protected GuacamoleConfiguration getFullConfiguration() { + return fullConfig; + } + + @Override + public void setConfiguration(GuacamoleConfiguration config) { + super.setConfiguration(config); + this.fullConfig = config; + } + @Override public int getActiveConnections() { return 0; @@ -112,7 +129,7 @@ public class SimpleConnection extends AbstractConnection { int port = proxyConfig.getPort(); // Apply tokens to config parameters - GuacamoleConfiguration filteredConfig = new GuacamoleConfiguration(config); + GuacamoleConfiguration filteredConfig = new GuacamoleConfiguration(getFullConfiguration()); new TokenFilter(tokens).filterValues(filteredConfig.getParameters()); GuacamoleSocket socket;