6 commits - configure.ac pykolab/auth pykolab/imap pykolab/xml

Jeroen van Meeuwen vanmeeuwen at kolabsys.com
Mon Jul 15 18:31:17 CEST 2013


 configure.ac                  |    2 +-
 pykolab/auth/ldap/__init__.py |   27 +++++++++++++++++++--------
 pykolab/imap/cyrus.py         |   10 +++++++++-
 pykolab/xml/event.py          |    1 +
 4 files changed, 30 insertions(+), 10 deletions(-)

New commits:
commit d2a7be158191fb1bc8733ac09ecfb5dcbc14716b
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Mon Jul 15 17:31:06 2013 +0100

    Fix reference to attribute key

diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index cbe4830..8b2e841 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -1611,7 +1611,7 @@ class LDAP(pykolab.base.Base):
         mailserver_attribute = self.config_get('mailserver_attribute')
 
         if entry.has_key(mailserver_attribute):
-            server = entry['mailserver_attribute']
+            server = entry[mailserver_attribute]
 
         if not entry.has_key('kolabtargetfolder'):
             entry['kolabtargetfolder'] = self.get_entry_attribute(


commit ade3208d4b0bf5bf36b75d2045026b23213f96c7
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Mon Jul 15 12:56:51 2013 +0100

    Improvide the find_recipient() against a multi-domain environment

diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index 082484a..cbe4830 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -374,8 +374,16 @@ class LDAP(pykolab.base.Base):
         if len(_filter) <= 6:
             return None
 
+        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
+
         _results = self.ldap.search_s(
-                self.config_get('base_dn'),
+                base_dn,
                 scope=ldap.SCOPE_SUBTREE,
                 filterstr=_filter,
                 attrlist=result_attributes,
@@ -419,8 +427,6 @@ class LDAP(pykolab.base.Base):
             __filter_prefix = "(&%s" % resource_filter
             __filter_suffix = ")"
 
-        resource_base_dn = self.config_get('resource_base_dn')
-
         recipient_address_attrs = self.config_get_list("mail_attributes")
 
         result_attributes = recipient_address_attrs
@@ -444,6 +450,14 @@ class LDAP(pykolab.base.Base):
         if len(_filter) <= 6:
             return None
 
+        config_base_dn = self.config_get('resource_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:
+            resource_base_dn = ldap_base_dn
+        else:
+            resource_base_dn = config_base_dn
+
         _results = self.ldap.search_s(
                 resource_base_dn,
                 scope=ldap.SCOPE_SUBTREE,


commit d2fd54d3cced50400018c46d53ee56598bfcc109
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Fri Jul 12 14:52:10 2013 +0100

    Bump the version

diff --git a/configure.ac b/configure.ac
index ae9ccaa..0c5aa2c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([pykolab], 0.6.1)
+AC_INIT([pykolab], 0.6.2)
 AC_SUBST([RELEASE], 1)
 
 AC_CONFIG_SRCDIR(pykolab/constants.py.in)


commit f2d0080611c583d58ad1b0b454912e1397eea313
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Fri Jul 12 14:51:41 2013 +0100

    We can't authenticate a kolab_user_filter specifically, without excluding cyrus-admin

diff --git a/pykolab/auth/ldap/__init__.py b/pykolab/auth/ldap/__init__.py
index e0118d1..082484a 100644
--- a/pykolab/auth/ldap/__init__.py
+++ b/pykolab/auth/ldap/__init__.py
@@ -151,10 +151,7 @@ class LDAP(pykolab.base.Base):
         self.connect()
         self._bind()
 
-        user_filter = self.config_get('kolab_user_filter')
-
-        if user_filter == None:
-            user_filter = self.config_get('user_filter')
+        user_filter = self.config_get('user_filter')
 
         _filter = '(&(|'
 


commit ee0a5b4487017fbb580ce87e8e69ba2e73875896
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Tue Jul 9 14:49:04 2013 +0100

    Make sure events hold the required X-Kolab-MIME-Version: 3.0 header

diff --git a/pykolab/xml/event.py b/pykolab/xml/event.py
index 97a0511..686039b 100644
--- a/pykolab/xml/event.py
+++ b/pykolab/xml/event.py
@@ -872,6 +872,7 @@ class Event(object):
         msg['To'] = ', '.join([x.__str__() for x in self.get_attendees()])
         msg['Date'] = formatdate(localtime=True)
 
+        msg.add_header('X-Kolab-MIME-Version', '3.0')
         msg.add_header('X-Kolab-Type', 'application/x-vnd.kolab.event')
 
         text = utils.multiline_message("""


commit c59e6fcb4649436427cdecb14b2bfb12e1a143b0
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date:   Sat Jul 6 11:06:48 2013 +0100

    Use utf-7 names when deleting folders by wildcard match as well

diff --git a/pykolab/imap/cyrus.py b/pykolab/imap/cyrus.py
index f1f379d..ed3b29f 100644
--- a/pykolab/imap/cyrus.py
+++ b/pykolab/imap/cyrus.py
@@ -193,6 +193,14 @@ class Cyrus(cyruslib.CYRUS):
 
         return server
 
+    def folder_utf7(self, folder):
+        from pykolab import imap_utf7
+        return imap_utf7.encode(folder)
+
+    def folder_utf8(self, folder):
+        from pykolab import imap_utf7
+        return imap_utf7.decode(folder)
+
     def _setquota(self, mailfolder, quota):
         """
             Login to the actual backend server.
@@ -355,7 +363,7 @@ class Cyrus(cyruslib.CYRUS):
             if not mbox['domain'] == None:
                 verify_folder_search = "%s@%s" % (verify_folder_search, mbox['domain'])
 
-            folders = self.lm(verify_folder_search)
+            folders = self.lm(self.folder_utf7(verify_folder_search))
 
             # NOTE: Case also covered is valid hexadecimal folders; won't be the
             # actual check as intended, but doesn't give you anyone else's data




More information about the commits mailing list