Branch 'pykolab-0.5' - pykolab/auth

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Thu Jan 16 01:10:21 CET 2014


 pykolab/auth/ldap/__init__.py |   51 +++++++++++++++++++++++++++++++++++++-----
 1 file changed, 45 insertions(+), 6 deletions(-)

New commits:
commit 6176b11136d583dee418cc45df235bb58071dabc
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu Jan 16 01:10:00 2014 +0100

    Ensure mailboxes are created on the defined server

diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index f90add1..eab44b6 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -1077,7 +1077,13 @@ class LDAP(pykolab.base.Base):
         if mailserver_attribute == None:
             mailserver_attribute = 'mailhost'
 
+        mailserver_attribute = mailserver_attribute.lower()
+
         result_attribute = conf.get('cyrus-sasl', 'result_attribute')
+        if result_attribute == None:
+            result_attribute = 'mail'
+
+        result_attribute = result_attribute.lower()
 
         if not entry.has_key(mailserver_attribute):
             entry[mailserver_attribute] = \
@@ -1100,17 +1106,33 @@ class LDAP(pykolab.base.Base):
 
         self.imap.connect(domain=self.domain)
 
-        if not self.imap.user_mailbox_exists(entry[result_attribute]):
+        if not self.imap.user_mailbox_exists(entry[result_attribute].lower()):
             folder = self.imap.user_mailbox_create(
                     entry[result_attribute],
                     entry[mailserver_attribute]
                 )
 
         else:
-            folder = "user%s%s" % (self.imap.separator,entry[result_attribute])
+            folder = "user%s%s" % (self.imap.separator,entry[result_attribute].lower())
 
         server = self.imap.user_mailbox_server(folder)
 
+        log.debug(
+                _("Entry %s attribute value: %r") % (
+                        mailserver_attribute,
+                        entry[mailserver_attribute]
+                    ),
+                level=8
+            )
+
+        log.debug(
+                _("imap.user_mailbox_server(%r) result: %r") % (
+                        folder,
+                        server
+                    ),
+                level=8
+            )
+
         if not entry[mailserver_attribute] == server:
             self.set_entry_attribute(entry, mailserver_attribute, server)
 
@@ -1386,7 +1408,17 @@ class LDAP(pykolab.base.Base):
         """
             A user entry as part of the initial search result set.
         """
+        mailserver_attribute = self.config_get('mailserver_attribute')
+        if mailserver_attribute == None:
+            mailserver_attribute = 'mailhost'
+
+        mailserver_attribute = mailserver_attribute.lower()
+
         result_attribute = conf.get('cyrus-sasl', 'result_attribute')
+        if result_attribute == None:
+            result_attribute = 'mail'
+
+        result_attribute = result_attribute.lower()
 
         old_canon_attr = None
 
@@ -1417,18 +1449,25 @@ class LDAP(pykolab.base.Base):
             entry[key] = entry_changes[key]
             self.set_entry_attribute(entry, key, entry[key])
 
-        if not entry.has_key(result_attribute) or entry[result_attribute] == None:
-            return
-
         cache.get_entry(self.domain, entry)
 
         self.imap.connect(domain=self.domain)
 
+        server = None
+
+        if not entry.has_key(mailserver_attribute):
+            entry[mailserver_attribute] = self.get_entry_attribute(entry, mailserver_attribute)
+
+        if entry[mailserver_attribute] == "" or entry[mailserver_attribute] == None:
+            server = None
+        else:
+            server = entry[mailserver_attribute].lower()
+
         if entry.has_key(result_attribute) and \
                 not entry.has_key(result_attribute) == None:
 
             if not self.imap.user_mailbox_exists(entry[result_attribute]):
-                folder = self.imap.user_mailbox_create(entry[result_attribute])
+                folder = self.imap.user_mailbox_create(entry[result_attribute], server=server)
                 server = self.imap.user_mailbox_server(folder)
             else:
                 folder = "user%s%s" % (




More information about the commits mailing list