mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 17:13:21 +00:00 
			
		
		
		
	Require "enable-websocket" property to be set to "true" before enabling WebSocket support.
This commit is contained in:
		| @@ -25,6 +25,8 @@ import javax.servlet.ServletContext; | ||||
| import javax.servlet.ServletContextEvent; | ||||
| import javax.servlet.ServletContextListener; | ||||
| import org.glyptodon.guacamole.GuacamoleException; | ||||
| import org.glyptodon.guacamole.properties.BooleanGuacamoleProperty; | ||||
| import org.glyptodon.guacamole.properties.GuacamoleProperties; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
|  | ||||
| @@ -36,6 +38,17 @@ import org.slf4j.LoggerFactory; | ||||
|  * Note that because Guacamole depends on the Servlet 2.5 API, and 3.0 may | ||||
|  * not be available or needed if WebSocket is not desired, the 3.0 API is | ||||
|  * detected and invoked dynamically via reflection. | ||||
|  *  | ||||
|  * Tests have shown that while WebSocket is negligibly more responsive than | ||||
|  * Guacamole's native HTTP tunnel, downstream performance is not yet a match. | ||||
|  * This may be because browser WebSocket implementations are not optimized for | ||||
|  * throughput, or it may be because servlet container WebSocket implementations | ||||
|  * are in their infancy, or it may be that OUR WebSocket-backed tunnel | ||||
|  * implementations are not efficient. Because of this, WebSocket support is | ||||
|  * disabled by default. To enable it, add the following property to | ||||
|  * your guacamole.properties: | ||||
|  *  | ||||
|  *     enable-websocket: true | ||||
|  * | ||||
|  * @author Michael Jumper | ||||
|  */ | ||||
| @@ -46,6 +59,16 @@ public class WebSocketSupportLoader implements ServletContextListener { | ||||
|      */ | ||||
|     private Logger logger = LoggerFactory.getLogger(WebSocketSupportLoader.class); | ||||
|  | ||||
|     private static final BooleanGuacamoleProperty ENABLE_WEBSOCKET = | ||||
|             new BooleanGuacamoleProperty() { | ||||
|  | ||||
|         @Override | ||||
|         public String getName() { | ||||
|             return "enable-websocket"; | ||||
|         } | ||||
|  | ||||
|     }; | ||||
|      | ||||
|     /** | ||||
|      * Classname of the Jetty-specific WebSocket tunnel implementation. | ||||
|      */ | ||||
| @@ -108,10 +131,10 @@ public class WebSocketSupportLoader implements ServletContextListener { | ||||
|  | ||||
|         // If no such servlet class, WebSocket support not present | ||||
|         catch (ClassNotFoundException e) { | ||||
|             logger.info("WebSocket support not found.", e); | ||||
|             logger.info("WebSocket support not found."); | ||||
|         } | ||||
|         catch (NoClassDefFoundError e) { | ||||
|             logger.info("WebSocket support not found.", e); | ||||
|             logger.info("WebSocket support not found."); | ||||
|         } | ||||
|  | ||||
|         // Log all GuacamoleExceptions | ||||
| @@ -131,6 +154,19 @@ public class WebSocketSupportLoader implements ServletContextListener { | ||||
|     @Override | ||||
|     public void contextInitialized(ServletContextEvent sce) { | ||||
|  | ||||
|         try { | ||||
|  | ||||
|             // Stop if WebSocket not explicitly enabled. | ||||
|             if (!GuacamoleProperties.getProperty(ENABLE_WEBSOCKET, false)) { | ||||
|                 logger.info("WebSocket support not enabled."); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|         } | ||||
|         catch (GuacamoleException e) { | ||||
|             logger.error("Error parsing enable-websocket property.", e); | ||||
|         } | ||||
|          | ||||
|         // Try to load websocket support for Jetty | ||||
|         logger.info("Attempting to load Jetty-specific WebSocket support..."); | ||||
|         if (loadWebSocketTunnel(sce.getServletContext(), JETTY_WEBSOCKET)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user