2 commits - pykolab/imap
Jeroen van Meeuwen
vanmeeuwen at kolabsys.com
Tue Sep 4 14:14:05 CEST 2012
pykolab/imap/__init__.py | 54 +++++++----------------------------------------
pykolab/imap/cyrus.py | 7 +++---
2 files changed, 13 insertions(+), 48 deletions(-)
New commits:
commit 1895521a9de5b7e852d8b0ac3b5181c0be913b6b
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date: Tue Sep 4 12:35:36 2012 +0100
Make sure we don't attempt to parse a mailbox path in full, while we are logged in as a user
diff --git a/pykolab/imap/cyrus.py b/pykolab/imap/cyrus.py
index 02a49b4..bc2a13e 100644
--- a/pykolab/imap/cyrus.py
+++ b/pykolab/imap/cyrus.py
@@ -224,12 +224,13 @@ class Cyrus(cyruslib.CYRUS):
"""
Login to the actual backend server, then set annotation.
"""
- server = self.find_mailfolder_server(mailfolder)
+ try:
+ server = self.find_mailfolder_server(mailfolder)
+ except:
+ server = self.server
log.debug(_("Setting annotation %s on folder %s") % (annotation,mailfolder), level=8)
- #if annotation.startswith('/private'):
-
try:
self.setannotation(mailfolder, annotation, value, shared)
except cyruslib.CYRUSError, e:
commit 34d5b5c37ed51c3391f683179f04d2a88056637a
Author: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen at kolabsys.com>
Date: Tue Sep 4 12:34:57 2012 +0100
Remove setting / removing cyrus-admin privileges before setting annotations, as we now login in as the user before setting any annotations
diff --git a/pykolab/imap/__init__.py b/pykolab/imap/__init__.py
index 18e0528..cabd059 100644
--- a/pykolab/imap/__init__.py
+++ b/pykolab/imap/__init__.py
@@ -275,35 +275,11 @@ class IMAP(object):
shared = False
metadata_path = metadata_path.replace('/private/', '/')
- backend = conf.get('kolab', 'imap_backend')
-
- if not self.domain == None:
- if conf.has_section(self.domain) and conf.has_option(self.domain, 'imap_backend'):
- backend = conf.get(self.domain, 'imap_backend')
-
if not shared:
log.warning(_("Private annotations need to be set using the appropriate user account."))
- admin_login = conf.get(backend, 'admin_login')
-
- admin_acl = None
-
- acls = self.list_acls(folder)
- if acls.has_key(admin_login):
- admin_acl = acls[admin_login]
-
- if admin_acl == None:
- self.set_acl(folder, admin_login, 'lrsipwa')
- elif not 'w' in admin_acl:
- self.set_acl(folder, admin_login, '%sw' % (admin_acl))
-
self.imap._setannotation(folder, metadata_path, metadata_value, shared)
- if admin_acl == None:
- self.set_acl(folder, admin_login, '')
- elif not 'w' in admin_acl:
- self.set_acl(folder, admin_login, admin_acl)
-
def shared_folder_create(self, folder_path, server=None):
"""
Create a shared folder.
@@ -405,22 +381,18 @@ class IMAP(object):
level=8
)
+ backend = conf.get('kolab', 'imap_backend')
+
+ admin_login = conf.get(backend, 'admin_login')
+ admin_password = conf.get(backend, 'admin_password')
+
+ self.connect(login=False)
+ self.login_plain(admin_login, admin_password, folder)
+
for additional_folder in additional_folders.keys():
_add_folder = {}
- if len(folder.split('@')) > 1:
- folder_name = "user%(separator)s%(username)s%(separator)s%(additional_folder_name)s@%(domainname)s"
- _add_folder['username'] = folder.split('@')[0]
- _add_folder['domainname'] = folder.split('@')[1]
- _add_folder['additional_folder_name'] = additional_folder
- _add_folder['separator'] = self.imap.separator
- folder_name = folder_name % _add_folder
- else:
- folder_name = "user%(separator)s%(username)s%(separator)s%(additional_folder_name)s" % {
- "username": folder,
- "separator": self.imap.separator,
- "additional_folder_name": additional_folder
- }
+ folder_name = additional_folder
try:
self.imap.cm(folder_name)
@@ -449,8 +421,6 @@ class IMAP(object):
"%s" % (additional_folders[additional_folder]["acls"][acl])
)
- backend = conf.get('kolab', 'imap_backend')
-
if len(folder.split('@')) > 1:
domain = folder.split('@')[1]
domain_suffix = "@%s" % (domain)
@@ -468,12 +438,6 @@ class IMAP(object):
uri = None
log.debug(_("Subscribing user to the additional folders"), level=8)
- # Get the credentials
- admin_login = conf.get(backend, 'admin_login')
- admin_password = conf.get(backend, 'admin_password')
-
- self.connect(login=False)
- self.login_plain(admin_login, admin_password, folder)
_tests = []
More information about the commits
mailing list