mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	Merge branch 'master' of git://github.com/karatheodory/guacamole-client into karatheodory-master
Conflicts: guacamole/src/main/java/org/glyptodon/guacamole/net/basic/TunnelRequestService.java
This commit is contained in:
		| @@ -148,33 +148,13 @@ public class TunnelRequestService { | ||||
|  | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Creates a new tunnel using the parameters and credentials present in | ||||
|      * the given request. | ||||
|      *  | ||||
|      * @param request The request describing the tunnel to create. | ||||
|      * @return The created tunnel, or null if the tunnel could not be created. | ||||
|      * @throws GuacamoleException If an error occurs while creating the tunnel. | ||||
|      * Reads and returns client information provided by the {@code request} parameter. | ||||
|      * | ||||
|      * @param request The request describing tunnel to create. | ||||
|      * @return GuacamoleClientInformation Object containing information about the client sending the tunnel request. | ||||
|      */ | ||||
|     public GuacamoleTunnel createTunnel(TunnelRequest request) | ||||
|             throws GuacamoleException { | ||||
|  | ||||
|         // Get auth token and session | ||||
|         final String authToken = request.getParameter("authToken"); | ||||
|         GuacamoleSession session = authenticationService.getGuacamoleSession(authToken); | ||||
|  | ||||
|         // Get ID of connection | ||||
|         String id = request.getParameter("id"); | ||||
|         TunnelRequest.IdentifierType id_type = TunnelRequest.IdentifierType.getType(id); | ||||
|  | ||||
|         // Do not continue if unable to determine type | ||||
|         if (id_type == null) | ||||
|             throw new GuacamoleClientException("Illegal identifier - unknown type."); | ||||
|  | ||||
|         // Remove prefix | ||||
|         id = id.substring(id_type.PREFIX.length()); | ||||
|  | ||||
|     protected GuacamoleClientInformation getClientInformation(TunnelRequest request) { | ||||
|         // Get client information | ||||
|         GuacamoleClientInformation info = new GuacamoleClientInformation(); | ||||
|  | ||||
| @@ -203,6 +183,32 @@ public class TunnelRequestService { | ||||
|         if (video_mimetypes != null) | ||||
|             info.getVideoMimetypes().addAll(video_mimetypes); | ||||
|  | ||||
|         return info; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Creates a new socket using client information specified in the {@code info} parameter, | ||||
|      * connection information from {@code request} and credentials from the {@code session} parameter. | ||||
|      * | ||||
|      * @param request The request describing tunnel to create. | ||||
|      * @param session Current guacamole session. | ||||
|      * @param info Guacamole client information. | ||||
|      * @return Socket connected using the provided settings. | ||||
|      * @throws GuacamoleException If an error occurs while creating the socket. | ||||
|      */ | ||||
|     protected GuacamoleTunnel createConnectedTunnel(TunnelRequest request, GuacamoleSession session, | ||||
|                                                     GuacamoleClientInformation info) throws GuacamoleException { | ||||
|         // Get ID of connection | ||||
|         String id = request.getParameter("id"); | ||||
|         TunnelRequest.IdentifierType id_type = TunnelRequest.IdentifierType.getType(id); | ||||
|  | ||||
|         // Do not continue if unable to determine type | ||||
|         if (id_type == null) | ||||
|             throw new GuacamoleClientException("Illegal identifier - unknown type."); | ||||
|  | ||||
|         // Remove prefix | ||||
|         id = id.substring(id_type.PREFIX.length()); | ||||
|  | ||||
|         // Create connected socket from identifier | ||||
|         GuacamoleTunnel tunnel; | ||||
|         switch (id_type) { | ||||
| @@ -253,8 +259,23 @@ public class TunnelRequestService { | ||||
|  | ||||
|         } | ||||
|  | ||||
|         // Track tunnel open/close | ||||
|         GuacamoleTunnel monitoredTunnel = new DelegatingGuacamoleTunnel(tunnel) { | ||||
|         return tunnel; | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Creates and returns a tunnel using the specified guacd socket. | ||||
|      * The tunnel is associated with a session identified | ||||
|      * by the {@code authToken} parameter. | ||||
|      * | ||||
|      * @param tunnel The connected tunnel. | ||||
|      * @param authToken Current authorization token. | ||||
|      * @return The created tunnel. | ||||
|      */ | ||||
|     protected GuacamoleTunnel createAssociatedTunnel(GuacamoleTunnel tunnel, final String authToken) { | ||||
|  | ||||
|         // Associate socket with tunnel | ||||
|         return new DelegatingGuacamoleTunnel(tunnel) { | ||||
|  | ||||
|             @Override | ||||
|             public GuacamoleReader acquireReader() { | ||||
| @@ -277,7 +298,7 @@ public class TunnelRequestService { | ||||
|  | ||||
|                 // Pass through by default. | ||||
|                 return super.acquireReader(); | ||||
|                  | ||||
|  | ||||
|             } | ||||
|  | ||||
|             @Override | ||||
| @@ -299,7 +320,7 @@ public class TunnelRequestService { | ||||
|                     throw new GuacamoleException("Tunnel close canceled by listener."); | ||||
|  | ||||
|                 session.removeTunnel(getUUID().toString()); | ||||
|                  | ||||
|  | ||||
|                 // Close if no exception due to listener | ||||
|                 super.close(); | ||||
|  | ||||
| @@ -307,6 +328,33 @@ public class TunnelRequestService { | ||||
|  | ||||
|         }; | ||||
|  | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * Creates a new tunnel using the parameters and credentials present in | ||||
|      * the given request. | ||||
|      *  | ||||
|      * @param request The request describing the tunnel to create. | ||||
|      * @return The created tunnel, or null if the tunnel could not be created. | ||||
|      * @throws GuacamoleException If an error occurs while creating the tunnel. | ||||
|      */ | ||||
|     public GuacamoleTunnel createTunnel(TunnelRequest request) | ||||
|             throws GuacamoleException { | ||||
|  | ||||
|         // Get auth token and session | ||||
|         final String authToken = request.getParameter("authToken"); | ||||
|         final GuacamoleSession session = authenticationService.getGuacamoleSession(authToken); | ||||
|  | ||||
|         // Get client information | ||||
|         final GuacamoleClientInformation info = getClientInformation(request); | ||||
|  | ||||
|         // Create connected tunnel from request  | ||||
|         final GuacamoleTunnel tunnel = createConnectedTunnel(request, session, info); | ||||
|  | ||||
|         // Associate tunnel with session | ||||
|         final GuacamoleTunnel monitoredTunnel = createAssociatedTunnel(tunnel, authToken); | ||||
|  | ||||
|         // Notify listeners about connection | ||||
|         if (!notifyConnect(session, monitoredTunnel)) { | ||||
|             logger.info("Successful connection canceled by hook."); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user