mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	GUACAMOLE-957: Add support for configuring the general network timeout for LDAP.
This commit is contained in:
		| @@ -197,6 +197,11 @@ public class ConnectedLDAPConfiguration implements LDAPConfiguration, AutoClosea | ||||
|         return config.getOperationTimeout(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int getNetworkTimeout() throws GuacamoleException { | ||||
|         return config.getNetworkTimeout(); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public List<String> getAttributes() throws GuacamoleException { | ||||
|         return config.getAttributes(); | ||||
|   | ||||
| @@ -67,6 +67,10 @@ public class LDAPConnectionService { | ||||
|      *     The encryption method that should be used to communicate with the | ||||
|      *     LDAP server. | ||||
|      * | ||||
|      * @param timeout | ||||
|      *     The maximum number of milliseconds to wait for a response from the | ||||
|      *     LDAP server. | ||||
|      * | ||||
|      * @return | ||||
|      *     A new instance of LdapNetworkConnection which uses the given | ||||
|      *     encryption method to communicate with the LDAP server at the given | ||||
| @@ -77,11 +81,13 @@ public class LDAPConnectionService { | ||||
|      *     bug). | ||||
|      */ | ||||
|     private LdapNetworkConnection createLDAPConnection(String host, int port, | ||||
|             EncryptionMethod encryptionMethod) throws GuacamoleException { | ||||
|             EncryptionMethod encryptionMethod, int timeout) | ||||
|             throws GuacamoleException { | ||||
|  | ||||
|         LdapConnectionConfig config = new LdapConnectionConfig(); | ||||
|         config.setLdapHost(host); | ||||
|         config.setLdapPort(port); | ||||
|         config.setTimeout(timeout); | ||||
|  | ||||
|         // Map encryption method to proper connection and socket factory | ||||
|         switch (encryptionMethod) { | ||||
| @@ -140,7 +146,8 @@ public class LDAPConnectionService { | ||||
|         return createLDAPConnection( | ||||
|                 config.getServerHostname(), | ||||
|                 config.getServerPort(), | ||||
|                 config.getEncryptionMethod()); | ||||
|                 config.getEncryptionMethod(), | ||||
|                 config.getNetworkTimeout()); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -209,7 +216,8 @@ public class LDAPConnectionService { | ||||
|         if (port < 1) | ||||
|             port = encryptionMethod.DEFAULT_PORT; | ||||
|  | ||||
|         return createLDAPConnection(host, port, encryptionMethod); | ||||
|         return createLDAPConnection(host, port, encryptionMethod, | ||||
|                 config.getNetworkTimeout()); | ||||
|  | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -125,6 +125,11 @@ public class DefaultLDAPConfiguration implements LDAPConfiguration { | ||||
|         return 30; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int getNetworkTimeout() { | ||||
|         return 30000; | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public List<String> getAttributes() { | ||||
|         return Collections.<String>emptyList(); | ||||
|   | ||||
| @@ -193,6 +193,14 @@ public class EnvironmentLDAPConfiguration implements LDAPConfiguration { | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int getNetworkTimeout() throws GuacamoleException { | ||||
|         return environment.getProperty( | ||||
|             LDAPGuacamoleProperties.LDAP_NETWORK_TIMEOUT, | ||||
|             DEFAULT.getNetworkTimeout() | ||||
|         ); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public List<String> getAttributes() throws GuacamoleException { | ||||
|         return environment.getProperty( | ||||
|   | ||||
| @@ -165,6 +165,13 @@ public class JacksonLDAPConfiguration implements LDAPConfiguration { | ||||
|     @JsonProperty("operation-timeout") | ||||
|     private Integer operationTimeout; | ||||
|  | ||||
|     /** | ||||
|      * The raw YAML value of {@link LDAPGuacamoleProperties#LDAP_NETWORK_TIMEOUT}. | ||||
|      * If not set within the YAML, this will be null. | ||||
|      */ | ||||
|     @JsonProperty("network-timeout") | ||||
|     private Integer networkTimeout; | ||||
|  | ||||
|     /** | ||||
|      * The raw YAML value of {@link LDAPGuacamoleProperties#LDAP_USER_ATTRIBUTES}. | ||||
|      * If not set within the YAML, this will be null. | ||||
| @@ -364,6 +371,11 @@ public class JacksonLDAPConfiguration implements LDAPConfiguration { | ||||
|         return withDefault(operationTimeout, defaultConfig.getOperationTimeout()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public int getNetworkTimeout() throws GuacamoleException { | ||||
|         return withDefault(networkTimeout, defaultConfig.getNetworkTimeout()); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public List<String> getAttributes() throws GuacamoleException { | ||||
|         return withDefault(userAttributes, defaultConfig.getAttributes()); | ||||
|   | ||||
| @@ -255,6 +255,19 @@ public interface LDAPConfiguration { | ||||
|      */ | ||||
|     ExprNode getGroupSearchFilter() throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the maximum number of milliseconds to wait for a response when | ||||
|      * communicating with the LDAP server. | ||||
|      * | ||||
|      * @return | ||||
|      *     The maximum number of milliseconds to wait for responses from the | ||||
|      *     LDAP server. | ||||
|      * | ||||
|      * @throws GuacamoleException | ||||
|      *     If the LDAP network timeout cannot be retrieved. | ||||
|      */ | ||||
|     int getNetworkTimeout() throws GuacamoleException; | ||||
|  | ||||
|     /** | ||||
|      * Returns the maximum number of seconds to wait for LDAP operations. | ||||
|      * | ||||
|   | ||||
| @@ -254,6 +254,17 @@ public class LDAPGuacamoleProperties { | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Number of milliseconds to wait for responses from the LDAP server. | ||||
|      */ | ||||
|     public static final IntegerGuacamoleProperty LDAP_NETWORK_TIMEOUT = | ||||
|             new IntegerGuacamoleProperty() { | ||||
|  | ||||
|         @Override | ||||
|         public String getName() { return "ldap-network-timeout"; } | ||||
|  | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|      * Custom attribute or attributes to query from Guacamole user's record in | ||||
|      * the LDAP directory. | ||||
|   | ||||
		Reference in New Issue
	
	Block a user