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)