diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/package-info.java b/guacamole/src/main/java/org/apache/guacamole/auth/basic/package-info.java deleted file mode 100644 index d5f8fb7e4..000000000 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/package-info.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2013 Glyptodon LLC - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/** - * Classes related to parsing the user-mapping.xml file. - */ -package org.apache.guacamole.auth.basic; - diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/Authorization.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/Authorization.java similarity index 99% rename from guacamole/src/main/java/org/apache/guacamole/auth/Authorization.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/Authorization.java index 9ff1c791e..044760c22 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/Authorization.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/Authorization.java @@ -20,7 +20,7 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth; +package org.apache.guacamole.auth.file; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/AuthorizeTagHandler.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/AuthorizeTagHandler.java similarity index 97% rename from guacamole/src/main/java/org/apache/guacamole/auth/basic/AuthorizeTagHandler.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/AuthorizeTagHandler.java index bdd9c9a46..8d3c55eaa 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/AuthorizeTagHandler.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/AuthorizeTagHandler.java @@ -20,10 +20,8 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth.basic; +package org.apache.guacamole.auth.file; -import org.apache.guacamole.auth.Authorization; -import org.apache.guacamole.auth.UserMapping; import org.apache.guacamole.xml.TagHandler; import org.apache.guacamole.protocol.GuacamoleConfiguration; import org.xml.sax.Attributes; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/ConnectionTagHandler.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/ConnectionTagHandler.java similarity index 97% rename from guacamole/src/main/java/org/apache/guacamole/auth/basic/ConnectionTagHandler.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/ConnectionTagHandler.java index f9acabb0a..5f069a2d6 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/ConnectionTagHandler.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/ConnectionTagHandler.java @@ -20,9 +20,8 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth.basic; +package org.apache.guacamole.auth.file; -import org.apache.guacamole.auth.Authorization; import org.apache.guacamole.xml.TagHandler; import org.apache.guacamole.protocol.GuacamoleConfiguration; import org.xml.sax.Attributes; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/BasicFileAuthenticationProvider.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java similarity index 86% rename from guacamole/src/main/java/org/apache/guacamole/auth/basic/BasicFileAuthenticationProvider.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java index be3fd1a35..75230fd82 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/BasicFileAuthenticationProvider.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/FileAuthenticationProvider.java @@ -20,7 +20,7 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth.basic; +package org.apache.guacamole.auth.file; import java.io.BufferedInputStream; import java.io.File; @@ -29,13 +29,10 @@ import java.io.IOException; import java.io.InputStream; import java.util.Map; import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.Environment; import org.apache.guacamole.environment.LocalEnvironment; import org.apache.guacamole.net.auth.Credentials; import org.apache.guacamole.net.auth.simple.SimpleAuthenticationProvider; -import org.apache.guacamole.auth.Authorization; -import org.apache.guacamole.auth.UserMapping; import org.apache.guacamole.xml.DocumentHandler; import org.apache.guacamole.properties.FileGuacamoleProperty; import org.apache.guacamole.protocol.GuacamoleConfiguration; @@ -53,12 +50,12 @@ import org.xml.sax.helpers.XMLReaderFactory; * * @author Michael Jumper, Michal Kotas */ -public class BasicFileAuthenticationProvider extends SimpleAuthenticationProvider { +public class FileAuthenticationProvider extends SimpleAuthenticationProvider { /** * Logger for this class. */ - private final Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class); + private final Logger logger = LoggerFactory.getLogger(FileAuthenticationProvider.class); /** * The time the user mapping file was last modified. If the file has never @@ -78,8 +75,12 @@ public class BasicFileAuthenticationProvider extends SimpleAuthenticationProvide private final Environment environment; /** - * The XML file to read the user mapping from. + * The XML file to read the user mapping from. This property has been + * deprecated, as the name "basic" is ridiculous, and providing for + * configurable user-mapping.xml locations is unnecessary complexity. Use + * GUACAMOLE_HOME/user-mapping.xml instead. */ + @Deprecated public static final FileGuacamoleProperty BASIC_USER_MAPPING = new FileGuacamoleProperty() { @Override @@ -88,10 +89,9 @@ public class BasicFileAuthenticationProvider extends SimpleAuthenticationProvide }; /** - * The default filename to use for the user mapping, if not defined within - * guacamole.properties. + * The filename to use for the user mapping. */ - public static final String DEFAULT_USER_MAPPING = "user-mapping.xml"; + public static final String USER_MAPPING_FILENAME = "user-mapping.xml"; /** * Creates a new BasicFileAuthenticationProvider that authenticates users @@ -101,7 +101,7 @@ public class BasicFileAuthenticationProvider extends SimpleAuthenticationProvide * If a required property is missing, or an error occurs while parsing * a property. */ - public BasicFileAuthenticationProvider() throws GuacamoleException { + public FileAuthenticationProvider() throws GuacamoleException { environment = new LocalEnvironment(); } @@ -120,14 +120,22 @@ public class BasicFileAuthenticationProvider extends SimpleAuthenticationProvide * A UserMapping containing all authorization data within the user * mapping XML file, or null if the file cannot be found/parsed. */ + @SuppressWarnings("deprecation") // We must continue to use the "basic-user-mapping" property until it is truly no longer supported private UserMapping getUserMapping() { // Get user mapping file, defaulting to GUACAMOLE_HOME/user-mapping.xml File userMappingFile; try { + + // Continue supporting deprecated property, but warn in the logs userMappingFile = environment.getProperty(BASIC_USER_MAPPING); + if (userMappingFile != null) + logger.warn("The \"basic-user-mapping\" property is deprecated. Please use the \"GUACAMOLE_HOME/user-mapping.xml\" file instead."); + + // Read user mapping from GUACAMOLE_HOME if (userMappingFile == null) - userMappingFile = new File(environment.getGuacamoleHome(), DEFAULT_USER_MAPPING); + userMappingFile = new File(environment.getGuacamoleHome(), USER_MAPPING_FILENAME); + } // Abort if property cannot be parsed diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/ParamTagHandler.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/ParamTagHandler.java similarity index 98% rename from guacamole/src/main/java/org/apache/guacamole/auth/basic/ParamTagHandler.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/ParamTagHandler.java index 5d3d804bb..8fee87e45 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/ParamTagHandler.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/ParamTagHandler.java @@ -20,7 +20,7 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth.basic; +package org.apache.guacamole.auth.file; import org.apache.guacamole.xml.TagHandler; import org.apache.guacamole.protocol.GuacamoleConfiguration; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/ProtocolTagHandler.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/ProtocolTagHandler.java similarity index 98% rename from guacamole/src/main/java/org/apache/guacamole/auth/basic/ProtocolTagHandler.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/ProtocolTagHandler.java index 3fc5f12da..8f1aecd35 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/ProtocolTagHandler.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/ProtocolTagHandler.java @@ -20,7 +20,7 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth.basic; +package org.apache.guacamole.auth.file; import org.apache.guacamole.xml.TagHandler; import org.apache.guacamole.protocol.GuacamoleConfiguration; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/UserMapping.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/UserMapping.java similarity index 98% rename from guacamole/src/main/java/org/apache/guacamole/auth/UserMapping.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/UserMapping.java index 7f86b1e0c..b857d19c5 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/UserMapping.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/UserMapping.java @@ -20,7 +20,7 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth; +package org.apache.guacamole.auth.file; import java.util.HashMap; import java.util.Map; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/basic/UserMappingTagHandler.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/UserMappingTagHandler.java similarity index 96% rename from guacamole/src/main/java/org/apache/guacamole/auth/basic/UserMappingTagHandler.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/UserMappingTagHandler.java index f0bb6fafb..a70723200 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/basic/UserMappingTagHandler.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/UserMappingTagHandler.java @@ -20,9 +20,8 @@ * THE SOFTWARE. */ -package org.apache.guacamole.auth.basic; +package org.apache.guacamole.auth.file; -import org.apache.guacamole.auth.UserMapping; import org.apache.guacamole.xml.TagHandler; import org.xml.sax.Attributes; import org.xml.sax.SAXException; diff --git a/guacamole/src/main/java/org/apache/guacamole/auth/package-info.java b/guacamole/src/main/java/org/apache/guacamole/auth/file/package-info.java similarity index 90% rename from guacamole/src/main/java/org/apache/guacamole/auth/package-info.java rename to guacamole/src/main/java/org/apache/guacamole/auth/file/package-info.java index d1ac69e7d..72534a70c 100644 --- a/guacamole/src/main/java/org/apache/guacamole/auth/package-info.java +++ b/guacamole/src/main/java/org/apache/guacamole/auth/file/package-info.java @@ -21,8 +21,8 @@ */ /** - * Classes which drive the default, basic authentication of the Guacamole + * Classes which drive the default, file-based authentication of the Guacamole * web application. */ -package org.apache.guacamole.auth; +package org.apache.guacamole.auth.file; diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java b/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java index b81593c63..3823fbc6f 100644 --- a/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java +++ b/guacamole/src/main/java/org/apache/guacamole/extension/ExtensionModule.java @@ -32,7 +32,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; -import org.apache.guacamole.auth.basic.BasicFileAuthenticationProvider; +import org.apache.guacamole.auth.file.FileAuthenticationProvider; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleServerException; import org.apache.guacamole.environment.Environment; @@ -426,8 +426,8 @@ public class ExtensionModule extends ServletModule { // Load all extensions loadExtensions(javaScriptResources, cssResources); - // Always bind basic auth last - bindAuthenticationProvider(BasicFileAuthenticationProvider.class); + // Always bind default file-driven auth last + bindAuthenticationProvider(FileAuthenticationProvider.class); // Dynamically generate app.js and app.css from extensions serve("/app.js").with(new ResourceServlet(new SequenceResource(javaScriptResources)));