diff options
author | Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> | 2012-11-01 19:21:12 +0000 |
---|---|---|
committer | Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> | 2012-11-03 16:20:21 +0000 |
commit | 171fbba960ab71675cade960beefd1a6a805b3a7 (patch) | |
tree | 48a05dc02352f4d1f3cb821b3d0d8c9633f970d2 /pykolab | |
parent | 66db6abe42a2514c829b9a8e0b5c65610a784571 (diff) | |
download | pykolab-171fbba960ab71675cade960beefd1a6a805b3a7.tar.gz |
Add a command to clean up ACLs
Diffstat (limited to 'pykolab')
-rw-r--r-- | pykolab/cli/cmd_acl_cleanup.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pykolab/cli/cmd_acl_cleanup.py b/pykolab/cli/cmd_acl_cleanup.py new file mode 100644 index 0000000..80d5396 --- /dev/null +++ b/pykolab/cli/cmd_acl_cleanup.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# Copyright 2010-2012 Kolab Systems AG (http://www.kolabsys.com) +# +# Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen a kolabsys.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 3 or, at your option, any later version +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +import commands + +import pykolab + +from pykolab.imap import IMAP +from pykolab.translate import _ + +log = pykolab.getLogger('pykolab.cli') +conf = pykolab.getConf() + +def __init__(): + commands.register('acl_cleanup', execute, description=description()) + +def description(): + return _("Clean up ACLs that use identifiers that no longer exist") + +def execute(*args, **kw): + """ + List mailboxes + """ + + try: + aci_subject = conf.cli_args.pop(0) + except: + aci_subject = None + + imap = IMAP() + imap.connect() + + folders = imap.lm() + + for folder in folders: + acls = imap.list_acls(folder) + + if not aci_subject == None: + if aci_subject in acls.keys(): + log.debug(_("Deleting ACL %s for subject %s on folder %s") % ( + acls[aci_subject], + aci_subject, + folder + ), level=8) + + imap.set_acl(folder, aci_subject, '') + + #else: + #for _aci_subject in acls.keys(): + # connect to auth(!) + # find recipient result_attr=aci_subject + # if no entry, expire acl
\ No newline at end of file |