forked from rDrama/rDrama
serve almost all files from nginx
parent
e1d5b8eb88
commit
52f5b2a347
|
@ -2,7 +2,7 @@
|
||||||
from files.helpers.const import FEATURES
|
from files.helpers.const import FEATURES
|
||||||
|
|
||||||
# import flask then...
|
# import flask then...
|
||||||
from flask import g, request, render_template, make_response, redirect, jsonify, send_from_directory, send_file
|
from flask import g, request, render_template, make_response, redirect, jsonify, send_file
|
||||||
|
|
||||||
# import our app then...
|
# import our app then...
|
||||||
from files.__main__ import app
|
from files.__main__ import app
|
||||||
|
|
|
@ -16,16 +16,6 @@ ASSET_TYPES = (Marsey, HatDef)
|
||||||
CAN_APPROVE_ASSETS = (AEVANN_ID, CARP_ID, SNAKES_ID)
|
CAN_APPROVE_ASSETS = (AEVANN_ID, CARP_ID, SNAKES_ID)
|
||||||
CAN_UPDATE_ASSETS = (AEVANN_ID, CARP_ID, SNAKES_ID, GEESE_ID, JUSTCOOL_ID)
|
CAN_UPDATE_ASSETS = (AEVANN_ID, CARP_ID, SNAKES_ID, GEESE_ID, JUSTCOOL_ID)
|
||||||
|
|
||||||
@app.get('/asset_submissions/<path:path>')
|
|
||||||
@limiter.exempt
|
|
||||||
def asset_submissions(path):
|
|
||||||
resp = make_response(send_from_directory('/asset_submissions', path))
|
|
||||||
resp.headers.remove("Cache-Control")
|
|
||||||
resp.headers.add("Cache-Control", "public, max-age=3153600")
|
|
||||||
resp.headers.remove("Content-Type")
|
|
||||||
resp.headers.add("Content-Type", "image/webp")
|
|
||||||
return resp
|
|
||||||
|
|
||||||
@app.get("/submit/marseys")
|
@app.get("/submit/marseys")
|
||||||
@auth_required
|
@auth_required
|
||||||
def submit_marseys(v:User):
|
def submit_marseys(v:User):
|
||||||
|
|
|
@ -248,75 +248,6 @@ def submit_contact(v):
|
||||||
def archivesindex():
|
def archivesindex():
|
||||||
return redirect("/archives/index.html")
|
return redirect("/archives/index.html")
|
||||||
|
|
||||||
@app.get('/archives/<path:path>')
|
|
||||||
def archives(path):
|
|
||||||
resp = make_response(send_from_directory('/archives', path))
|
|
||||||
if request.path.endswith('.css'): resp.headers.add("Content-Type", "text/css")
|
|
||||||
return resp
|
|
||||||
|
|
||||||
def static_file(dir:str, path:str, should_cache:bool, is_webp:bool) -> Response:
|
|
||||||
resp = make_response(send_from_directory(dir, path))
|
|
||||||
if should_cache:
|
|
||||||
resp.headers.remove("Cache-Control")
|
|
||||||
resp.headers.add("Cache-Control", "public, max-age=3153600")
|
|
||||||
if is_webp:
|
|
||||||
resp.headers.remove("Content-Type")
|
|
||||||
resp.headers.add("Content-Type", "image/webp")
|
|
||||||
return resp
|
|
||||||
|
|
||||||
@app.get('/e/<emoji>')
|
|
||||||
@limiter.exempt
|
|
||||||
def emoji(emoji):
|
|
||||||
if not emoji.endswith('.webp'): abort(404)
|
|
||||||
return static_file('assets/images/emojis', emoji, True, True)
|
|
||||||
|
|
||||||
@app.get('/icon.webp')
|
|
||||||
@limiter.exempt
|
|
||||||
def icon():
|
|
||||||
return static_file('assets/images', f'{SITE_NAME}/icon.webp', True, True)
|
|
||||||
|
|
||||||
@app.get('/i/<path:path>')
|
|
||||||
@limiter.exempt
|
|
||||||
def image(path):
|
|
||||||
is_webp = path.endswith('.webp')
|
|
||||||
return static_file('assets/images', path, is_webp or path.endswith('.gif') or path.endswith('.ttf') or path.endswith('.woff2'), is_webp)
|
|
||||||
|
|
||||||
@app.get('/assets/<path:path>')
|
|
||||||
@app.get('/static/assets/<path:path>')
|
|
||||||
@limiter.exempt
|
|
||||||
def static_service(path):
|
|
||||||
if path.startswith(f'app_{SITE_NAME}_v'):
|
|
||||||
return redirect('/app')
|
|
||||||
is_webp = path.endswith('.webp')
|
|
||||||
return static_file('assets', path, is_webp or path.endswith('.gif') or path.endswith('.ttf') or path.endswith('.woff2'), is_webp)
|
|
||||||
|
|
||||||
### BEGIN FALLBACK ASSET SERVING
|
|
||||||
# In production, we have nginx serve these locations now.
|
|
||||||
# These routes stay for local testing. Requests don't reach them on prod.
|
|
||||||
|
|
||||||
@app.get('/images/<path>')
|
|
||||||
@app.get('/hostedimages/<path>')
|
|
||||||
@app.get("/static/images/<path>")
|
|
||||||
@limiter.exempt
|
|
||||||
def images(path):
|
|
||||||
return static_file('/images', path, True, True)
|
|
||||||
|
|
||||||
@app.get('/videos/<path>')
|
|
||||||
@limiter.exempt
|
|
||||||
def videos(path):
|
|
||||||
return static_file('/videos', path, True, False)
|
|
||||||
|
|
||||||
@app.get('/audio/<path>')
|
|
||||||
@limiter.exempt
|
|
||||||
def audio(path):
|
|
||||||
return static_file('/audio', path, True, False)
|
|
||||||
|
|
||||||
### END FALLBACK ASSET SERVING
|
|
||||||
|
|
||||||
@app.get("/robots.txt")
|
|
||||||
def robots_txt():
|
|
||||||
return send_file("assets/robots.txt")
|
|
||||||
|
|
||||||
no = (21,22,23,24,25,26,27)
|
no = (21,22,23,24,25,26,27)
|
||||||
|
|
||||||
@cache.memoize(timeout=3600)
|
@cache.memoize(timeout=3600)
|
||||||
|
|
|
@ -423,17 +423,9 @@ def get_profilecss(id):
|
||||||
@app.get("/@<username>/song")
|
@app.get("/@<username>/song")
|
||||||
def usersong(username:str):
|
def usersong(username:str):
|
||||||
user = get_user(username)
|
user = get_user(username)
|
||||||
if user.song: return redirect(f"/song/{user.song}.mp3")
|
if user.song: return redirect(f"/songs/{user.song}.mp3")
|
||||||
else: abort(404)
|
else: abort(404)
|
||||||
|
|
||||||
@app.get("/song/<song>")
|
|
||||||
@app.get("/static/song/<song>")
|
|
||||||
def song(song):
|
|
||||||
resp = make_response(send_from_directory('/songs', song))
|
|
||||||
resp.headers.remove("Cache-Control")
|
|
||||||
resp.headers.add("Cache-Control", "public, max-age=3153600")
|
|
||||||
return resp
|
|
||||||
|
|
||||||
@app.post("/subscribe/<post_id>")
|
@app.post("/subscribe/<post_id>")
|
||||||
@limiter.limit(DEFAULT_RATELIMIT_SLOWER)
|
@limiter.limit(DEFAULT_RATELIMIT_SLOWER)
|
||||||
@auth_required
|
@auth_required
|
||||||
|
|
28
nginx.conf
28
nginx.conf
|
@ -34,9 +34,37 @@ server {
|
||||||
location /audio/ {
|
location /audio/ {
|
||||||
include includes/serve-static;
|
include includes/serve-static;
|
||||||
}
|
}
|
||||||
|
location /songs/ {
|
||||||
|
include includes/serve-static;
|
||||||
|
}
|
||||||
location /asset_submissions/ {
|
location /asset_submissions/ {
|
||||||
include includes/serve-static;
|
include includes/serve-static;
|
||||||
}
|
}
|
||||||
|
location /archives/ {
|
||||||
|
include includes/serve-static;
|
||||||
|
}
|
||||||
|
|
||||||
|
location /assets/ {
|
||||||
|
alias /rDrama/files/assets/;
|
||||||
|
add_header 'Cache-Control' "public, max-age=3153600";
|
||||||
|
}
|
||||||
|
location /i/ {
|
||||||
|
alias /rDrama/files/assets/images/;
|
||||||
|
add_header 'Cache-Control' "public, max-age=3153600";
|
||||||
|
}
|
||||||
|
location /e/ {
|
||||||
|
alias /rDrama/files/assets/images/emojis/;
|
||||||
|
add_header 'Cache-Control' "public, max-age=3153600";
|
||||||
|
}
|
||||||
|
|
||||||
|
location /robots.txt {
|
||||||
|
alias /rDrama/files/assets/robots.txt;
|
||||||
|
add_header 'Cache-Control' "public, max-age=3153600";
|
||||||
|
}
|
||||||
|
location /icon.webp {
|
||||||
|
alias /rDrama/files/assets/images/rDrama/icon.webp;
|
||||||
|
add_header 'Cache-Control' "public, max-age=3153600";
|
||||||
|
}
|
||||||
|
|
||||||
error_page 502 = /error_page/502.html;
|
error_page 502 = /error_page/502.html;
|
||||||
location /error_page/ {
|
location /error_page/ {
|
||||||
|
|
Loading…
Reference in New Issue