Fix 404 for logs pages, add 500 error page.

This commit is contained in:
Matthew Stratford 2021-09-16 23:40:05 +01:00
parent 477ef64916
commit a3d0635bae
3 changed files with 22 additions and 13 deletions

View file

@ -1,9 +0,0 @@
{% extends 'base.html' %}
{% block content_inner %}
<div class="text-center">
<div class="error error-big mx-auto" data-text="404">404</div>
<p class="lead text-gray-800 mb-5">Page Not Found</p>
<p class="text-gray-900 mb-0">Looks like you fell off the tip of the iceberg.</p>
<a href="/">← Escape Back Home</a>
</div>
{% endblock %}

9
ui-templates/error.html Normal file
View file

@ -0,0 +1,9 @@
{% extends 'base.html' %}
{% block content_inner %}
<div class="text-center">
<div class="error error-big mx-auto" data-text="{{data.code}}">{{data.code}}</div>
<p class="lead text-gray-800 mb-5">{{data.title}}</p>
<p class="text-gray-900 mb-0">{{data.message}}</p>
<a href="/">← Escape Back Home</a>
</div>
{% endblock %}

View file

@ -1,5 +1,5 @@
from sanic import Sanic from sanic import Sanic
from sanic.exceptions import NotFound, abort from sanic.exceptions import NotFound, ServerError, abort
from sanic.response import html, file, redirect from sanic.response import html, file, redirect
from sanic.response import json as resp_json from sanic.response import json as resp_json
from sanic_cors import CORS from sanic_cors import CORS
@ -108,9 +108,13 @@ player_from_q: List[Queue] = []
@app.exception(NotFound) @app.exception(NotFound)
def page_not_found(request, e: Any): def page_not_found(request, e: Any):
data = {"ui_page": "404", "ui_title": "404"} data = {"ui_page": "404", "ui_title": "404", "code": 404, "title": "Page Not Found", "message": "Looks like you fell off the tip of the iceberg." }
return render_template("404.html", data=data, status=404) return render_template("error.html", data=data, status=404)
@app.exception(Exception, ServerError)
def server_error(request, e: Exception):
data = {"ui_page": "500", "ui_title": "500", "code": 500, "title": "Something went very wrong!", "message": "Looks like the server fell over. Try viewing the WebServer logs for more details." }
return render_template("error.html", data=data, status=500)
@app.route("/") @app.route("/")
def ui_index(request): def ui_index(request):
@ -234,7 +238,12 @@ def ui_logs_render(request, path):
page = int(page) page = int(page)
assert page >= 1 assert page >= 1
try:
log_file = open(resolve_external_file_path("/logs/{}.log").format(path)) log_file = open(resolve_external_file_path("/logs/{}.log").format(path))
except FileNotFoundError:
abort(404)
return
data = { data = {
"logs": log_file.read().splitlines()[ "logs": log_file.read().splitlines()[
-300 * page:(-300 * (page - 1) if page > 1 else None) -300 * page:(-300 * (page - 1) if page > 1 else None)