Implement demo mode
This commit is contained in:
parent
3fe8ae2735
commit
ccec8faff6
@ -26,6 +26,7 @@ logging.basicConfig(level=logging.WARNING)
|
|||||||
|
|
||||||
class WSGIApp:
|
class WSGIApp:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.demo = config.get_common().get('demo')
|
||||||
self.queue = ActionQueue()
|
self.queue = ActionQueue()
|
||||||
self.jinja_env = Environment(loader=FileSystemLoader('/usr/share/vmmgr/templates'), autoescape=True, lstrip_blocks=True, trim_blocks=True)
|
self.jinja_env = Environment(loader=FileSystemLoader('/usr/share/vmmgr/templates'), autoescape=True, lstrip_blocks=True, trim_blocks=True)
|
||||||
self.url_map = Map((
|
self.url_map = Map((
|
||||||
@ -289,6 +290,9 @@ class WSGIApp:
|
|||||||
return self.render_html('setup-remote.html', request, authorized_keys=authorized_keys, wg_conf=wg_conf, message=message)
|
return self.render_html('setup-remote.html', request, authorized_keys=authorized_keys, wg_conf=wg_conf, message=message)
|
||||||
|
|
||||||
def update_host_action(self, request):
|
def update_host_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
return self.render_json({'error': request.session.lang.not_available_in_demo()})
|
||||||
# Update domain and port, then restart nginx
|
# Update domain and port, then restart nginx
|
||||||
domain = request.form['domain']
|
domain = request.form['domain']
|
||||||
port = request.form['port']
|
port = request.form['port']
|
||||||
@ -339,6 +343,9 @@ class WSGIApp:
|
|||||||
return self.render_json({'ok': request.session.lang.http_hosts_ok(port)})
|
return self.render_json({'ok': request.session.lang.http_hosts_ok(port)})
|
||||||
|
|
||||||
def update_cert_action(self, request):
|
def update_cert_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
return self.render_json({'error': request.session.lang.not_available_in_demo()})
|
||||||
# Update certificate - either request via Let's Encrypt or manually upload files
|
# Update certificate - either request via Let's Encrypt or manually upload files
|
||||||
if request.form['method'] == 'selfsigned':
|
if request.form['method'] == 'selfsigned':
|
||||||
vmmgr.create_selfsigned_cert()
|
vmmgr.create_selfsigned_cert()
|
||||||
@ -361,6 +368,10 @@ class WSGIApp:
|
|||||||
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):
|
def update_common_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
request.session['msg'] = f'common:error:{request.session.lang.not_available_in_demo()}'
|
||||||
|
return redirect('/setup-apps')
|
||||||
# Update common settings shared between apps - admin e-mail address, Google Maps API key
|
# Update common settings shared between apps - admin e-mail address, Google Maps API key
|
||||||
email = request.form['email']
|
email = request.form['email']
|
||||||
if not validator.is_valid_email(email):
|
if not validator.is_valid_email(email):
|
||||||
@ -371,6 +382,10 @@ class WSGIApp:
|
|||||||
return redirect('/setup-apps')
|
return redirect('/setup-apps')
|
||||||
|
|
||||||
def update_repo_action(self, request):
|
def update_repo_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
request.session['msg'] = f'repo:error:{request.session.lang.not_available_in_demo()}'
|
||||||
|
return redirect('/setup-apps')
|
||||||
# Update repository URL and credentials
|
# Update repository URL and credentials
|
||||||
url = request.form['repourl']
|
url = request.form['repourl']
|
||||||
if not validator.is_valid_repo_url(url):
|
if not validator.is_valid_repo_url(url):
|
||||||
@ -428,6 +443,9 @@ class WSGIApp:
|
|||||||
return self.render_json({'ok': self.render_setup_apps_table(request)})
|
return self.render_json({'ok': self.render_setup_apps_table(request)})
|
||||||
|
|
||||||
def update_password_action(self, request):
|
def update_password_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
return self.render_json({'error': request.session.lang.not_available_in_demo()})
|
||||||
# Updates password for both HDD encryption (LUKS-on-LVM) and web interface admin account
|
# Updates password for both HDD encryption (LUKS-on-LVM) and web interface admin account
|
||||||
if request.form['newpassword'] != request.form['newpassword2']:
|
if request.form['newpassword'] != request.form['newpassword2']:
|
||||||
return self.render_json({'error': request.session.lang.password_mismatch()})
|
return self.render_json({'error': request.session.lang.password_mismatch()})
|
||||||
@ -441,18 +459,27 @@ class WSGIApp:
|
|||||||
return self.render_json({'ok': request.session.lang.password_changed()})
|
return self.render_json({'ok': request.session.lang.password_changed()})
|
||||||
|
|
||||||
def reboot_vm_action(self, request):
|
def reboot_vm_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
return self.render_json({'error': request.session.lang.not_available_in_demo()})
|
||||||
# Reboots VM
|
# Reboots VM
|
||||||
response = self.render_json({'ok': request.session.lang.reboot_initiated()})
|
response = self.render_json({'ok': request.session.lang.reboot_initiated()})
|
||||||
response.call_on_close(vmmgr.reboot_vm)
|
response.call_on_close(vmmgr.reboot_vm)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def shutdown_vm_action(self, request):
|
def shutdown_vm_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
return self.render_json({'error': request.session.lang.not_available_in_demo()})
|
||||||
# Shuts down VM
|
# Shuts down VM
|
||||||
response = self.render_json({'ok': request.session.lang.shutdown_initiated()})
|
response = self.render_json({'ok': request.session.lang.shutdown_initiated()})
|
||||||
response.call_on_close(vmmgr.shutdown_vm)
|
response.call_on_close(vmmgr.shutdown_vm)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def update_ssh_keys_action(self, request):
|
def update_ssh_keys_action(self, request):
|
||||||
|
# Do nothing in demo
|
||||||
|
if self.demo:
|
||||||
|
return self.render_json({'error': request.session.lang.not_available_in_demo()})
|
||||||
# Update authorized_keys file
|
# Update authorized_keys file
|
||||||
remote.set_authorized_keys(request.form['ssh-keys'].replace('\r', ''))
|
remote.set_authorized_keys(request.form['ssh-keys'].replace('\r', ''))
|
||||||
request.session['msg'] = f'ssh:info:{request.session.lang.ssh_keys_installed()}'
|
request.session['msg'] = f'ssh:info:{request.session.lang.ssh_keys_installed()}'
|
||||||
|
@ -54,6 +54,7 @@ class WSGILang:
|
|||||||
'action_update': 'Aktualizovat',
|
'action_update': 'Aktualizovat',
|
||||||
'ssh_keys_installed': 'SSH klíče byly úspěšně změněny.',
|
'ssh_keys_installed': 'SSH klíče byly úspěšně změněny.',
|
||||||
'vpn_updated': 'Nastavení VPN bylo úspěšně změněno.',
|
'vpn_updated': 'Nastavení VPN bylo úspěšně změněno.',
|
||||||
|
'not_available_in_demo': 'Tato funkce není v demo verzi povolena',
|
||||||
}
|
}
|
||||||
|
|
||||||
def __getattr__(self, key):
|
def __getattr__(self, key):
|
||||||
|
@ -205,7 +205,11 @@ function update_password() {
|
|||||||
|
|
||||||
function _do_vm(action) {
|
function _do_vm(action) {
|
||||||
$.get('/'+action+'-vm', function(data) {
|
$.get('/'+action+'-vm', function(data) {
|
||||||
$('#vm-message').attr('class','info').html(data.ok).show();
|
if (data.error) {
|
||||||
|
$('#vm-message').attr('class','error').html(data.error).show();
|
||||||
|
} else {
|
||||||
|
$('#vm-message').attr('class','info').html(data.ok).show();
|
||||||
|
}
|
||||||
}).fail(lost_connection_alert);
|
}).fail(lost_connection_alert);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user