Don't handle BadRequest explicitly
This commit is contained in:
parent
0605110050
commit
b64f9c2c9e
@ -10,6 +10,8 @@ from werkzeug.wrappers import Request, Response
|
|||||||
from werkzeug.wsgi import ClosingIterator
|
from werkzeug.wsgi import ClosingIterator
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
|
|
||||||
|
from cryptography.exceptions import InvalidSignature
|
||||||
|
|
||||||
from . import VMMgr, CERT_PUB_FILE
|
from . import VMMgr, CERT_PUB_FILE
|
||||||
from . import tools
|
from . import tools
|
||||||
from .actionqueue import ActionQueue
|
from .actionqueue import ActionQueue
|
||||||
@ -154,14 +156,16 @@ class WSGIApp(object):
|
|||||||
|
|
||||||
def setup_apps_view(self, request):
|
def setup_apps_view(self, request):
|
||||||
# Application manager view.
|
# Application manager view.
|
||||||
|
repo_error = None
|
||||||
try:
|
try:
|
||||||
self.appmgr.fetch_online_packages()
|
self.appmgr.fetch_online_packages()
|
||||||
|
except InvalidSignature:
|
||||||
|
repo_error = request.session.lang.invalild_packages_signature()
|
||||||
except:
|
except:
|
||||||
pass
|
repo_error = request.session.lang.repo_unavailable()
|
||||||
repo_reachable = bool(self.appmgr.online_packages)
|
|
||||||
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)
|
||||||
return self.render_html('setup-apps.html', request, repo_reachable=repo_reachable, table=table, message=message)
|
return self.render_html('setup-apps.html', request, repo_error=repo_error, table=table, message=message)
|
||||||
|
|
||||||
def render_setup_apps_table(self, request):
|
def render_setup_apps_table(self, request):
|
||||||
lang = request.session.lang
|
lang = request.session.lang
|
||||||
@ -239,8 +243,6 @@ class WSGIApp(object):
|
|||||||
response = self.render_json({'ok': request.session.lang.host_updated(url, url)})
|
response = self.render_json({'ok': request.session.lang.host_updated(url, url)})
|
||||||
response.call_on_close(tools.restart_nginx)
|
response.call_on_close(tools.restart_nginx)
|
||||||
return response
|
return response
|
||||||
except BadRequest:
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
except InvalidValueException as e:
|
except InvalidValueException as e:
|
||||||
if e.args[0] == 'domain':
|
if e.args[0] == 'domain':
|
||||||
return self.render_json({'error': request.session.lang.invalid_domain(domain)})
|
return self.render_json({'error': request.session.lang.invalid_domain(domain)})
|
||||||
@ -299,8 +301,6 @@ class WSGIApp(object):
|
|||||||
self.vmmgr.install_manual_cert('/tmp/public.pem', '/tmp/private.pem')
|
self.vmmgr.install_manual_cert('/tmp/public.pem', '/tmp/private.pem')
|
||||||
os.unlink('/tmp/public.pem')
|
os.unlink('/tmp/public.pem')
|
||||||
os.unlink('/tmp/private.pem')
|
os.unlink('/tmp/private.pem')
|
||||||
except BadRequest:
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
except:
|
except:
|
||||||
return self.render_json({'error': request.session.lang.cert_request_error()})
|
return self.render_json({'error': request.session.lang.cert_request_error()})
|
||||||
url = tools.compile_url(self.vmmgr.domain, self.vmmgr.port)
|
url = tools.compile_url(self.vmmgr.domain, self.vmmgr.port)
|
||||||
@ -313,47 +313,29 @@ class WSGIApp(object):
|
|||||||
gmaps_api_key = request.form['gmaps-api-key']
|
gmaps_api_key = request.form['gmaps-api-key']
|
||||||
self.appmgr.update_common_settings(email, gmaps_api_key)
|
self.appmgr.update_common_settings(email, gmaps_api_key)
|
||||||
request.session['msg'] = 'common:info:{}'.format(request.session.lang.common_updated())
|
request.session['msg'] = 'common:info:{}'.format(request.session.lang.common_updated())
|
||||||
except BadRequest:
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
except InvalidValueException:
|
except InvalidValueException:
|
||||||
request.session['msg'] = 'common:error:{}'.format(request.session.lang.invalid_email(email))
|
request.session['msg'] = 'common:error:{}'.format(request.session.lang.invalid_email(email))
|
||||||
return redirect('/setup-apps')
|
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
|
||||||
try:
|
self.appmgr.update_repo_settings(request.form['repourl'], request.form['repousername'], request.form['repopassword'])
|
||||||
url = request.form['repourl']
|
request.session['msg'] = 'repo:info:{}'.format(request.session.lang.repo_updated())
|
||||||
user = request.form['repousername']
|
|
||||||
pwd = request.form['repopassword']
|
|
||||||
self.appmgr.update_repo_settings(url, user, pwd)
|
|
||||||
request.session['msg'] = 'repo:info:{}'.format(request.session.lang.repo_updated())
|
|
||||||
except BadRequest:
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
return redirect('/setup-apps')
|
return redirect('/setup-apps')
|
||||||
|
|
||||||
def update_app_visibility_action(self, request):
|
def update_app_visibility_action(self, request):
|
||||||
# Update application visibility on portal page
|
# Update application visibility on portal page
|
||||||
try:
|
self.appmgr.update_app_visibility(request.form['app'], request.form['value'] == 'true')
|
||||||
self.appmgr.update_app_visibility(request.form['app'], request.form['value'] == 'true')
|
|
||||||
except (BadRequest, InvalidValueException):
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
return self.render_json({'ok': 'ok'})
|
return self.render_json({'ok': 'ok'})
|
||||||
|
|
||||||
def update_app_autostart_action(self, request):
|
def update_app_autostart_action(self, request):
|
||||||
# Update value determining if the app should be automatically started after VM boot
|
# Update value determining if the app should be automatically started after VM boot
|
||||||
try:
|
self.appmgr.update_app_autostart(request.form['app'], request.form['value'] == 'true')
|
||||||
self.appmgr.update_app_autostart(request.form['app'], request.form['value'] == 'true')
|
|
||||||
except (BadRequest, InvalidValueException):
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
return self.render_json({'ok': 'ok'})
|
return self.render_json({'ok': 'ok'})
|
||||||
|
|
||||||
def enqueue_app_action(self, request, action):
|
def enqueue_app_action(self, request, action):
|
||||||
# Common method for enqueuing app actions
|
# Common method for enqueuing app actions
|
||||||
try:
|
self.queue.enqueue_action(request.form['app'], action)
|
||||||
app = request.form['app']
|
|
||||||
except BadRequest:
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
self.queue.enqueue_action(app, action)
|
|
||||||
response = self.render_json({'ok': self.render_setup_apps_table(request)})
|
response = self.render_json({'ok': self.render_setup_apps_table(request)})
|
||||||
response.call_on_close(self.queue.process_actions)
|
response.call_on_close(self.queue.process_actions)
|
||||||
return response
|
return response
|
||||||
@ -380,11 +362,7 @@ class WSGIApp(object):
|
|||||||
|
|
||||||
def clear_app_status_action(self, request):
|
def clear_app_status_action(self, request):
|
||||||
# Clears error status for an application
|
# Clears error status for an application
|
||||||
try:
|
self.queue.clear_action(request.form['app'])
|
||||||
app = request.form['app']
|
|
||||||
except BadRequest:
|
|
||||||
return self.render_json({'error': request.session.lang.malformed_request()})
|
|
||||||
self.queue.clear_action(app)
|
|
||||||
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):
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
class WSGILang:
|
class WSGILang:
|
||||||
lang = {
|
lang = {
|
||||||
'malformed_request': 'Byl zaslán chybný požadavek. Obnovte stránku a zkuste akci zopakovat.',
|
|
||||||
'invalid_domain': 'Zadaný doménový název "{}" není platný.',
|
'invalid_domain': 'Zadaný doménový název "{}" není platný.',
|
||||||
'invalid_port': 'Zadaný port "{}" není platný.',
|
'invalid_port': 'Zadaný port "{}" není platný.',
|
||||||
'host_updated': 'Nastavení hostitele bylo úspěšně změněno. Přejděte na URL <a href="{}">{}</a> a pokračujte následujícími kroky.',
|
'host_updated': 'Nastavení hostitele bylo úspěšně změněno. Přejděte na URL <a href="{}">{}</a> a pokračujte následujícími kroky.',
|
||||||
@ -23,6 +22,8 @@ class WSGILang:
|
|||||||
'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í.',
|
||||||
'package_manager_error': 'Došlo k chybě při instalaci aplikace. Zkuste akci opakovat nebo restartuje virtuální stroj.',
|
'package_manager_error': 'Došlo k chybě při instalaci aplikace. Zkuste akci opakovat nebo restartuje virtuální stroj.',
|
||||||
|
'invalid_packages_signature': 'Digitální podpis seznamu balíků není platný. Kontaktujte správce distribučního serveru.',
|
||||||
|
'repo_unavailable': 'Připojení k distribučnímu serveru se nezdařilo. Zkontrolujte přístupové údaje a připojení k síti.',
|
||||||
'bad_password': 'Nesprávné heslo',
|
'bad_password': 'Nesprávné heslo',
|
||||||
'password_mismatch': 'Zadaná hesla se neshodují',
|
'password_mismatch': 'Zadaná hesla se neshodují',
|
||||||
'password_empty': 'Nové heslo nesmí být prázdné',
|
'password_empty': 'Nové heslo nesmí být prázdné',
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
{{ table|safe }}
|
{{ table|safe }}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% if not repo_reachable %}
|
{% if repo_error %}
|
||||||
<p class="error">Připojení k distribučnímu serveru se nezdařilo. Zkontrolujte přístupové údaje a připojení k síti.</p>
|
<p class="error">{{ repo_error }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<p><strong>Přístupové údaje k distribučnímu serveru:</strong></p>
|
<p><strong>Přístupové údaje k distribučnímu serveru:</strong></p>
|
||||||
<form id="update-repo" action="/update-repo" method="post">
|
<form id="update-repo" action="/update-repo" method="post">
|
||||||
|
Loading…
Reference in New Issue
Block a user