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 <sunil@medhas.org>
Reviewed-by: Veiko Aasa <veiko17@disroot.org>
This commit is contained in:
Sunil Mohan Adapa 2020-03-11 17:06:59 -07:00 committed by Veiko Aasa
parent 4247a0bd5d
commit a1c1104a61
No known key found for this signature in database
GPG Key ID: 478539CAE680674E
2 changed files with 40 additions and 56 deletions

View File

@ -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

View File

@ -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']: