mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-03-11 09:04:54 +00:00
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:
parent
4247a0bd5d
commit
a1c1104a61
@ -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
|
||||
|
||||
@ -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']:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user