[CalendarServer-changes] [2207] CalendarServer/branches/users/cdaboo/ad-directory-2198/twistedcaldav /directory/appleopendirectory.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Mar 6 12:15:49 PST 2008
Revision: 2207
http://trac.macosforge.org/projects/calendarserver/changeset/2207
Author: cdaboo at apple.com
Date: 2008-03-06 12:15:49 -0800 (Thu, 06 Mar 2008)
Log Message:
-----------
Remove Workgroup server specialization. No longer needed no that we are querying for all users and disabling those
without ServicesLocator.
Modified Paths:
--------------
CalendarServer/branches/users/cdaboo/ad-directory-2198/twistedcaldav/directory/appleopendirectory.py
Modified: CalendarServer/branches/users/cdaboo/ad-directory-2198/twistedcaldav/directory/appleopendirectory.py
===================================================================
--- CalendarServer/branches/users/cdaboo/ad-directory-2198/twistedcaldav/directory/appleopendirectory.py 2008-03-06 20:12:32 UTC (rev 2206)
+++ CalendarServer/branches/users/cdaboo/ad-directory-2198/twistedcaldav/directory/appleopendirectory.py 2008-03-06 20:15:49 UTC (rev 2207)
@@ -25,7 +25,6 @@
import itertools
import sys
-import os
import opendirectory
import dsattributes
@@ -41,11 +40,8 @@
from twistedcaldav.directory.directory import DirectoryService, DirectoryRecord
from twistedcaldav.directory.directory import DirectoryError, UnknownRecordTypeError
-from plistlib import readPlistFromString, readPlist
+from plistlib import readPlistFromString
-serverPreferences = '/Library/Preferences/com.apple.servermgr_info.plist'
-saclGroup = 'com.apple.access_calendar'
-
recordListCacheTimeout = 60 * 30 # 30 minutes
class OpenDirectoryService(DirectoryService):
@@ -81,8 +77,6 @@
self._records = {}
self._delayedCalls = set()
- self.isWorkgroupServer = False
-
if dosetup:
if self.requireComputerRecord:
try:
@@ -91,65 +85,9 @@
logging.err("Unable to locate virtual host record: %s" % (e,), system="OpenDirectoryService")
raise
- if os.path.exists(serverPreferences):
- serverInfo = readPlist(serverPreferences)
-
- self.isWorkgroupServer = serverInfo.get('ServiceConfig', {}).get('IsWorkgroupServer', False)
-
- if self.isWorkgroupServer:
- logging.info("Enabling Workgroup Server compatibility mode", system="OpenDirectoryService")
-
for recordType in self.recordTypes():
self.recordsForType(recordType)
- def _expandGroupMembership(self, members, nestedGroups, processedGUIDs=None):
-
- if processedGUIDs is None:
- processedGUIDs = set()
-
- if isinstance(members, str):
- members = [members]
-
- if isinstance(nestedGroups, str):
- nestedGroups = [nestedGroups]
-
- for memberGUID in members:
- if memberGUID not in processedGUIDs:
- processedGUIDs.add(memberGUID)
- yield memberGUID
-
- for groupGUID in nestedGroups:
- if groupGUID in processedGUIDs:
- continue
-
- result = opendirectory.queryRecordsWithAttribute_list(
- self.directory,
- dsattributes.kDS1AttrGeneratedUID,
- groupGUID,
- dsattributes.eDSExact,
- False,
- dsattributes.kDSStdRecordTypeGroups,
- [dsattributes.kDSNAttrGroupMembers, dsattributes.kDSNAttrNestedGroups]
- )
-
- if not result:
- logging.err(
- "Couldn't find group %s when trying to expand nested groups."
- % (groupGUID,), system="OpenDirectoryService"
- )
- continue
-
- group = result[0][1]
-
- processedGUIDs.add(groupGUID)
-
- for GUID in self._expandGroupMembership(
- group.get(dsattributes.kDSNAttrGroupMembers, []),
- group.get(dsattributes.kDSNAttrNestedGroups, []),
- processedGUIDs
- ):
- yield GUID
-
def __cmp__(self, other):
if not isinstance(other, DirectoryRecord):
return super(DirectoryRecord, self).__eq__(other)
@@ -645,43 +583,11 @@
raise UnknownRecordTypeError("Unknown Open Directory record type: %s" % (recordType))
if self.requireComputerRecord:
- if self.isWorkgroupServer and recordType == DirectoryService.recordType_users:
- if shortName is None and guid is None:
- results = opendirectory.queryRecordsWithAttribute_list(
- self.directory,
- dsattributes.kDSNAttrRecordName,
- saclGroup,
- dsattributes.eDSExact,
- False,
- dsattributes.kDSStdRecordTypeGroups,
- [dsattributes.kDSNAttrGroupMembers, dsattributes.kDSNAttrNestedGroups]
- )
-
- if len(results) == 1:
- members = results[0][1].get(dsattributes.kDSNAttrGroupMembers, [])
- nestedGroups = results[0][1].get(dsattributes.kDSNAttrNestedGroups, [])
- else:
- members = []
- nestedGroups = []
-
- guidQueries = []
-
- for GUID in self._expandGroupMembership(members, nestedGroups):
- guidQueries.append(
- dsquery.match(dsattributes.kDS1AttrGeneratedUID, GUID, dsattributes.eDSExact)
- )
-
- if not guidQueries:
- logging.warn("No SACL enabled users found.", system="OpenDirectoryService")
- return ()
-
- query = dsquery.expression(dsquery.expression.OR, guidQueries)
-
#
# For users and groups, we'll load all entries, even if
# they don't have a services locator for this server.
#
- elif (
+ if (
recordType != DirectoryService.recordType_users and
recordType != DirectoryService.recordType_groups
):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080306/e434588d/attachment.html
More information about the calendarserver-changes
mailing list