parent
2ae06a4e47
commit
a3cb2c8c31
@ -1,5 +1,9 @@
|
|||||||
{
|
{
|
||||||
"apps": {},
|
"apps": {},
|
||||||
|
"common": {
|
||||||
|
"email": "admin@example.com",
|
||||||
|
"gmaps-api-key": ""
|
||||||
|
},
|
||||||
"host": {
|
"host": {
|
||||||
"adminpwd": "${ADMINPWD}",
|
"adminpwd": "${ADMINPWD}",
|
||||||
"domain": "spotter.vm",
|
"domain": "spotter.vm",
|
||||||
|
@ -29,6 +29,11 @@ def get_apps():
|
|||||||
load()
|
load()
|
||||||
return data['apps']
|
return data['apps']
|
||||||
|
|
||||||
|
@locked(paths.CONF_LOCK)
|
||||||
|
def get_common():
|
||||||
|
load()
|
||||||
|
return data['common']
|
||||||
|
|
||||||
@locked(paths.CONF_LOCK)
|
@locked(paths.CONF_LOCK)
|
||||||
def get_host():
|
def get_host():
|
||||||
load()
|
load()
|
||||||
@ -55,6 +60,12 @@ def set_host(key, value):
|
|||||||
data['host'][key] = value
|
data['host'][key] = value
|
||||||
save()
|
save()
|
||||||
|
|
||||||
|
@locked(paths.CONF_LOCK)
|
||||||
|
def set_common(key, value):
|
||||||
|
load()
|
||||||
|
data['common'][key] = value
|
||||||
|
save()
|
||||||
|
|
||||||
@locked(paths.CONF_LOCK)
|
@locked(paths.CONF_LOCK)
|
||||||
def set_app(app, key, value):
|
def set_app(app, key, value):
|
||||||
load()
|
load()
|
||||||
|
@ -72,6 +72,11 @@ def rebuild_issue():
|
|||||||
with open(paths.MOTD_FILE, 'w') as f:
|
with open(paths.MOTD_FILE, 'w') as f:
|
||||||
f.write(issue)
|
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):
|
def update_password(oldpassword, newpassword):
|
||||||
# Update LUKS password and adminpwd for WSGI application
|
# Update LUKS password and adminpwd for WSGI application
|
||||||
pwinput = f'{oldpassword}\n{newpassword}'.encode()
|
pwinput = f'{oldpassword}\n{newpassword}'.encode()
|
||||||
|
@ -42,6 +42,7 @@ class WSGIApp:
|
|||||||
Rule('/verify-https', endpoint='verify_http_action', defaults={'proto': 'https'}),
|
Rule('/verify-https', endpoint='verify_http_action', defaults={'proto': 'https'}),
|
||||||
Rule('/verify-http', endpoint='verify_http_action', defaults={'proto': 'http'}),
|
Rule('/verify-http', endpoint='verify_http_action', defaults={'proto': 'http'}),
|
||||||
Rule('/update-cert', endpoint='update_cert_action'),
|
Rule('/update-cert', endpoint='update_cert_action'),
|
||||||
|
Rule('/update-common', endpoint='update_common_action'),
|
||||||
Rule('/update-repo', endpoint='update_repo_action'),
|
Rule('/update-repo', endpoint='update_repo_action'),
|
||||||
Rule('/update-app-visibility', endpoint='update_app_visibility_action'),
|
Rule('/update-app-visibility', endpoint='update_app_visibility_action'),
|
||||||
Rule('/update-app-autostart', endpoint='update_app_autostart_action'),
|
Rule('/update-app-autostart', endpoint='update_app_autostart_action'),
|
||||||
@ -172,7 +173,8 @@ class WSGIApp:
|
|||||||
table = self.render_setup_apps_table(request)
|
table = self.render_setup_apps_table(request)
|
||||||
message = self.get_session_message(request)
|
message = self.get_session_message(request)
|
||||||
repo_conf = vmmgr.get_repo_conf()
|
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):
|
def render_setup_apps_table(self, request):
|
||||||
lang = request.session.lang
|
lang = request.session.lang
|
||||||
@ -351,6 +353,16 @@ class WSGIApp:
|
|||||||
url = net.compile_url(host['domain'], host['port'])
|
url = net.compile_url(host['domain'], host['port'])
|
||||||
return self.render_json({'ok': request.session.lang.cert_installed(url, url)})
|
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):
|
def update_repo_action(self, request):
|
||||||
# Update repository URL and credentials
|
# Update repository URL and credentials
|
||||||
url = request.form['repourl']
|
url = request.form['repourl']
|
||||||
|
@ -19,6 +19,7 @@ class WSGILang:
|
|||||||
'cert_installed': 'Certifikát byl úspěšně nainstalován. Přejděte na URL <a href="{}">{}</a> nebo restartujte webový prohlížeč pro jeho načtení.',
|
'cert_installed': 'Certifikát byl úspěšně nainstalován. Přejděte na URL <a href="{}">{}</a> nebo restartujte webový prohlížeč pro jeho načtení.',
|
||||||
'invalid_email': 'Zadaný e-mail "{}" není platný.',
|
'invalid_email': 'Zadaný e-mail "{}" není platný.',
|
||||||
'invalid_url': 'Zadaná adresa "{}" 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.',
|
'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.',
|
'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í.',
|
'installation_in_progress': 'Probíhá instalace jiného balíku. Vyčkejte na její dokončení.',
|
||||||
|
@ -49,6 +49,34 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="setup-box">
|
||||||
|
<h2>Nastavení aplikací</h2>
|
||||||
|
<p>Společné nastavení sdílené některými aplikacemi.</p>
|
||||||
|
<form id="update-common" action="/update-common" method="post">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>E-mail</td>
|
||||||
|
<td><input type="text" name="email" value="{{ common['email'] }}"></td>
|
||||||
|
<td class="remark">Administrativní e-mail na který budou doručovány zprávy a upozornění z aplikací. Stejná e-mailová adresa bude také využita některými aplikacemi pro odesílání zpráv uživatelům.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Google Maps API klíč</td>
|
||||||
|
<td><input type="text" name="gmaps-api-key" value="{{ common['gmaps-api-key'] }}"></td>
|
||||||
|
<td class="remark">API klíč pro službu Google Maps, která je využita některými aplikacemi.</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> </td>
|
||||||
|
<td colspan="2">
|
||||||
|
<input type="submit" id="common-submit" value="Nastavit hodnoty">
|
||||||
|
{% if message and message[0] == 'common' %}
|
||||||
|
<div class="{{ message[1] }}">{{ message[2] }}</div>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="setup-box">
|
<div class="setup-box">
|
||||||
<h2>Správce virtuálního stroje</h2>
|
<h2>Správce virtuálního stroje</h2>
|
||||||
<p>Změna hesla k šifrovanému diskovému oddílu a administračnímu rozhraní.</p>
|
<p>Změna hesla k šifrovanému diskovému oddílu a administračnímu rozhraní.</p>
|
||||||
|
Loading…
Reference in New Issue
Block a user