mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	Merge branch 'unstable' of ssh://guacamole.git.sourceforge.net/gitroot/guacamole/guacamole into unstable
This commit is contained in:
		| @@ -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<UsernamePassword> { | ||||
|  | ||||
|     private Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class); | ||||
| @@ -51,10 +58,20 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider<U | ||||
|     private long mappingTime; | ||||
|     private Map<String, AuthInfo> 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); | ||||
|  | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -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); | ||||
| @@ -51,7 +57,7 @@ public class BasicGuacamoleTunnelServlet extends GuacamoleHTTPTunnelServlet { | ||||
|  | ||||
|         // If no configs in session, not authorized | ||||
|         if (configs == null) | ||||
|             throw new GuacamoleException("No authorized configurations."); | ||||
|             throw new GuacamoleException("Cannot connect - user not logged in."); | ||||
|  | ||||
|         // Get authorized config | ||||
|         GuacamoleConfiguration config = configs.get(id); | ||||
|   | ||||
| @@ -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); | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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 { | ||||
|   | ||||
| @@ -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 <http://www.gnu.org/licenses/>. | ||||
| /** | ||||
|  * 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; | ||||
| @@ -106,6 +130,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 | ||||
|   | ||||
| @@ -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<AuthenticationProvider> { | ||||
|  | ||||
|     @Override | ||||
|   | ||||
| @@ -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 <http://www.gnu.org/licenses/>. | ||||
|  */ | ||||
|  | ||||
| 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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user