Compare commits
9 Commits
enforce-py
...
malberts/f
Author | SHA1 | Date | |
---|---|---|---|
0bb8913794 | |||
d515051244 | |||
a708768c7a | |||
5048d33cf1 | |||
87a5ab0b07 | |||
7a75569e5d | |||
7477f89a54 | |||
7b4845a877 | |||
35b4bbeec1 |
@ -54,6 +54,14 @@ def files(options):
|
||||
files = options.file.split(',')
|
||||
for file in files:
|
||||
configfile = ConfigObj(file)
|
||||
|
||||
# Check if the settings section key is present in the file
|
||||
try:
|
||||
value = configfile['setting']
|
||||
except KeyError:
|
||||
print('Setting does not exist in', file)
|
||||
continue
|
||||
|
||||
if configfile['setting'].as_bool('use_zarafa_credentials'):
|
||||
username = options.user
|
||||
else:
|
||||
|
@ -2,8 +2,10 @@
|
||||
#encoding: utf-8
|
||||
|
||||
import kopano
|
||||
from kopano.errors import NotFoundError
|
||||
from MAPI.Util import *
|
||||
import json
|
||||
import sys
|
||||
|
||||
|
||||
def opt_args():
|
||||
@ -24,14 +26,22 @@ def main():
|
||||
options, args = opt_args()
|
||||
|
||||
if not options.user:
|
||||
print 'Please use:\n %s --user <username>' % (sys.argv[0])
|
||||
print('Please use:\n %s --user <username>' % (sys.argv[0]))
|
||||
sys.exit(0)
|
||||
|
||||
user = kopano.Server(options).user(options.user)
|
||||
try:
|
||||
webapp = user.store.prop(0X6773001F).value
|
||||
except NotFoundError:
|
||||
webapp = dict(recipients=[])
|
||||
|
||||
webapp = json.loads(webapp)
|
||||
|
||||
if options.backup:
|
||||
if len(webapp['recipients']) == 0:
|
||||
print('Property PR_EC_RECIPIENT_HISTORY_JSON_W not found . User might have never used recipient history before.', file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
f = open('%s.json' % user.name, 'w')
|
||||
f.write(json.dumps(webapp, sort_keys=True,
|
||||
indent=4, separators=(',', ': ')))
|
||||
@ -50,8 +60,8 @@ def main():
|
||||
sys.exit(0)
|
||||
|
||||
if options.list:
|
||||
print json.dumps(webapp, sort_keys=True,
|
||||
indent=4, separators=(',', ': '))
|
||||
print(json.dumps(webapp, sort_keys=True,
|
||||
indent=4, separators=(',', ': ')))
|
||||
sys.exit(0)
|
||||
|
||||
if options.remove:
|
||||
@ -59,7 +69,7 @@ def main():
|
||||
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'])
|
||||
print('removing contact %s [%s]' % (rec['display_name'], rec['smtp_address']))
|
||||
else:
|
||||
newlist['recipients'].append(rec)
|
||||
|
||||
|
@ -6,6 +6,9 @@ WebApp admin is a command-line interface to modify, inject and export WebApp set
|
||||
|
||||
# Example Usage
|
||||
|
||||
Overview of all options:
|
||||
> python3 webapp_admin -h
|
||||
|
||||
Reset WebApp settings
|
||||
> python3 webapp_admin -u john --reset
|
||||
|
||||
@ -23,6 +26,8 @@ If you want to make a change for all users pass the --all-users parameter. Examp
|
||||
- OpenSSL
|
||||
- dotty_dict
|
||||
|
||||
For debian 10 python3-pkg-resources is required
|
||||
|
||||
# License
|
||||
|
||||
licensed under GNU Affero General Public License v3.
|
@ -62,8 +62,8 @@ def opt_args(print_help=None):
|
||||
group = OptionGroup(parser, "Categories", "")
|
||||
group.add_option("--export-categories", dest="export_categories", action="store_true", help="Export Categories (name and color)")
|
||||
group.add_option("--import-categories", dest="import_categories", action="store_true", help="Import Categories (name and color)")
|
||||
|
||||
parser.add_option_group(group)
|
||||
|
||||
# S/MIME option group
|
||||
group = OptionGroup(parser, "S/MIME", "")
|
||||
group.add_option("--export-smime", dest="export_smime", action="store_true", help="Export private S/MIME certificate")
|
||||
@ -81,8 +81,9 @@ def opt_args(print_help=None):
|
||||
group.add_option("--icons", dest="icons", action="store", help="Change icons (e.g. breeze)")
|
||||
group.add_option("--htmleditor", dest="htmleditor", action="store", help="Change the HTML editor (e.g. full_tinymce)")
|
||||
group.add_option("--remove-state", dest="remove_state", action="store_true", help="Remove all the state settings")
|
||||
group.add_option("--add-safesender", dest="addsender", action="store", help="Add domain to safe sender list")
|
||||
group.add_option("--polling-interval", dest="pollinginterval", action="store", help="Change the polling interval (seconds)")
|
||||
group.add_option("--add-safesender", dest="add_sender", action="store", help="Add domain to safe sender list")
|
||||
group.add_option("--polling-interval", dest="polling_interval", action="store", help="Change the polling interval (seconds)")
|
||||
group.add_option("--calendar-resolution", dest="calendar_resolution", action="store", help="Change the calendar resolution (minutes)")
|
||||
parser.add_option_group(group)
|
||||
|
||||
# Advanced option group
|
||||
@ -272,6 +273,7 @@ def restore_signature(user, filename, replace=None, default=None):
|
||||
|
||||
write_settings(user, json.dumps(settings))
|
||||
|
||||
|
||||
"""
|
||||
Export categories from users store
|
||||
|
||||
@ -572,23 +574,38 @@ def main():
|
||||
print('Removed state settings for {}'.format(user.name))
|
||||
|
||||
# Add sender to safe sender list
|
||||
if options.addsender:
|
||||
if options.add_sender:
|
||||
settings = read_settings(user)
|
||||
setting = 'settings.zarafa.v1.contexts.mail.safe_senders_list = {}'.format(options.addsender)
|
||||
setting = 'settings.zarafa.v1.contexts.mail.safe_senders_list = {}'.format(options.add_sender)
|
||||
advanced_inject(user, setting, 'list')
|
||||
print('{}'.format(options.addsender), 'Added to safe sender list')
|
||||
print('{}'.format(options.add_sender), 'Added to safe sender list for {}'.format(user.name))
|
||||
|
||||
# Polling interval
|
||||
if options.pollinginterval:
|
||||
if options.polling_interval:
|
||||
try:
|
||||
value = int(options.pollinginterval)
|
||||
value = int(options.polling_interval)
|
||||
except ValueError:
|
||||
print('Invalid number used. Please specify the value in seconds')
|
||||
sys.exit(1)
|
||||
settings = read_settings(user)
|
||||
setting = 'settings.zarafa.v1.main.reminder.polling_interval = {}'.format(options.pollinginterval)
|
||||
setting = 'settings.zarafa.v1.main.reminder.polling_interval = {}'.format(options.polling_interval)
|
||||
advanced_inject(user, setting)
|
||||
print('Polling interval changed to', '{}'.format(options.pollinginterval))
|
||||
print('Polling interval changed to', '{}'.format(options.polling_interval), 'for {}'.format(user.name))
|
||||
|
||||
# Calendar resolution (zoom level)
|
||||
if options.calendar_resolution:
|
||||
try:
|
||||
value = int(options.calendar_resolution)
|
||||
except ValueError:
|
||||
print('Invalid number used. Please specify the value in minutes')
|
||||
sys.exit(1)
|
||||
if value < 5 or value > 60:
|
||||
print('Unsupported value used. Use a number between 5 and 60')
|
||||
sys.exit(1)
|
||||
settings = read_settings(user)
|
||||
setting = 'settings.zarafa.v1.contexts.calendar.default_zoom_level = {}'.format(options.calendar_resolution)
|
||||
advanced_inject(user, setting)
|
||||
print('Calendar resolution changed to', '{}'.format(options.calendar_resolution), 'for {}'.format(user.name))
|
||||
|
||||
# Always at last!!!
|
||||
if options.reset:
|
||||
|
Reference in New Issue
Block a user