[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