Github user mike-jumper commented on a diff in the pull request:
https://github.com/apache/incubator-guacamole-client/pull/202#discussion_r149183803
--- Diff:
extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java
---
@@ -129,62 +130,79 @@
Map<String, Connection> connections = new HashMap<String,
Connection>();
while (results.hasMore()) {
- LDAPEntry entry = results.next();
+ try {
- // Get common name (CN)
- LDAPAttribute cn = entry.getAttribute("cn");
- if (cn == null) {
- logger.warn("guacConfigGroup is missing a cn.");
- continue;
- }
+ LDAPEntry entry = results.next();
- // Get associated protocol
- LDAPAttribute protocol =
entry.getAttribute("guacConfigProtocol");
- if (protocol == null) {
- logger.warn("guacConfigGroup \"{}\" is missing the "
- + "required \"guacConfigProtocol\"
attribute.",
- cn.getStringValue());
- continue;
- }
+ // Get common name (CN)
+ LDAPAttribute cn = entry.getAttribute("cn");
+ if (cn == null) {
+ logger.warn("guacConfigGroup is missing a cn.");
+ continue;
+ }
+
+ // Get associated protocol
+ LDAPAttribute protocol =
entry.getAttribute("guacConfigProtocol");
+ if (protocol == null) {
+ logger.warn("guacConfigGroup \"{}\" is missing the
"
+ + "required \"guacConfigProtocol\"
attribute.",
+ cn.getStringValue());
+ continue;
+ }
- // Set protocol
- GuacamoleConfiguration config = new
GuacamoleConfiguration();
- config.setProtocol(protocol.getStringValue());
+ // Set protocol
+ GuacamoleConfiguration config = new
GuacamoleConfiguration();
+ config.setProtocol(protocol.getStringValue());
- // Get parameters, if any
- LDAPAttribute parameterAttribute =
entry.getAttribute("guacConfigParameter");
- if (parameterAttribute != null) {
+ // Get parameters, if any
+ LDAPAttribute parameterAttribute =
entry.getAttribute("guacConfigParameter");
+ if (parameterAttribute != null) {
- // For each parameter
- Enumeration<?> parameters =
parameterAttribute.getStringValues();
- while (parameters.hasMoreElements()) {
+ // For each parameter
+ Enumeration<?> parameters =
parameterAttribute.getStringValues();
+ while (parameters.hasMoreElements()) {
- String parameter = (String)
parameters.nextElement();
+ String parameter = (String)
parameters.nextElement();
- // Parse parameter
- int equals = parameter.indexOf('=');
- if (equals != -1) {
+ // Parse parameter
+ int equals = parameter.indexOf('=');
+ if (equals != -1) {
- // Parse name
- String name = parameter.substring(0, equals);
- String value = parameter.substring(equals+1);
+ // Parse name
+ String name = parameter.substring(0,
equals);
+ String value =
parameter.substring(equals+1);
- config.setParameter(name, value);
+ config.setParameter(name, value);
+
+ }
}
}
- }
+ // Filter the configuration, substituting all defined
tokens
+ tokenFilter.filterValues(config.getParameters());
- // Filter the configuration, substituting all defined
tokens
- tokenFilter.filterValues(config.getParameters());
+ // Store connection using cn for both identifier and
name
+ String name = cn.getStringValue();
+ Connection connection = new SimpleConnection(name,
name, config);
+
connection.setParentIdentifier(LDAPAuthenticationProvider.ROOT_CONNECTION_GROUP);
+ connections.put(name, connection);
- // Store connection using cn for both identifier and name
- String name = cn.getStringValue();
- Connection connection = new SimpleConnection(name, name,
config);
-
connection.setParentIdentifier(LDAPAuthenticationProvider.ROOT_CONNECTION_GROUP);
- connections.put(name, connection);
+ }
+
+ // Deal with issues following LDAP referrals
+ catch (LDAPReferralException e) {
+ if (confService.getFollowReferrals()) {
+ logger.error("Could not follow referral.",
e.getFailedReferral());
--- End diff --
If the intent is to include `e.getFailedReferral()` within the logged
message, then the `{}` string must be present in the message at the location
the value should be inserted.
---