From 2c027e9cb21b161df970e8baebccfd645e634744 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Tue, 12 May 2015 13:59:10 -0700 Subject: [PATCH] GUAC-587: Default to localhost:4822 for guacd. Fix absence of SSL support within JDBC auth tunnels. --- .../AbstractGuacamoleTunnelService.java | 24 ++++++++++++++----- .../tunnel/ManagedSSLGuacamoleSocket.java | 10 ++++---- .../net/auth/simple/SimpleConnection.java | 16 +++++++++++-- 3 files changed, 37 insertions(+), 13 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java index 9a8c67235..051f6a9cb 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java @@ -98,6 +98,18 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS @Inject private ConnectionRecordMapper connectionRecordMapper; + /** + * The hostname to use when connecting to guacd if no hostname is provided + * within guacamole.properties. + */ + private static final String DEFAULT_GUACD_HOSTNAME = "localhost"; + + /** + * The port to use when connecting to guacd if no port is provided within + * guacamole.properties. + */ + private static final int DEFAULT_GUACD_PORT = 4822; + /** * All active connections through the tunnel having a given UUID. */ @@ -266,17 +278,17 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS throws GuacamoleException { // Use SSL if requested - if (environment.getProperty(Environment.GUACD_SSL, true)) - return new ManagedInetGuacamoleSocket( - environment.getRequiredProperty(Environment.GUACD_HOSTNAME), - environment.getRequiredProperty(Environment.GUACD_PORT), + if (environment.getProperty(Environment.GUACD_SSL, false)) + return new ManagedSSLGuacamoleSocket( + environment.getProperty(Environment.GUACD_HOSTNAME, DEFAULT_GUACD_HOSTNAME), + environment.getProperty(Environment.GUACD_PORT, DEFAULT_GUACD_PORT), socketClosedCallback ); // Otherwise, just use straight TCP return new ManagedInetGuacamoleSocket( - environment.getRequiredProperty(Environment.GUACD_HOSTNAME), - environment.getRequiredProperty(Environment.GUACD_PORT), + environment.getProperty(Environment.GUACD_HOSTNAME, DEFAULT_GUACD_HOSTNAME), + environment.getProperty(Environment.GUACD_PORT, DEFAULT_GUACD_PORT), socketClosedCallback ); diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/ManagedSSLGuacamoleSocket.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/ManagedSSLGuacamoleSocket.java index 739b4776e..cf3f3804d 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/ManagedSSLGuacamoleSocket.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/glyptodon/guacamole/auth/jdbc/tunnel/ManagedSSLGuacamoleSocket.java @@ -23,15 +23,15 @@ package org.glyptodon.guacamole.auth.jdbc.tunnel; import org.glyptodon.guacamole.GuacamoleException; -import org.glyptodon.guacamole.net.InetGuacamoleSocket; +import org.glyptodon.guacamole.net.SSLGuacamoleSocket; /** - * Implementation of GuacamoleSocket which connects via TCP to a given hostname + * Implementation of GuacamoleSocket which connects via SSL to a given hostname * and port. If the socket is closed for any reason, a given task is run. * * @author Michael Jumper */ -public class ManagedInetGuacamoleSocket extends InetGuacamoleSocket { +public class ManagedSSLGuacamoleSocket extends SSLGuacamoleSocket { /** * The task to run when the socket is closed. @@ -39,7 +39,7 @@ public class ManagedInetGuacamoleSocket extends InetGuacamoleSocket { private final Runnable socketClosedTask; /** - * Creates a new socket which connects via TCP to a given hostname and + * Creates a new socket which connects via SSL to a given hostname and * port. If the socket is closed for any reason, the given task is run. * * @param hostname @@ -56,7 +56,7 @@ public class ManagedInetGuacamoleSocket extends InetGuacamoleSocket { * @throws GuacamoleException * If an error occurs while connecting to the Guacamole proxy server. */ - public ManagedInetGuacamoleSocket(String hostname, int port, + public ManagedSSLGuacamoleSocket(String hostname, int port, Runnable socketClosedTask) throws GuacamoleException { super(hostname, port); this.socketClosedTask = socketClosedTask; diff --git a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/simple/SimpleConnection.java b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/simple/SimpleConnection.java index ee3973359..e5f2f0d1e 100644 --- a/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/simple/SimpleConnection.java +++ b/guacamole-ext/src/main/java/org/glyptodon/guacamole/net/auth/simple/SimpleConnection.java @@ -45,6 +45,18 @@ import org.glyptodon.guacamole.protocol.GuacamoleConfiguration; */ public class SimpleConnection extends AbstractConnection { + /** + * The hostname to use when connecting to guacd if no hostname is provided + * within guacamole.properties. + */ + private static final String DEFAULT_GUACD_HOSTNAME = "localhost"; + + /** + * The port to use when connecting to guacd if no port is provided within + * guacamole.properties. + */ + private static final int DEFAULT_GUACD_PORT = 4822; + /** * Backing configuration, containing all sensitive information. */ @@ -92,8 +104,8 @@ public class SimpleConnection extends AbstractConnection { Environment env = new LocalEnvironment(); // Get guacd connection parameters - String hostname = env.getProperty(Environment.GUACD_HOSTNAME); - int port = env.getProperty(Environment.GUACD_PORT); + String hostname = env.getProperty(Environment.GUACD_HOSTNAME, DEFAULT_GUACD_HOSTNAME); + int port = env.getProperty(Environment.GUACD_PORT, DEFAULT_GUACD_PORT); GuacamoleSocket socket;