kolabd/process.py pykolab/auth pykolab/base.py

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Thu May 23 15:37:38 CEST 2013


 kolabd/process.py             |    2 ++
 pykolab/auth/__init__.py      |   15 +++++++--------
 pykolab/auth/ldap/__init__.py |   12 +++++++++++-
 pykolab/base.py               |    5 ++++-
 4 files changed, 24 insertions(+), 10 deletions(-)

New commits:
commit c915487867d227617f8ae7d996af51e5470ff54e
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Thu May 23 15:37:07 2013 +0200

    Make sure that in a multi-domain environment, we get the base dn for additional domain name spaces right.

diff --git a/kolabd/process.py b/kolabd/process.py
index 659b74f..ffe33f5 100644
--- a/kolabd/process.py
+++ b/kolabd/process.py
@@ -30,6 +30,7 @@ conf = pykolab.getConf()
 class KolabdProcess(multiprocessing.Process):
     def __init__(self, domain):
         self.domain = domain
+        log.debug(_("Process created for domain %s") % (domain), level=8)
         multiprocessing.Process.__init__(
                 self,
                 target=self.synchronize,
@@ -38,6 +39,7 @@ class KolabdProcess(multiprocessing.Process):
             )
 
     def synchronize(self, domain):
+        log.debug(_("Synchronizing for domain %s") % (domain), level=8)
         sync_interval = conf.get('kolab', 'sync_interval')
 
         if sync_interval == None or sync_interval == 0:
diff --git a/pykolab/auth/__init__.py b/pykolab/auth/__init__.py
index f4de1e1..b75f9c3 100644
--- a/pykolab/auth/__init__.py
+++ b/pykolab/auth/__init__.py
@@ -37,15 +37,10 @@ class Auth(pykolab.base.Base):
         """
             Initialize the authentication class.
         """
-        pykolab.base.Base.__init__(self)
+        pykolab.base.Base.__init__(self, domain=domain)
 
         self._auth = None
 
-        if not domain == None:
-            self.domain = domain
-        else:
-            self.domain = conf.get('kolab', 'primary_domain')
-
     def authenticate(self, login):
         """
             Verify login credentials supplied in login against the appropriate
@@ -97,8 +92,12 @@ class Auth(pykolab.base.Base):
             return
 
         if domain == None:
-            section = 'kolab'
-            domain = conf.get('kolab', 'primary_domain')
+            if not self.domain == None:
+                section = self.domain
+                domain = self.domain
+            else:
+                section = 'kolab'
+                domain = conf.get('kolab', 'primary_domain')
         else:
             self.list_domains()
             section = domain
diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index 6559ea0..a6a1044 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -868,8 +868,18 @@ class LDAP(pykolab.base.Base):
         else:
             override_search = False
 
+        config_base_dn = self.config_get('base_dn')
+        ldap_base_dn = self._kolab_domain_root_dn(self.domain)
+
+        if not ldap_base_dn == None and not ldap_base_dn == config_base_dn:
+            base_dn = ldap_base_dn
+        else:
+            base_dn = config_base_dn
+
+        log.debug(_("Synchronization is searching against base DN: %s") % (base_dn), level=8)
+
         self._search(
-                self.config_get('base_dn'),
+                base_dn,
                 filterstr=_filter,
                 attrlist=[
                         '*',
diff --git a/pykolab/base.py b/pykolab/base.py
index b63ca2d..207783c 100644
--- a/pykolab/base.py
+++ b/pykolab/base.py
@@ -26,7 +26,10 @@ class Base(object):
         Abstraction class for functions commonly shared between auth, imap, etc.
     """
     def __init__(self, *args, **kw):
-        self.domain = conf.get('kolab', 'primary_domain')
+        if kw.has_key('domain') and not kw['domain'] == None:
+            self.domain = kw['domain']
+        else:
+            self.domain = conf.get('kolab', 'primary_domain')
 
         # Placeholder primary_domain => [secondary_domains]. Should be updated
         # on auth backend _connect().





More information about the commits mailing list