You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2022/11/29 08:03:25 UTC
svn commit: r1905595 - in /manifoldcf/trunk: ./ connectors/activedirectory/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/activedirectory/ connectors/ldap/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/ldap...
Author: kwright
Date: Tue Nov 29 08:03:25 2022
New Revision: 1905595
URL: http://svn.apache.org/viewvc?rev=1905595&view=rev
Log:
Pull down work from CONNECTORS-1739 branch
Added:
manifoldcf/trunk/framework/connector-common/src/main/java/org/apache/manifoldcf/connectorcommon/common/LdapEscaper.java
- copied unchanged from r1905593, manifoldcf/branches/CONNECTORS-1739/framework/connector-common/src/main/java/org/apache/manifoldcf/connectorcommon/common/LdapEscaper.java
Modified:
manifoldcf/trunk/ (props changed)
manifoldcf/trunk/CHANGES.txt
manifoldcf/trunk/connectors/activedirectory/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/activedirectory/ActiveDirectoryAuthority.java
manifoldcf/trunk/connectors/ldap/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/ldap/LDAPAuthority.java
manifoldcf/trunk/connectors/sharepoint/ (props changed)
manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/sharepoint/SharePointADAuthority.java
Propchange: manifoldcf/trunk/
------------------------------------------------------------------------------
Merged /manifoldcf/branches/CONNECTORS-1739:r1905583-1905593
Modified: manifoldcf/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/CHANGES.txt?rev=1905595&r1=1905594&r2=1905595&view=diff
==============================================================================
--- manifoldcf/trunk/CHANGES.txt (original)
+++ manifoldcf/trunk/CHANGES.txt Tue Nov 29 08:03:25 2022
@@ -3,6 +3,9 @@ $Id$
======================= 2.24-dev =====================
+CONNECTORS-1739: Reuse escaping facilities.
+(Markus Schuch)
+
CONNECTORS-1738: Add connection-specific timeouts to ES connector.
(Nguyen Huu)
Modified: manifoldcf/trunk/connectors/activedirectory/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/activedirectory/ActiveDirectoryAuthority.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/activedirectory/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/activedirectory/ActiveDirectoryAuthority.java?rev=1905595&r1=1905594&r2=1905595&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/activedirectory/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/activedirectory/ActiveDirectoryAuthority.java (original)
+++ manifoldcf/trunk/connectors/activedirectory/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/activedirectory/ActiveDirectoryAuthority.java Tue Nov 29 08:03:25 2022
@@ -29,6 +29,9 @@ import javax.naming.*;
import javax.naming.ldap.*;
import javax.naming.directory.*;
+import static org.apache.manifoldcf.connectorcommon.common.LdapEscaper.escapeDN;
+import static org.apache.manifoldcf.connectorcommon.common.LdapEscaper.escapeFilter;
+
/** This is the Active Directory implementation of the IAuthorityConnector interface.
* Access tokens for this connector are simple SIDs, except for the "global deny" token, which
@@ -358,10 +361,10 @@ public class ActiveDirectoryAuthority ex
int k = domainPart.indexOf(".",j);
if (k == -1)
{
- domainsb.append("DC=").append(ldapEscape(domainPart.substring(j)));
+ domainsb.append("DC=").append(escapeDN(domainPart.substring(j)));
break;
}
- domainsb.append("DC=").append(ldapEscape(domainPart.substring(j,k)));
+ domainsb.append("DC=").append(escapeDN(domainPart.substring(j,k)));
j = k+1;
}
@@ -748,7 +751,7 @@ public class ActiveDirectoryAuthority ex
throws ManifoldCFException
{
String returnedAtts[] = {"distinguishedName"};
- String searchFilter = "(&(objectClass=user)(" + userACLsUsername + "=" + userName + "))";
+ String searchFilter = "(&(objectClass=user)(" + userACLsUsername + "=" + escapeFilter(userName) + "))";
SearchControls searchCtls = new SearchControls();
searchCtls.setReturningAttributes(returnedAtts);
//Specify the search scope
@@ -776,28 +779,6 @@ public class ActiveDirectoryAuthority ex
throw new ManifoldCFException(e.getMessage(),e);
}
}
-
- /** LDAP escape a string.
- */
- protected static String ldapEscape(String input)
- {
- //Add escape sequence to all commas
- StringBuilder sb = new StringBuilder();
- int index = 0;
- while (true)
- {
- int oldIndex = index;
- index = input.indexOf(",",oldIndex);
- if (index == -1)
- {
- sb.append(input.substring(oldIndex));
- break;
- }
- sb.append(input.substring(oldIndex,index)).append("\\,");
- index++;
- }
- return sb.toString();
- }
/** Convert a binary SID to a string */
protected static String sid2String(byte[] SID)
Modified: manifoldcf/trunk/connectors/ldap/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/ldap/LDAPAuthority.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/ldap/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/ldap/LDAPAuthority.java?rev=1905595&r1=1905594&r2=1905595&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/ldap/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/ldap/LDAPAuthority.java (original)
+++ manifoldcf/trunk/connectors/ldap/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/ldap/LDAPAuthority.java Tue Nov 29 08:03:25 2022
@@ -19,19 +19,18 @@ package org.apache.manifoldcf.authoritie
import java.io.*;
import java.util.*;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.ldap.*;
import org.apache.manifoldcf.authorities.interfaces.*;
-import org.apache.manifoldcf.authorities.system.ManifoldCF;
import org.apache.manifoldcf.authorities.system.Logging;
import org.apache.manifoldcf.core.interfaces.*;
import org.apache.manifoldcf.connectorcommon.interfaces.*;
-import org.apache.manifoldcf.ui.util.Encoder;
import org.apache.manifoldcf.core.common.LDAPSSLSocketFactory;
+import static org.apache.manifoldcf.connectorcommon.common.LdapEscaper.escapeDN;
+import static org.apache.manifoldcf.connectorcommon.common.LdapEscaper.escapeFilter;
+
/**
* This is the Active Directory implementation of the IAuthorityConnector
* interface. Access tokens for this connector are simple SIDs, except for the
@@ -473,7 +472,7 @@ public class LDAPAuthority extends org.a
if (groupSearch != null && !groupSearch.isEmpty()) {
//specify the LDAP search filter
- String searchFilter = groupSearch.replace("{0}", escapeLDAPSearchFilter(groupMemberDN ? usrRecord.getNameInNamespace() : usrName));
+ String searchFilter = groupSearch.replace("{0}", escapeFilter(groupMemberDN ? usrRecord.getNameInNamespace() : usrName));
SearchControls searchCtls = new SearchControls();
searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
String returnedAtts[] = {groupNameAttr};
@@ -874,92 +873,6 @@ public class LDAPAuthority extends org.a
}
}
- /**
- * LDAP escape a string.
- */
- protected static String ldapEscape(String input) {
- //Add escape sequence to all commas
- StringBuilder sb = new StringBuilder();
- int index = 0;
- while (true) {
- int oldIndex = index;
- index = input.indexOf(",", oldIndex);
- if (index == -1) {
- sb.append(input.substring(oldIndex));
- break;
- }
- sb.append(input.substring(oldIndex, index)).append("\\,");
- index++;
- }
- return sb.toString();
- }
-
- public static String escapeDN(String name) {
- StringBuilder sb = new StringBuilder(); // If using JDK >= 1.5 consider using StringBuilder
- if ((name.length() > 0) && ((name.charAt(0) == ' ') || (name.charAt(0) == '#'))) {
- sb.append('\\'); // add the leading backslash if needed
- }
- for (int i = 0; i < name.length(); i++) {
- char curChar = name.charAt(i);
- switch (curChar) {
- case '\\':
- sb.append("\\\\");
- break;
- case ',':
- sb.append("\\,");
- break;
- case '+':
- sb.append("\\+");
- break;
- case '"':
- sb.append("\\\"");
- break;
- case '<':
- sb.append("\\<");
- break;
- case '>':
- sb.append("\\>");
- break;
- case ';':
- sb.append("\\;");
- break;
- default:
- sb.append(curChar);
- }
- }
- if ((name.length() > 1) && (name.charAt(name.length() - 1) == ' ')) {
- sb.insert(sb.length() - 1, '\\'); // add the trailing backslash if needed
- }
- return sb.toString();
- }
-
- public static String escapeLDAPSearchFilter(String filter) {
- StringBuilder sb = new StringBuilder(); // If using JDK >= 1.5 consider using StringBuilder
- for (int i = 0; i < filter.length(); i++) {
- char curChar = filter.charAt(i);
- switch (curChar) {
- case '\\':
- sb.append("\\5c");
- break;
- case '*':
- sb.append("\\2a");
- break;
- case '(':
- sb.append("\\28");
- break;
- case ')':
- sb.append("\\29");
- break;
- case '\u0000':
- sb.append("\\00");
- break;
- default:
- sb.append(curChar);
- }
- }
- return sb.toString();
- }
-
protected static StringSet emptyStringSet = new StringSet();
/**
Propchange: manifoldcf/trunk/connectors/sharepoint/
------------------------------------------------------------------------------
Merged /manifoldcf/branches/CONNECTORS-1739/connectors/sharepoint:r1905583-1905586
Modified: manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/sharepoint/SharePointADAuthority.java
URL: http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/sharepoint/SharePointADAuthority.java?rev=1905595&r1=1905594&r2=1905595&view=diff
==============================================================================
--- manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/sharepoint/SharePointADAuthority.java (original)
+++ manifoldcf/trunk/connectors/sharepoint/connector/src/main/java/org/apache/manifoldcf/authorities/authorities/sharepoint/SharePointADAuthority.java Tue Nov 29 08:03:25 2022
@@ -19,7 +19,6 @@
package org.apache.manifoldcf.authorities.authorities.sharepoint;
import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
import org.apache.manifoldcf.authorities.interfaces.*;
import org.apache.manifoldcf.authorities.system.Logging;
import org.apache.manifoldcf.authorities.system.ManifoldCF;
@@ -27,12 +26,13 @@ import org.apache.manifoldcf.core.util.U
import java.io.*;
import java.util.*;
-import java.net.*;
-import java.util.concurrent.TimeUnit;
import javax.naming.*;
import javax.naming.ldap.*;
import javax.naming.directory.*;
+import static org.apache.manifoldcf.connectorcommon.common.LdapEscaper.escapeDN;
+import static org.apache.manifoldcf.connectorcommon.common.LdapEscaper.escapeFilter;
+
/** This is the Active Directory implementation of the IAuthorityConnector interface, as used
* by SharePoint in Claim Space. It is meant to be used in conjunction with other SharePoint authorities,
@@ -381,10 +381,10 @@ public class SharePointADAuthority exten
int k = domainPart.indexOf(".",j);
if (k == -1)
{
- domainsb.append("DC=").append(ldapEscape(domainPart.substring(j)));
+ domainsb.append("DC=").append(escapeDN(domainPart.substring(j)));
break;
}
- domainsb.append("DC=").append(ldapEscape(domainPart.substring(j,k)));
+ domainsb.append("DC=").append(escapeDN(domainPart.substring(j,k)));
j = k+1;
}
@@ -733,7 +733,7 @@ public class SharePointADAuthority exten
throws ManifoldCFException
{
String returnedAtts[] = {"distinguishedName"};
- String searchFilter = "(&(objectClass=user)(" + userACLsUsername + "=" + userName + "))";
+ String searchFilter = "(&(objectClass=user)(" + userACLsUsername + "=" + escapeFilter(userName) + "))";
SearchControls searchCtls = new SearchControls();
searchCtls.setReturningAttributes(returnedAtts);
//Specify the search scope
@@ -760,28 +760,6 @@ public class SharePointADAuthority exten
throw new ManifoldCFException(e.getMessage(),e);
}
}
-
- /** LDAP escape a string.
- */
- protected static String ldapEscape(String input)
- {
- //Add escape sequence to all commas
- StringBuilder sb = new StringBuilder();
- int index = 0;
- while (true)
- {
- int oldIndex = index;
- index = input.indexOf(",",oldIndex);
- if (index == -1)
- {
- sb.append(input.substring(oldIndex));
- break;
- }
- sb.append(input.substring(oldIndex,index)).append("\\,");
- index++;
- }
- return sb.toString();
- }
/** Convert a binary SID to a string */
protected static String sid2String(byte[] SID)