From 809e97d77b912112109b36a38c0137d3e3b9aa27 Mon Sep 17 00:00:00 2001 From: Robin van Genderen Date: Thu, 28 Jul 2016 10:47:25 +0200 Subject: [PATCH] add readme and remove-recipients.py script --- readme.md | 27 +++++++++++++++++++++ remove-recipients.py | 56 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 readme.md create mode 100644 remove-recipients.py diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..aba71f6 --- /dev/null +++ b/readme.md @@ -0,0 +1,27 @@ +remove-recipients.py +==================== +Remove recipients in webapp + + +####Usage: + +######List recipients + + python remove-recipients.py --user --list + +######Remove recipient +Remove options is searching in display_name, smtp_address or email_address. + + python remove-recipients.py --user --remove + +######Clear history + + python remove-recipients.py --user --remove-all + + +####Example + +Remove all recipients that have example.com in there display_name, smtp_address or email_address + + python remove-recipients.py --user user --remove example.com + \ No newline at end of file diff --git a/remove-recipients.py b/remove-recipients.py new file mode 100644 index 0000000..8f3dc54 --- /dev/null +++ b/remove-recipients.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import kopano +from MAPI.Util import * +import json + + +def opt_args(): + parser = kopano.parser('skpcfm') + parser.add_option("--user", dest="user", action="store", help="Run script for user") + parser.add_option("--list", dest="list", action="store_true", help="List recipients history") + parser.add_option("--remove", dest="remove", action="store", help="Remove recipients ") + parser.add_option("--remove-all", dest="removeall", action="store_true", help="Remove complete recipients history") + parser.add_option("--dry-run", dest="dryrun", action="store_true", help="Test script") + + return parser.parse_args() + + +def main(): + options, args = opt_args() + + if not options.user: + sys.exit('Please use:\n %s --user ' % (sys.argv[0])) + user = kopano.Server(options).user(options.user) + + webapp = user.store.prop(0X6773001F).value + webapp = json.loads(webapp) + + if options.list: + print json.dumps(webapp, sort_keys=True, + indent=4, separators=(',', ': ')) + + if options.remove: + newlist = json.loads('{"recipients":[]}') + + for rec in webapp['recipients']: + if options.remove in rec['display_name'] or options.remove in rec['smtp_address'] \ + or options.remove in rec['email_address']: + print 'removing contact %s [%s]' % (rec['display_name'], rec['smtp_address']) + else: + newlist['recipients'].append(rec) + + if not options.dryrun: + user.store.mapiobj.SetProps([SPropValue(0X6773001F, u'%s' % json.dumps(newlist))]) + user.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE) + + if options.removeall: + newlist = json.loads('{"recipients":[]}') + if not options.dryrun: + user.store.mapiobj.SetProps([SPropValue(0X6773001F, u'%s' % json.dumps(newlist))]) + user.store.mapiobj.SaveChanges(KEEP_OPEN_READWRITE) + + +if __name__ == "__main__": + main() \ No newline at end of file