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