MarseyWorld/files/routes/errors.py

73 lines
2.6 KiB
Python
Raw Normal View History

2021-10-15 14:08:27 +00:00
from files.helpers.wrappers import *
from flask import *
from urllib.parse import quote, urlencode
import time
from files.__main__ import app, limiter
2022-02-06 16:51:52 +00:00
2021-10-15 14:08:27 +00:00
@app.errorhandler(400)
2022-01-09 15:15:02 +00:00
def error_400(e):
2022-01-16 06:06:16 +00:00
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "400 Bad Request"}, 400
2022-01-16 01:47:21 +00:00
else: return render_template('errors/400.html', err=True), 400
2021-10-15 14:08:27 +00:00
@app.errorhandler(401)
def error_401(e):
2022-01-16 06:06:16 +00:00
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "401 Not Authorized"}, 401
2022-01-17 11:06:12 +00:00
else:
path = request.path
qs = urlencode(dict(request.values))
argval = quote(f"{path}?{qs}", safe='')
2022-04-02 17:11:35 +00:00
return redirect(f"/login?redirect={argval}")
2021-10-15 14:08:27 +00:00
@app.errorhandler(403)
2022-01-09 15:15:02 +00:00
def error_403(e):
2022-04-18 18:25:14 +00:00
description = e.description
if description == "You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.": description = ''
if request.headers.get("Authorization") or request.headers.get("xhr"):
if not description: description = "403 Forbidden"
return {"error": description}, 403
else:
if not description: description = "YOU AREN'T WELCOME HERE GO AWAY"
return render_template('errors/403.html', description=description, err=True), 403
2021-10-15 14:08:27 +00:00
@app.errorhandler(404)
2022-01-09 15:15:02 +00:00
def error_404(e):
2022-01-16 06:06:16 +00:00
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "404 Not Found"}, 404
2022-01-16 01:47:21 +00:00
else: return render_template('errors/404.html', err=True), 404
2021-10-15 14:08:27 +00:00
@app.errorhandler(405)
2022-01-09 15:15:02 +00:00
def error_405(e):
2022-01-16 06:06:16 +00:00
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "405 Method Not Allowed"}, 405
2022-01-16 01:47:21 +00:00
else: return render_template('errors/405.html', err=True), 405
2021-10-15 14:08:27 +00:00
2022-01-16 05:53:32 +00:00
@app.errorhandler(413)
def error_413(e):
2022-04-26 13:01:05 +00:00
return {"error": "Max file size is 8 MB (16 MB for paypigs)"}, 413
2022-01-16 05:53:32 +00:00
2021-10-15 14:08:27 +00:00
@app.errorhandler(429)
2022-01-09 15:15:02 +00:00
def error_429(e):
2022-01-16 06:06:16 +00:00
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "429 Too Many Requests"}, 429
2022-01-16 01:47:21 +00:00
else: return render_template('errors/429.html', err=True), 429
2021-10-15 14:08:27 +00:00
@app.errorhandler(500)
2022-01-09 15:15:02 +00:00
def error_500(e):
2021-10-15 14:08:27 +00:00
g.db.rollback()
2022-01-16 06:06:16 +00:00
if request.headers.get("Authorization") or request.headers.get("xhr"): return {"error": "500 Internal Server Error"}, 500
2022-01-16 01:47:21 +00:00
else: return render_template('errors/500.html', err=True), 500
2021-10-15 14:08:27 +00:00
@app.post("/allow_nsfw")
2022-01-11 22:05:27 +00:00
def allow_nsfw():
2021-10-15 14:08:27 +00:00
session["over_18"] = int(time.time()) + 3600
2022-01-17 11:06:12 +00:00
redir = request.values.get("redir")
2022-01-28 20:02:35 +00:00
if redir:
2022-04-17 21:46:29 +00:00
if redir.startswith(f'{SITE_FULL}/'): return redirect(redir)
2022-01-28 20:02:35 +00:00
if redir.startswith('/'): return redirect(f'{SITE_FULL}{redir}')
2022-04-02 17:11:35 +00:00
return redirect('/')