diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java index 26c41b32c..0b5b6488f 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java @@ -32,7 +32,7 @@ import java.util.HashMap; import java.util.Map; import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.net.auth.UsernamePassword; -import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties; +import net.sourceforge.guacamole.properties.FileGuacamoleProperty; import net.sourceforge.guacamole.properties.GuacamoleProperties; import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; import org.slf4j.Logger; @@ -44,6 +44,13 @@ import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; +/** + * Authenticates users against a static list of username/password pairs. + * Each username/password may be associated with exactly one configuration. + * This list is stored in an XML file which is reread if modified. + * + * @author Michael Jumper + */ public class BasicFileAuthenticationProvider implements AuthenticationProvider { private Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class); @@ -51,10 +58,20 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider mapping; + /** + * The filename of the XML file to read the user mapping from. + */ + public static final FileGuacamoleProperty BASIC_USER_MAPPING = new FileGuacamoleProperty() { + + @Override + public String getName() { return "basic-user-mapping"; } + + }; + private File getUserMappingFile() throws GuacamoleException { // Get user mapping file - return GuacamoleProperties.getProperty(BasicGuacamoleProperties.BASIC_USER_MAPPING); + return GuacamoleProperties.getProperty(BASIC_USER_MAPPING); } diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java index b1376f2db..e1b5d292c 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java @@ -33,6 +33,12 @@ import net.sourceforge.guacamole.servlet.GuacamoleHTTPTunnelServlet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * Connects users to a tunnel associated with the authorized configuration + * having the given ID. + * + * @author Michael Jumper + */ public class BasicGuacamoleTunnelServlet extends GuacamoleHTTPTunnelServlet { private Logger logger = LoggerFactory.getLogger(BasicGuacamoleTunnelServlet.class); diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java index 34a72e798..6fe2f106e 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java @@ -34,6 +34,17 @@ import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * Retrieves the authorized configurations associated with a given + * username/password pair using the authentication provider defined in + * guacamole.properties. + * + * All authorized configurations will be stored in the current HttpSession. + * + * Success and failure are logged. + * + * @author Michael Jumper + */ public class BasicLogin extends HttpServlet { private Logger logger = LoggerFactory.getLogger(BasicLogin.class); diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogout.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogout.java index e978a0e5d..df1447d33 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogout.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogout.java @@ -24,6 +24,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +/** + * Logs out the current user by invalidating the associated HttpSession and + * redirecting the user to the login page. + * + * @author Michael Jumper + */ public class BasicLogout extends HttpServlet { @Override diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java index fc45474e3..dcbc446e6 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/ConfigurationList.java @@ -27,13 +27,15 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +/** + * Simple HttpServlet which outputs XML containing a list of all authorized + * configurations for the current user. + * + * @author Michael Jumper + */ public class ConfigurationList extends HttpServlet { - private Logger logger = LoggerFactory.getLogger(ConfigurationList.class); - @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException { diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java index b1a398a69..75540e1f4 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/GuacamoleClassLoader.java @@ -1,6 +1,42 @@ package net.sourceforge.guacamole.net.basic; +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is guacamole-common. + * + * The Initial Developer of the Original Code is + * Michael Jumper. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + import java.io.File; import java.io.FilenameFilter; import java.net.MalformedURLException; @@ -12,24 +48,12 @@ import net.sourceforge.guacamole.GuacamoleException; import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties; import net.sourceforge.guacamole.properties.GuacamoleProperties; -/* - * Guacamole - Clientless Remote Desktop - * Copyright (C) 2010 Michael Jumper - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . +/** + * A ClassLoader implementation which finds classes within a configurable + * directory. This directory is set within guacamole.properties. + * + * @author Michael Jumper */ - public class GuacamoleClassLoader extends ClassLoader { private URLClassLoader classLoader = null; @@ -101,6 +125,14 @@ public class GuacamoleClassLoader extends ClassLoader { } + /** + * Returns an instance of a GuacamoleClassLoader which finds classes + * within the directory configured in guacamole.properties. + * + * @return An instance of a GuacamoleClassLoader. + * @throws GuacamoleException If no instance could be returned due to an + * error. + */ public static GuacamoleClassLoader getInstance() throws GuacamoleException { // If instance could not be created, rethrow original exception diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/AuthenticationProviderProperty.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/AuthenticationProviderProperty.java index 90e982e32..cb1eb03a7 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/AuthenticationProviderProperty.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/AuthenticationProviderProperty.java @@ -24,6 +24,12 @@ import net.sourceforge.guacamole.net.auth.AuthenticationProvider; import net.sourceforge.guacamole.net.basic.GuacamoleClassLoader; import net.sourceforge.guacamole.properties.GuacamoleProperty; +/** + * A GuacamoleProperty whose value is the name of a class to use to + * authenticate users. This class must implement AuthenticationProvider. + * + * @author Michael Jumper + */ public abstract class AuthenticationProviderProperty implements GuacamoleProperty { @Override diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/BasicGuacamoleProperties.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/BasicGuacamoleProperties.java index cb9430e96..4110b4606 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/BasicGuacamoleProperties.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/properties/BasicGuacamoleProperties.java @@ -1,8 +1,6 @@ package net.sourceforge.guacamole.net.basic.properties; -import net.sourceforge.guacamole.properties.FileGuacamoleProperty; - /* * Guacamole - Clientless Remote Desktop * Copyright (C) 2010 Michael Jumper @@ -21,17 +19,24 @@ import net.sourceforge.guacamole.properties.FileGuacamoleProperty; * along with this program. If not, see . */ +import net.sourceforge.guacamole.properties.FileGuacamoleProperty; + +/** + * Properties used by the default Guacamole web application. + * + * @author Michael Jumper + */ public class BasicGuacamoleProperties { + /** + * This class should not be instantiated. + */ private BasicGuacamoleProperties() {} - public static final FileGuacamoleProperty BASIC_USER_MAPPING = new FileGuacamoleProperty() { - - @Override - public String getName() { return "basic-user-mapping"; } - - }; - + /** + * The authentication provider to user when retrieving the authorized + * configurations of a user. + */ public static final AuthenticationProviderProperty AUTH_PROVIDER = new AuthenticationProviderProperty() { @Override @@ -39,6 +44,9 @@ public class BasicGuacamoleProperties { }; + /** + * The directory to search for authentication provider classes. + */ public static final FileGuacamoleProperty LIB_DIRECTORY = new FileGuacamoleProperty() { @Override