[CalendarServer-changes] [1952] CalendarServer/trunk

source_changes at macosforge.org source_changes at macosforge.org
Wed Oct 10 11:56:25 PDT 2007


Revision: 1952
          http://trac.macosforge.org/projects/calendarserver/changeset/1952
Author:   cdaboo at apple.com
Date:     2007-10-10 11:56:25 -0700 (Wed, 10 Oct 2007)

Log Message:
-----------
Eliminate a directory query on each authentication. To do authentication we need to know the directory node, and
previously we looked up the user guid to get that. Now we require the node to be passed in as an argument rather
than the guid. So the guid->node query can be eliminated. Now the calendar server will query the node attribute
on each record and use that during authentication.

Modified Paths:
--------------
    CalendarServer/trunk/run
    CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py
    CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py

Modified: CalendarServer/trunk/run
===================================================================
--- CalendarServer/trunk/run	2007-10-10 18:50:28 UTC (rev 1951)
+++ CalendarServer/trunk/run	2007-10-10 18:56:25 UTC (rev 1952)
@@ -480,7 +480,7 @@
   if ! py_have_module opendirectory; then
     opendirectory="${top}/PyOpenDirectory";
 
-    svn_get "PyOpenDirectory" "${opendirectory}" "${svn_uri_base}/PyOpenDirectory/trunk" 1925;
+    svn_get "PyOpenDirectory" "${opendirectory}" "${svn_uri_base}/PyOpenDirectory/trunk" 1951;
     py_build "PyOpenDirectory" "${opendirectory}" false;
     py_install "PyOpenDirectory" "${opendirectory}";
 

Modified: CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2007-10-10 18:50:28 UTC (rev 1951)
+++ CalendarServer/trunk/twistedcaldav/directory/appleopendirectory.py	2007-10-10 18:56:25 UTC (rev 1952)
@@ -444,6 +444,7 @@
             if not guid:
                 continue
             realName = value.get(dsattributes.kDS1AttrDistinguishedName)
+            nodename = value.get(dsattributes.kDSNAttrMetaNodeLocation)
 
             # Get calendar user addresses from directory record.
             if enabledForCalendaring:
@@ -480,6 +481,7 @@
                 service               = self,
                 recordType            = recordType,
                 guid                  = guid,
+                nodename              = nodename,
                 shortName             = recordShortName,
                 fullName              = realName,
                 calendarUserAddresses = calendarUserAddresses,
@@ -585,6 +587,7 @@
             dsattributes.kDS1AttrDistinguishedName,
             dsattributes.kDSNAttrEMailAddress,
             dsattributes.kDSNAttrServicesLocator,
+            dsattributes.kDSNAttrMetaNodeLocation,
         ]
 
         query = None
@@ -705,7 +708,7 @@
     Open Directory implementation of L{IDirectoryRecord}.
     """
     def __init__(
-        self, service, recordType, guid, shortName, fullName,
+        self, service, recordType, guid, nodename, shortName, fullName,
         calendarUserAddresses, autoSchedule, enabledForCalendaring,
         memberGUIDs, proxyGUIDs,
     ):
@@ -719,6 +722,7 @@
             autoSchedule          = autoSchedule,
             enabledForCalendaring = enabledForCalendaring,
         )
+        self._nodename = nodename
         self._memberGUIDs = tuple(memberGUIDs)
         self._proxyGUIDs = tuple(proxyGUIDs)
 
@@ -758,7 +762,7 @@
     def verifyCredentials(self, credentials):
         if isinstance(credentials, UsernamePassword):
             try:
-                return opendirectory.authenticateUserBasic(self.service.directory, self.guid, self.shortName, credentials.password)
+                return opendirectory.authenticateUserBasic(self.service.directory, self._nodename, self.shortName, credentials.password)
             except opendirectory.ODError, e:
                 logging.err("Open Directory (node=%s) error while performing basic authentication for user %s: %s"
                         % (self.service.realmName, self.shortName, e), system="OpenDirectoryService")
@@ -783,7 +787,7 @@
 
                 return opendirectory.authenticateUserDigest(
                     self.service.directory,
-                    self.guid,
+                    self._nodename,
                     self.shortName,
                     challenge,
                     response,

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py	2007-10-10 18:50:28 UTC (rev 1951)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectory.py	2007-10-10 18:56:25 UTC (rev 1952)
@@ -66,6 +66,7 @@
                 service               = self.service(),
                 recordType            = DirectoryService.recordType_users,
                 guid                  = "B1F93EB1-DA93-4772-9141-81C250DA35B3",
+                nodename              = "/LDAPv2/127.0.0.1",
                 shortName             = "user",
                 fullName              = "Some user",
                 calendarUserAddresses = set(("mailtoguid at example.com",)),

Modified: CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py	2007-10-10 18:50:28 UTC (rev 1951)
+++ CalendarServer/trunk/twistedcaldav/directory/test/test_opendirectoryrecords.py	2007-10-10 18:56:25 UTC (rev 1952)
@@ -77,12 +77,14 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
                 DirectoryService.recordType_groups: [
@@ -91,12 +93,14 @@
                         dsattributes.kDS1AttrDistinguishedName: "Group 01",
                         dsattributes.kDSNAttrEMailAddress: "group01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["group02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_group02",
                         dsattributes.kDS1AttrDistinguishedName: "Group 02",
                         dsattributes.kDSNAttrEMailAddress: "group02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
                 DirectoryService.recordType_resources: [
@@ -105,12 +109,14 @@
                         dsattributes.kDS1AttrDistinguishedName: "Resource 01",
                         dsattributes.kDSNAttrEMailAddress: "resource01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["resource02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_resource02",
                         dsattributes.kDS1AttrDistinguishedName: "Resource 02",
                         dsattributes.kDSNAttrEMailAddress: "resource02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
                 DirectoryService.recordType_locations: [
@@ -119,12 +125,14 @@
                         dsattributes.kDS1AttrDistinguishedName: "Location 01",
                         dsattributes.kDSNAttrEMailAddress: "location01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["location02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_location02",
                         dsattributes.kDS1AttrDistinguishedName: "Location 02",
                         dsattributes.kDSNAttrEMailAddress: "location02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }
@@ -158,18 +166,21 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }
@@ -190,18 +201,21 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02-1",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02-2",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }
@@ -221,18 +235,21 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user03", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }
@@ -252,24 +269,28 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user03", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02-2",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }
@@ -289,12 +310,14 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }
@@ -312,18 +335,21 @@
                         dsattributes.kDS1AttrDistinguishedName: "User 01",
                         dsattributes.kDSNAttrEMailAddress: "user01 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user02", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                     ["user03", {
                         dsattributes.kDS1AttrGeneratedUID: "GUID_user02",
                         dsattributes.kDS1AttrDistinguishedName: "User 02",
                         dsattributes.kDSNAttrEMailAddress: "user02 at example.com",
                         dsattributes.kDSNAttrServicesLocator: "12345:67890:calendar",
+                        dsattributes.kDSNAttrMetaNodeLocation: "/LDAPv3/127.0.0.1",
                     }],
                 ],
             }

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20071010/1fce4d85/attachment-0001.html


More information about the calendarserver-changes mailing list