Github user mike-jumper commented on a diff in the pull request:
https://github.com/apache/incubator-guacamole-client/pull/182#discussion_r138401206
--- Diff:
extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/SQLServerEnvironment.java
---
@@ -0,0 +1,357 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.guacamole.auth.sqlserver;
+
+import org.apache.guacamole.GuacamoleException;
+import org.apache.guacamole.auth.jdbc.JDBCEnvironment;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.apache.guacamole.auth.jdbc.security.PasswordPolicy;
+
+/**
+ * A SQLServer-specific implementation of JDBCEnvironment provides database
+ * properties specifically for SQLServer.
+ */
+public class SQLServerEnvironment extends JDBCEnvironment {
+
+ /**
+ * Logger for this class.
+ */
+ private static final Logger logger =
LoggerFactory.getLogger(SQLServerEnvironment.class);
+
+ /**
+ * The default host to connect to, if SQLSERVER_HOSTNAME is not
specified.
+ */
+ private static final String DEFAULT_HOSTNAME = "localhost";
+
+ /**
+ * The default port to connect to, if SQLSERVER_PORT is not specified.
+ */
+ private static final int DEFAULT_PORT = 1433;
+
+ /**
+ * Whether a database user account is required by default for
authentication
+ * to succeed.
+ */
+ private static final boolean DEFAULT_USER_REQUIRED = true;
+
+ /**
+ * The default value for the maximum number of connections to be
+ * allowed to the Guacamole server overall.
+ */
+ private final int DEFAULT_ABSOLUTE_MAX_CONNECTIONS = 0;
+
+ /**
+ * The default value for the default maximum number of connections to
be
+ * allowed per user to any one connection. Note that, as long as the
+ * legacy "disallow duplicate" and "disallow simultaneous" properties
are
+ * still supported, these cannot be constants, as the legacy properties
+ * dictate the values that should be used in the absence of the correct
+ * properties.
+ */
+ private int DEFAULT_MAX_CONNECTIONS_PER_USER = 1;
+
+ /**
+ * The default value for the default maximum number of connections to
be
+ * allowed per user to any one connection group. Note that, as long as
the
+ * legacy "disallow duplicate" and "disallow simultaneous" properties
are
+ * still supported, these cannot be constants, as the legacy properties
+ * dictate the values that should be used in the absence of the correct
+ * properties.
+ */
+ private int DEFAULT_MAX_GROUP_CONNECTIONS_PER_USER = 1;
+
+ /**
+ * The default value for the default maximum number of connections to
be
+ * allowed to any one connection. Note that, as long as the legacy
+ * "disallow duplicate" and "disallow simultaneous" properties are
still
+ * supported, these cannot be constants, as the legacy properties
dictate
+ * the values that should be used in the absence of the correct
properties.
+ */
+ private int DEFAULT_MAX_CONNECTIONS = 0;
+
+ /**
+ * The default value for the default maximum number of connections to
be
+ * allowed to any one connection group. Note that, as long as the
legacy
+ * "disallow duplicate" and "disallow simultaneous" properties are
still
+ * supported, these cannot be constants, as the legacy properties
dictate
+ * the values that should be used in the absence of the correct
properties.
+ */
+ private int DEFAULT_MAX_GROUP_CONNECTIONS = 0;
+
+ /**
+ * The value for the sqlserver-driver property that triggers the use of
+ * the open source JTDS driver.
+ */
+ public final static String SQLSERVER_DRIVER_JTDS = "jtds";
+
+ /**
+ * The value for the sqlserver-driver property that triggers the use of
+ * the DataDirect JDBC driver.
+ */
+ public final static String SQLSERVER_DRIVER_DATADIRECT = "datadirect";
+
+ /**
+ * The value for the sqlserver-driver property that triggers the use of
+ * the older Microsoft JDBC driver.
+ */
+ public final static String SQLSERVER_DRIVER_MS = "microsoft";
+
+ /**
+ * The value for the sqlserver-driver property that triggers the use of
+ * the Microsoft JDBC driver. This is the default.
+ */
+ public final static String SQLSERVER_DRIVER_MS_2005 = "microsoft2005";
+
+ /**
+ * Constructs a new SQLServerEnvironment, providing access to
SQLServer-specific
+ * configuration options.
+ *
+ * @throws GuacamoleException
+ * If an error occurs while setting up the underlying
JDBCEnvironment
+ * or while parsing legacy SQLServer configuration options.
+ */
+ public SQLServerEnvironment() throws GuacamoleException {
+
+ // Init underlying JDBC environment
+ super();
+
+ // Read legacy concurrency-related property
+ Boolean disallowSimultaneous =
getProperty(SQLServerGuacamoleProperties.SQLSERVER_DISALLOW_SIMULTANEOUS_CONNECTIONS);
+ Boolean disallowDuplicate =
getProperty(SQLServerGuacamoleProperties.SQLSERVER_DISALLOW_DUPLICATE_CONNECTIONS);
+
+ // Legacy "simultaneous" property dictates only the maximum number
of
+ // connections per connection
+ if (disallowSimultaneous != null) {
+
+ // Translate legacy property
+ if (disallowSimultaneous) {
+ DEFAULT_MAX_CONNECTIONS = 1;
+ DEFAULT_MAX_GROUP_CONNECTIONS = 0;
+ }
+ else {
+ DEFAULT_MAX_CONNECTIONS = 0;
+ DEFAULT_MAX_GROUP_CONNECTIONS = 0;
+ }
+
+ // Warn of deprecation
+ logger.warn("The \"{}\" property is deprecated. Use \"{}\" and
\"{}\" instead.",
--- End diff --
The "disallow simultaneous connections", etc. properties continue to exist
in the MySQL and PostgreSQL auth (with deprecation warnings) because they were
at one time supported, and users are expected to migrate to the new properties
when possible. This doesn't make sense here, though, since all SQL Server
properties are new. If the properties shouldn't be used, they shouldn't be
added.
---