[CalendarServer-changes] [8364] CalendarServer/trunk/twistedcaldav/directory

source_changes at macosforge.org source_changes at macosforge.org
Thu Dec 1 14:55:19 PST 2011


Revision: 8364
          http://trac.macosforge.org/projects/calendarserver/changeset/8364
Author:   sagen at apple.com
Date:     2011-12-01 14:55:19 -0800 (Thu, 01 Dec 2011)
Log Message:
-----------
Ignore LDAP records that are missing the record name attribute.

Modified Paths:
--------------
    CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py

Modified: CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py	2011-12-01 21:55:30 UTC (rev 8363)
+++ CalendarServer/trunk/twistedcaldav/directory/ldapdirectory.py	2011-12-01 22:55:19 UTC (rev 8364)
@@ -641,6 +641,8 @@
         enabledForLogin = True
 
         shortNames = tuple(self._getMultipleLdapAttributes(attrs, self.rdnSchema[recordType]["mapping"]["recordName"]))
+        if not shortNames:
+            raise MissingRecordNameException()
 
         # First check for and add guid
         guidAttr = self.rdnSchema["guidAttr"]
@@ -890,6 +892,10 @@
                     # We got a match, so don't bother checking other types
                     break
 
+                except MissingRecordNameException:
+                    self.log_warn("Ignoring record missing record name attribute: recordType %s, indexType %s and indexKey %s"
+                        % (recordTypes, indexType, indexKey))
+
                 except MissingGuidException:
                     self.log_warn("Ignoring record missing guid attribute: recordType %s, indexType %s and indexKey %s"
                         % (recordTypes, indexType, indexKey))
@@ -943,6 +949,7 @@
                     attrlist=self.attrlist)
                 self.log_debug("LDAP search returned %d results" % (len(results),))
                 numMissingGuids = 0
+                numMissingRecordNames = 0
                 for dn, attrs in results:
                     dn = normalizeDNstr(dn)
                     # Skip if group restriction is in place and guid is not
@@ -968,10 +975,17 @@
                     except MissingGuidException:
                         numMissingGuids += 1
 
+                    except MissingRecordNameException:
+                        numMissingRecordNames += 1
+
                 if numMissingGuids:
                     self.log_warn("%d %s records are missing %s" %
                         (numMissingGuids, recordType, guidAttr))
 
+                if numMissingRecordNames:
+                    self.log_warn("%d %s records are missing record name" %
+                        (numMissingRecordNames, recordType))
+
         self.log_debug("Principal property search matched %d records" % (len(records),))
         return succeed(records)
 
@@ -1347,6 +1361,10 @@
         return super(LdapDirectoryRecord, self).verifyCredentials(credentials)
 
 
+class MissingRecordNameException(Exception):
+    """ Raised when LDAP record is missing recordName """
+    pass
+
 class MissingGuidException(Exception):
     """ Raised when LDAP record is missing guidAttr and it's required """
     pass

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py	2011-12-01 21:55:30 UTC (rev 8363)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_ldapdirectory.py	2011-12-01 22:55:19 UTC (rev 8364)
@@ -16,7 +16,8 @@
 
 try:
     from twistedcaldav.directory.ldapdirectory import (
-        buildFilter, LdapDirectoryService, MissingGuidException,
+        buildFilter, LdapDirectoryService,
+        MissingGuidException, MissingRecordNameException,
         splitIntoBatches, normalizeDNstr, dnContainedIn
     )
     from twistedcaldav.test.util import proxiesFile
@@ -462,6 +463,18 @@
                 self.service._ldapResultToRecord, dn, attrs,
                 self.service.recordType_users)
 
+            # User missing record name
+
+            dn = "uid=odtestamanda,cn=users,dc=example,dc=com"
+            attrs = {
+                'apple-generateduid': ['9ABDD881-B3A4-4065-9DA7-12095F40A898'],
+                'cn': ['Amanda Test'],
+            }
+
+            self.assertRaises(MissingRecordNameException,
+                self.service._ldapResultToRecord, dn, attrs,
+                self.service.recordType_users)
+
             # Group with direct user members and nested group
 
             dn = "cn=odtestgrouptop,cn=groups,dc=example,dc=com"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20111201/59e7034e/attachment.html>


More information about the calendarserver-changes mailing list