#!/usr/bin/env python # coding=utf-8 # vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 """ Set A Default WebApp Signature. """ import json import kopano from MAPI.Tags import * def read_settings(user): try: mapisettings = user.store.prop(PR_EC_WEBACCESS_SETTINGS_JSON).value settings = json.loads(mapisettings) except Exception as e: print '%s: Has no or no valid WebApp settings creating empty config tree' % user.name settings = json.loads( '{"settings": {"zarafa": {"v1": {"contexts": {"mail": {}}}}}}') return settings def write_settings(user, webappsettings): try: user.store.create_prop(PR_EC_WEBACCESS_SETTINGS_JSON, webappsettings) except Exception as e: print '%s: Error Writing WebApp settings for user: %s' % (e, user.name) def main(options): with open(options.file, 'r') as sigfile: signaturehtml = sigfile.read() signatureid = '1' signaturename = options.file.replace('template', 'default').replace('-', ' ').replace('.html', '').title().split('/')[-1].replace(' Nl', ' NL').replace( ' De', ' DE') signaturecontent = dict( {u'name': signaturename, u'content': signaturehtml, u'isHTML': True}) runusers = [] if options.allusers: for ruser in server.users(remote=False): runusers.append(ruser.name) else: runusers = options.users for username in runusers: try: user = server.user(username) webappsettings = read_settings(user) except Exception as e: print e continue if not len(webappsettings['settings']['zarafa']['v1']['contexts']['mail']): print "%s: Adding config tree." % user.name webappsettings['settings']['zarafa'][ 'v1']['contexts']['mail'] = dict({}) if 'signatures' not in list(webappsettings['settings']['zarafa']['v1']['contexts']['mail']): print "%s: Adding Signature settings to config tree." % user.name webappsettings['settings']['zarafa']['v1'][ 'contexts']['mail']['signatures'] = dict({}) if 'all' not in list(webappsettings['settings']['zarafa']['v1']['contexts']['mail']['signatures']): print "%s: Empty Signature settings detected." % user.name webappsettings['settings']['zarafa']['v1']['contexts'][ 'mail']['signatures'] = dict({'all': dict({})}) print '%s: Adding/Replacing Default Signature with %s' % (user.name, signaturename) webappsettings['settings']['zarafa']['v1']['contexts']['mail']['signatures']['all'][ signatureid] = signaturecontent webappsettings['settings']['zarafa']['v1']['contexts'][ 'mail']['signatures']['new_message'] = signatureid webappsettings['settings']['zarafa']['v1']['contexts']['mail']['signatures'][ 'replyforward_message'] = signatureid write_settings(user, json.dumps(webappsettings)) if __name__ == '__main__': parser = kopano.parser('uUPckpsC') # select common cmd-line options parser.add_option('-a', dest='allusers', action='store_true', default=None, help='run program for all local users') parser.add_option('-f', dest='file', action='store', default=None, help='signature filename') options, args = parser.parse_args() server = kopano.Server(options=options) if (options.users or options.allusers) and options.file: main(options)