[CalendarServer-changes] [3263] CalendarServer/trunk/twistedcaldav/directory
source_changes at macosforge.org
source_changes at macosforge.org
Wed Oct 29 16:28:17 PDT 2008
Revision: 3263
http://trac.macosforge.org/projects/calendarserver/changeset/3263
Author: wsanchez at apple.com
Date: 2008-10-29 16:28:17 -0700 (Wed, 29 Oct 2008)
Log Message:
-----------
Some improvements to Apache directory service.
Modified Paths:
--------------
CalendarServer/trunk/twistedcaldav/directory/apache.py
CalendarServer/trunk/twistedcaldav/directory/directory.py
Modified: CalendarServer/trunk/twistedcaldav/directory/apache.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/apache.py 2008-10-29 23:27:30 UTC (rev 3262)
+++ CalendarServer/trunk/twistedcaldav/directory/apache.py 2008-10-29 23:28:17 UTC (rev 3263)
@@ -38,13 +38,18 @@
def __repr__(self):
return "<%s %r: %r %r>" % (self.__class__.__name__, self.realmName, self.userFile, self.groupFile)
- def __init__(self, realmName, userFile, groupFile=None):
+ def __init__(self, realmName="", userFile=None, groupFile=None):
super(AbstractDirectoryService, self).__init__()
- if type(userFile) is str:
+ if userFile and type(userFile) is str:
userFile = FilePath(userFile)
- if type(groupFile) is str:
+ else:
+ raise DirectoryConfigurationError("Invalid Apache user file name: %r" % (userFile,))
+
+ if groupFile and type(groupFile) is str:
groupFile = FilePath(groupFile)
+ else:
+ groupFile = None
self.realmName = realmName
self.userFile = userFile
@@ -76,7 +81,7 @@
else:
# Subclass should cover the remaining record types
- raise AssertionError("Unknown record type: %r" % (recordType,))
+ raise UnknownRecordTypeError("Unknown record type: %s" % (recordType,))
def recordWithShortName(self, recordType, shortName):
for entryShortName, entryData in self.entriesForRecordType(recordType):
@@ -98,7 +103,7 @@
)
# Subclass should cover the remaining record types
- raise AssertionError("Unknown record type: %r" % (recordType,))
+ raise UnknownRecordTypeError("Unknown record type: %s" % (recordType,))
return None
@@ -113,11 +118,23 @@
if recordFile is None:
return
- for entry in recordFile.open():
- if entry and entry[0] != "#":
- shortName, rest = entry.rstrip("\n").split(":", 1)
- yield shortName, rest
+ try:
+ handle = recordFile.open()
+ except IOError, OSError:
+ self.log_error("Auth file (for %s) not found: %s" % (recordType, recordFile.path))
+ return
+ try:
+ for entry in handle:
+ if entry and entry[0] != "#":
+ try:
+ shortName, rest = entry.rstrip("\n").split(":", 1)
+ except ValueError:
+ continue
+ yield shortName, rest
+ finally:
+ handle.close()
+
class AbstractDirectoryRecord(DirectoryRecord):
"""
Abstract Apache-compatible implementation of L{IDirectoryRecord}.
Modified: CalendarServer/trunk/twistedcaldav/directory/directory.py
===================================================================
--- CalendarServer/trunk/twistedcaldav/directory/directory.py 2008-10-29 23:27:30 UTC (rev 3262)
+++ CalendarServer/trunk/twistedcaldav/directory/directory.py 2008-10-29 23:28:17 UTC (rev 3263)
@@ -22,6 +22,7 @@
"DirectoryService",
"DirectoryRecord",
"DirectoryError",
+ "DirectoryConfigurationError",
"UnknownRecordError",
"UnknownRecordTypeError",
]
@@ -323,6 +324,11 @@
Generic directory error.
"""
+class DirectoryConfigurationError(DirectoryError):
+ """
+ Invlid directory configuration.
+ """
+
class UnknownRecordTypeError(DirectoryError):
"""
Unknown directory record type.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20081029/ed87293b/attachment.html>
More information about the calendarserver-changes
mailing list