From 3d86026cb1760a0ef7a64e63d69407109e1bb962 Mon Sep 17 00:00:00 2001 From: Virtually Nick Date: Fri, 11 Oct 2024 11:19:04 -0400 Subject: [PATCH] GUACAMOLE-1239: Make sure case sensitivity warnings are only displayed at startup. --- .../mysql/MySQLAuthenticationProviderModule.java | 16 ++++++++++++++++ .../auth/mysql/conf/MySQLEnvironment.java | 15 ++------------- .../SQLServerAuthenticationProviderModule.java | 16 ++++++++++++++++ .../sqlserver/conf/SQLServerEnvironment.java | 9 --------- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/MySQLAuthenticationProviderModule.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/MySQLAuthenticationProviderModule.java index 62cf0c4c0..faedb237a 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/MySQLAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/MySQLAuthenticationProviderModule.java @@ -30,12 +30,19 @@ import org.apache.guacamole.auth.mysql.conf.MySQLDriver; import org.apache.guacamole.auth.mysql.conf.MySQLEnvironment; import org.apache.guacamole.auth.mysql.conf.MySQLSSLMode; import org.mybatis.guice.datasource.helper.JdbcHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Guice module which configures MySQL-specific injections. */ public class MySQLAuthenticationProviderModule implements Module { + /** + * Logger for this class. + */ + private static final Logger LOGGER = LoggerFactory.getLogger(MySQLAuthenticationProviderModule.class); + /** * MyBatis-specific configuration properties. */ @@ -121,6 +128,15 @@ public class MySQLAuthenticationProviderModule implements Module { TimeZone serverTz = environment.getServerTimeZone(); if (serverTz != null) driverProperties.setProperty("serverTimezone", serverTz.getID()); + + // Check for case-sensitivity and warn admin + if (environment.getCaseSensitiveUsernames()) + LOGGER.warn("The MySQL module is currently configured to support " + + "case-sensitive username comparisons, however, the default " + + "collations for MySQL databases do not support " + + "case-sensitive string comparisons. If you want usernames " + + "within Guacamole to be treated as case-sensitive, further " + + "database configuration may be required."); } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java index 08ccf5404..c26317332 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java @@ -446,23 +446,12 @@ public class MySQLEnvironment extends JDBCEnvironment { @Override public boolean getCaseSensitiveUsernames() throws GuacamoleException { - // Get the configured value for the property. - boolean caseSensitiveUsernames = getProperty( + // Return the configured value for the property, or the global value. + return getProperty( MySQLGuacamoleProperties.MYSQL_CASE_SENSITIVE_USERNAMES, super.getCaseSensitiveUsernames() ); - // If property has been set to true, warn the admin. - if (caseSensitiveUsernames) - logger.warn("You have enabled case-sensitive usernames; however, " - + "MySQL's default collations do not support case-sensitive " - + "string comparisons. If you really want case-sensitive " - + "usernames you will need to configure your database " - + "appropriately."); - - // Return the configured setting. - return caseSensitiveUsernames; - } } 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 5a3d4002b..f2f5e45cd 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 @@ -28,12 +28,19 @@ import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.auth.sqlserver.conf.SQLServerDriver; import org.apache.guacamole.auth.sqlserver.conf.SQLServerEnvironment; import org.mybatis.guice.datasource.helper.JdbcHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Guice module which configures SQLServer-specific injections. */ public class SQLServerAuthenticationProviderModule implements Module { + /** + * Logger for this class. + */ + private static final Logger LOGGER = LoggerFactory.getLogger(SQLServerAuthenticationProviderModule.class); + /** * MyBatis-specific configuration properties. */ @@ -88,6 +95,15 @@ public class SQLServerAuthenticationProviderModule implements Module { // Capture which driver to use for the connection. this.sqlServerDriver = environment.getSQLServerDriver(); + + // Check for case-sensitivity and warn admin. + if (environment.getCaseSensitiveUsernames()) + LOGGER.warn("The SQL Server module is currently configured to support " + + "case-sensitive username comparisons, however, the default " + + "collations for SQL Server databases do not support " + + "case-sensitive string comparisons. If you want usernames " + + "within Guacamole to be treated as case-sensitive, further " + + "database configuration may be required."); } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java index 9e2d540bb..68568d658 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java @@ -338,15 +338,6 @@ public class SQLServerEnvironment extends JDBCEnvironment { super.getCaseSensitiveUsernames() ); - // If property has been set to true, warn the admin. - if (caseSensitiveUsernames) - logger.warn("You have configured this extension for case-sensitive " - + "username comparisons, however, the default collations " - + "for SQL Server databases do not support case-sensitive " - + "string comparisons. Further database configuration may " - + "be required in order for case-sensitive username " - + "comparisons to function correctly."); - // Return as configured return caseSensitiveUsernames;