From a1c1104a61cbaa90a46e5aec1c643f9cc64ea726 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Wed, 11 Mar 2020 17:06:59 -0700 Subject: [PATCH] pagekite: Merge set-kite and set-frontend actions - Simplifies the form submission code. - When service is disabled, don't add the abort_not_configured configuration flag. There is not need to change the configuration as disabling the daemon from running is reliable enough. - When the configuration is set for the first time, drop the abort_not_configured flag and don't ever add it back. - Set default values properly for frontend fields when no value is supplied. Signed-off-by: Sunil Mohan Adapa Reviewed-by: Veiko Aasa --- actions/pagekite | 56 ++++++++++---------------------- plinth/modules/pagekite/forms.py | 40 +++++++++++++---------- 2 files changed, 40 insertions(+), 56 deletions(-) diff --git a/actions/pagekite b/actions/pagekite index b560062e2..c36c70c74 100755 --- a/actions/pagekite +++ b/actions/pagekite @@ -44,18 +44,13 @@ def parse_arguments(): # Configuration subparsers.add_parser('get-config', help='Return current configuration') - - # Frontend - set_frontend = subparsers.add_parser('set-frontend', - help='Set pagekite frontend') - set_frontend.add_argument('url', help='frontend url') - - # Kite details (name + secret) - set_kite = subparsers.add_parser( - 'set-kite', - help='Configure kite name and its secret. Secret is read from stdin.') - set_kite.add_argument('--kite-name', - help='Name of the kite (eg: mybox.pagekite.me)') + set_config = subparsers.add_parser( + 'set-config', + help='Configure kite name, its secret and frontend. Secret is read ' + 'from stdin.') + set_config.add_argument('--kite-name', + help='Name of the kite (eg: mybox.pagekite.me)') + set_config.add_argument('--frontend', help='Frontend url') # Add/remove pagekite services (service_on entries) add_service = subparsers.add_parser('add-service', @@ -76,8 +71,6 @@ def subcommand_restart(_): def subcommand_start_and_enable(_): - aug.remove(PATHS['abort_not_configured']) - aug.save() # 'start' alone sometimes fails, even if the service is not running action_utils.service_restart('pagekite') print('enabled') @@ -85,8 +78,6 @@ def subcommand_start_and_enable(_): def subcommand_stop_and_disable(_): action_utils.service_stop('pagekite') - aug.set(PATHS['abort_not_configured'], '') - aug.save() print('disabled') @@ -144,26 +135,22 @@ def subcommand_get_config(_): print(json.dumps(status)) -def subcommand_set_frontend(arguments): - """Set pagekite frontend url, taking care of defaults and pagekite.net""" - frontend_domain = arguments.url.split(':')[0] +def subcommand_set_config(arguments): + """Set pagekite kite name, secret and frontend URL.""" + aug.remove(PATHS['abort_not_configured']) + + aug.set(PATHS['kitename'], arguments.kite_name) + aug.set(PATHS['kitesecret'], sys.stdin.read()) + + frontend_domain = arguments.frontend.split(':')[0] if frontend_domain in ('pagekite.net', 'defaults', 'default'): - enable_pagekitenet_frontend() + aug.set(PATHS['defaults'], '') + aug.remove(PATHS['frontend']) else: aug.remove(PATHS['defaults']) - aug.set(PATHS['frontend'], arguments.url) - aug.save() + aug.set(PATHS['frontend'], arguments.frontend) - -def enable_pagekitenet_frontend(): - """Enable using default pageket.net frontend - - This disables any other frontends. - """ - aug.set(PATHS['defaults'], '') - aug.remove(PATHS['frontend']) aug.save() - print("enabled") def subcommand_remove_service(arguments): @@ -240,13 +227,6 @@ def get_new_service_path(protocol): return os.path.join(root, str(new_index)) -def subcommand_set_kite(arguments): - """Set details of the kite""" - aug.set(PATHS['kitename'], arguments.kite_name) - aug.set(PATHS['kitesecret'], sys.stdin.read()) - aug.save() - - def augeas_load(): """Initialize Augeas.""" global aug diff --git a/plinth/modules/pagekite/forms.py b/plinth/modules/pagekite/forms.py index aeba83ff9..389bd3dcf 100644 --- a/plinth/modules/pagekite/forms.py +++ b/plinth/modules/pagekite/forms.py @@ -69,26 +69,30 @@ class ConfigurationForm(AppForm): def save(self, request): """Save the form on submission after validation.""" - old = self.initial - new = self.cleaned_data - LOGGER.info('New status is - %s', new) + def _filter(data): + return { + key: str(value) + for key, value in data.items() if key in + ['kite_name', 'kite_secret', 'server_domain', 'server_port'] + } + + if not self.cleaned_data['server_domain']: + self.cleaned_data['server_domain'] = 'pagekite.net' + + if not self.cleaned_data['server_port']: + self.cleaned_data['server_port'] = '80' + + old = _filter(self.initial) + new = _filter(self.cleaned_data) if old != new: - config_changed = False - - if old['kite_name'] != new['kite_name'] or \ - old['kite_secret'] != new['kite_secret']: - utils.run(['set-kite', '--kite-name', new['kite_name']], - input=new['kite_secret'].encode()) - messages.success(request, _('Kite details set')) - config_changed = True - - if old['server_domain'] != new['server_domain'] or \ - old['server_port'] != new['server_port']: - server = "%s:%s" % (new['server_domain'], new['server_port']) - utils.run(['set-frontend', server]) - messages.success(request, _('Pagekite server set')) - config_changed = True + frontend = f"{new['server_domain']}:{new['server_port']}" + utils.run([ + 'set-config', '--kite-name', new['kite_name'], '--frontend', + frontend + ], input=new['kite_secret'].encode()) + messages.success(request, _('Configuration updated')) + config_changed = True if old['is_enabled'] != new['is_enabled']: if new['is_enabled']: