diff --git a/etc/vmmgr/config.json b/etc/vmmgr/config.json index c6a2b30..03c8796 100644 --- a/etc/vmmgr/config.json +++ b/etc/vmmgr/config.json @@ -1,5 +1,9 @@ { "apps": {}, + "common": { + "email": "admin@example.com", + "gmaps-api-key": "" + }, "host": { "adminpwd": "${ADMINPWD}", "domain": "spotter.vm", diff --git a/usr/lib/python3.8/vmmgr/config.py b/usr/lib/python3.8/vmmgr/config.py index ffe1176..5c82704 100644 --- a/usr/lib/python3.8/vmmgr/config.py +++ b/usr/lib/python3.8/vmmgr/config.py @@ -29,6 +29,11 @@ def get_apps(): load() return data['apps'] +@locked(paths.CONF_LOCK) +def get_common(): + load() + return data['common'] + @locked(paths.CONF_LOCK) def get_host(): load() @@ -55,6 +60,12 @@ def set_host(key, value): data['host'][key] = value save() +@locked(paths.CONF_LOCK) +def set_common(key, value): + load() + data['common'][key] = value + save() + @locked(paths.CONF_LOCK) def set_app(app, key, value): load() diff --git a/usr/lib/python3.8/vmmgr/vmmgr.py b/usr/lib/python3.8/vmmgr/vmmgr.py index 2ff7b83..7bd15af 100644 --- a/usr/lib/python3.8/vmmgr/vmmgr.py +++ b/usr/lib/python3.8/vmmgr/vmmgr.py @@ -72,6 +72,11 @@ def rebuild_issue(): with open(paths.MOTD_FILE, 'w') as f: f.write(issue) +def update_common_settings(email, gmaps_api_key): + # Update common configuration values + config.set_common('email', email) + config.set_common('gmaps-api-key', gmaps_api_key) + def update_password(oldpassword, newpassword): # Update LUKS password and adminpwd for WSGI application pwinput = f'{oldpassword}\n{newpassword}'.encode() diff --git a/usr/lib/python3.8/vmmgr/wsgiapp.py b/usr/lib/python3.8/vmmgr/wsgiapp.py index 434ef03..b23d733 100644 --- a/usr/lib/python3.8/vmmgr/wsgiapp.py +++ b/usr/lib/python3.8/vmmgr/wsgiapp.py @@ -42,6 +42,7 @@ class WSGIApp: Rule('/verify-https', endpoint='verify_http_action', defaults={'proto': 'https'}), Rule('/verify-http', endpoint='verify_http_action', defaults={'proto': 'http'}), Rule('/update-cert', endpoint='update_cert_action'), + Rule('/update-common', endpoint='update_common_action'), Rule('/update-repo', endpoint='update_repo_action'), Rule('/update-app-visibility', endpoint='update_app_visibility_action'), Rule('/update-app-autostart', endpoint='update_app_autostart_action'), @@ -172,7 +173,8 @@ class WSGIApp: table = self.render_setup_apps_table(request) message = self.get_session_message(request) repo_conf = vmmgr.get_repo_conf() - return self.render_html('setup-apps.html', request, repo_conf=repo_conf, repo_error=repo_error, table=table, message=message) + common = config.get_common() + return self.render_html('setup-apps.html', request, repo_conf=repo_conf, repo_error=repo_error, table=table, message=message, common=common) def render_setup_apps_table(self, request): lang = request.session.lang @@ -351,6 +353,16 @@ class WSGIApp: url = net.compile_url(host['domain'], host['port']) return self.render_json({'ok': request.session.lang.cert_installed(url, url)}) + def update_common_action(self, request): + # Update common settings shared between apps - admin e-mail address, Google Maps API key + email = request.form['email'] + if not validator.is_valid_email(email): + request.session['msg'] = f'common:error:{request.session.lang.invalid_email(email)}' + else: + vmmgr.update_common_settings(email, request.form['gmaps-api-key']) + request.session['msg'] = f'common:info:{request.session.lang.common_updated()}' + return redirect('/setup-apps') + def update_repo_action(self, request): # Update repository URL and credentials url = request.form['repourl'] diff --git a/usr/lib/python3.8/vmmgr/wsgilang.py b/usr/lib/python3.8/vmmgr/wsgilang.py index cf1ef1c..292ef00 100644 --- a/usr/lib/python3.8/vmmgr/wsgilang.py +++ b/usr/lib/python3.8/vmmgr/wsgilang.py @@ -19,6 +19,7 @@ class WSGILang: 'cert_installed': 'Certifikát byl úspěšně nainstalován. Přejděte na URL {} nebo restartujte webový prohlížeč pro jeho načtení.', 'invalid_email': 'Zadaný e-mail "{}" není platný.', 'invalid_url': 'Zadaná adresa "{}" není platná.', + 'common_updated': 'Nastavení aplikací bylo úspěšně změněno. Pokud je některá z aplikací spuštěna, změny se projeví po jejím restartu.', 'repo_updated': 'Nastavení distribučního serveru bylo úspěšně změněno.', 'stop_start_error': 'Došlo k chybě při spouštění/zastavování. Zkuste akci opakovat nebo restartuje virtuální stroj.', 'installation_in_progress': 'Probíhá instalace jiného balíku. Vyčkejte na její dokončení.', diff --git a/usr/share/vmmgr/templates/setup-apps.html b/usr/share/vmmgr/templates/setup-apps.html index 56cccd7..1a8e3ac 100644 --- a/usr/share/vmmgr/templates/setup-apps.html +++ b/usr/share/vmmgr/templates/setup-apps.html @@ -49,6 +49,34 @@ +
Společné nastavení sdílené některými aplikacemi.
+ +Změna hesla k šifrovanému diskovému oddílu a administračnímu rozhraní.