[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