Commit 45ac9d20 authored by Gaston Dombiak's avatar Gaston Dombiak Committed by gato

When posixMode is false then wrap userDN between " if CN contains escaped characters. JM-695

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@4354 b35dd754-fafc-0310-a699-88a17e54d16e
parent ad062ba7
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
package org.jivesoftware.wildfire.ldap; package org.jivesoftware.wildfire.ldap;
import org.jivesoftware.util.JiveConstants; import org.jivesoftware.util.JiveConstants;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.Log; import org.jivesoftware.util.Log;
import org.jivesoftware.wildfire.XMPPServer; import org.jivesoftware.wildfire.XMPPServer;
import org.jivesoftware.wildfire.group.Group; import org.jivesoftware.wildfire.group.Group;
...@@ -43,6 +44,7 @@ public class LdapGroupProvider implements GroupProvider { ...@@ -43,6 +44,7 @@ public class LdapGroupProvider implements GroupProvider {
private int groupCount; private int groupCount;
private long expiresStamp; private long expiresStamp;
private String[] standardAttributes; private String[] standardAttributes;
private Pattern userDNPattern;
/** /**
* Constructor of the LdapGroupProvider class. Gets an LdapManager instance from the LdapManager class. * Constructor of the LdapGroupProvider class. Gets an LdapManager instance from the LdapManager class.
...@@ -56,6 +58,8 @@ public class LdapGroupProvider implements GroupProvider { ...@@ -56,6 +58,8 @@ public class LdapGroupProvider implements GroupProvider {
standardAttributes[0] = manager.getGroupNameField(); standardAttributes[0] = manager.getGroupNameField();
standardAttributes[1] = manager.getGroupDescriptionField(); standardAttributes[1] = manager.getGroupDescriptionField();
standardAttributes[2] = manager.getGroupMemberField(); standardAttributes[2] = manager.getGroupMemberField();
// Set the pattern to use to figure out if we need to wrap userDNs between "
userDNPattern = Pattern.compile("(=)([\\w ]*[\\\\].[\\w ]*)");
} }
/** /**
...@@ -262,7 +266,18 @@ public class LdapGroupProvider implements GroupProvider { ...@@ -262,7 +266,18 @@ public class LdapGroupProvider implements GroupProvider {
} }
username = JID.unescapeNode(user.getNode()); username = JID.unescapeNode(user.getNode());
try { try {
username = manager.findUserDN(username) + "," + manager.getBaseDN(); String userDN = manager.findUserDN(username);
if (JiveGlobals.getXMLProperty("ldap.wrapUserDN", true)) {
// Check if we need to wrap values between "
// eg. cn=John\, Doe,ou=People --> cn="John\, Doe",ou=People
Matcher matcher = userDNPattern.matcher(username);
while (matcher.find()) {
userDN = matcher.replaceFirst(
matcher.group(1) + "\"" + matcher.group(2) + "\"");
matcher.reset(userDN);
}
}
username = userDN + "," + manager.getBaseDN();
} }
catch (Exception e) { catch (Exception e) {
Log.error("Could not find user in LDAP " + username); Log.error("Could not find user in LDAP " + username);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment