From d6d7c3768fb5945033627907c691c896c915bc51 Mon Sep 17 00:00:00 2001 From: Nick Couchman Date: Tue, 29 Aug 2017 21:41:00 -0400 Subject: [PATCH] GUACAMOLE-363: Allow use of alternate JTDS driver. --- ...SQLServerAuthenticationProviderModule.java | 13 +++++++++++- .../auth/sqlserver/SQLServerEnvironment.java | 20 ++++++++++++++++++- .../SQLServerGuacamoleProperties.java | 11 ++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerAuthenticationProviderModule.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerAuthenticationProviderModule.java index ebb1a0678..d936f140d 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerAuthenticationProviderModule.java @@ -40,6 +40,11 @@ public class SQLServerAuthenticationProviderModule implements Module { * SQLServer-specific driver configuration properties. */ private final Properties driverProperties = new Properties(); + + /** + * Whether or not to use JTDS Driver + */ + private Boolean useJTDSDriver = false; /** * Creates a new SQLServer authentication provider module that configures @@ -70,13 +75,19 @@ public class SQLServerAuthenticationProviderModule implements Module { // Use UTF-8 in database driverProperties.setProperty("characterEncoding", "UTF-8"); + // Capture whether or not to use the JTDS driver. + this.useJTDSDriver = environment.getSQLServerJTDSDriver(); + } @Override public void configure(Binder binder) { // Bind SQLServer-specific properties - JdbcHelper.SQL_Server_2005_MS_Driver.configure(binder); + if (this.useJTDSDriver) + JdbcHelper.SQL_Server_jTDS.configure(binder); + else + JdbcHelper.SQL_Server_2005_MS_Driver.configure(binder); // Bind MyBatis properties Names.bindProperties(binder, myBatisProperties); diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerEnvironment.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerEnvironment.java index 67d882719..4d24dd36b 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerEnvironment.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerEnvironment.java @@ -272,7 +272,7 @@ public class SQLServerEnvironment extends JDBCEnvironment { public String getSQLServerDatabase() throws GuacamoleException { return getRequiredProperty(SQLServerGuacamoleProperties.SQLSERVER_DATABASE); } - + /** * Returns the username that should be used when authenticating with the * SQLServer database containing the Guacamole authentication tables. @@ -302,5 +302,23 @@ public class SQLServerEnvironment extends JDBCEnvironment { public String getSQLServerPassword() throws GuacamoleException { return getRequiredProperty(SQLServerGuacamoleProperties.SQLSERVER_PASSWORD); } + + /** + * Returns whether or not to use the SourceForge JTDS driver for more + * generic JTDS connections instead of the Microsoft-provided JDBC driver. + * + * @return + * True if the JTDS driver should be used; false by default. + * + * @throws GuacamoleException + * If an error occurs while retrieving the property value, or if the + * value was not set, as this property is required. + */ + public Boolean getSQLServerJTDSDriver() throws GuacamoleException { + return getProperty( + SQLServerGuacamoleProperties.SQLSERVER_JTDS_DRIVER, + false + ); + } } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerGuacamoleProperties.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerGuacamoleProperties.java index e45f50268..d04d9a13c 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerGuacamoleProperties.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerGuacamoleProperties.java @@ -197,4 +197,15 @@ public class SQLServerGuacamoleProperties { }; + /** + * Whether or not to use the JTDS driver for SQL Server connections. + */ + public static final BooleanGuacamoleProperty + SQLSERVER_JTDS_DRIVER = new BooleanGuacamoleProperty() { + + @Override + public String getName() { return "sqlserver-use-jtds-driver"; } + + }; + }