modified: app.py

This commit is contained in:
SimolZimol
2026-08-03 22:40:19 +02:00
parent 13b72c2e8b
commit cfef097f2a

29
app.py
View File

@@ -244,9 +244,28 @@ def _escape(value: str) -> str:
# Routen # Routen
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
def _handle_link(target_url: str):
"""Leitet weiter oder liefert die Preview-Seite für Bots."""
if target_url is None:
abort(404)
# Social-Media-Bots / Preview-Crawler bekommen die Metadaten-Seite
if _looks_like_bot():
return Response(_render_preview_page(target_url), mimetype="text/html")
# Alle anderen werden direkt weitergeleitet
return redirect(target_url, code=302)
@app.route("/") @app.route("/")
def index(): def index():
routes = load_config() routes = load_config()
# Ist die Hauptdomain (/) konfiguriert, wird sie weitergeleitet
# statt die Linkliste anzuzeigen.
if "/" in routes:
return _handle_link(routes["/"])
rows = "".join( rows = "".join(
f'<li><a href="{_escape(p)}">{_escape(p)}</a> → ' f'<li><a href="{_escape(p)}">{_escape(p)}</a> → '
f'<small>{_escape(r)}</small></li>' f'<small>{_escape(r)}</small></li>'
@@ -270,15 +289,7 @@ def link_redirect(path: str):
if target_url is None: if target_url is None:
target_url = routes.get(path) target_url = routes.get(path)
if target_url is None: return _handle_link(target_url)
abort(404)
# Social-Media-Bots / Preview-Crawler bekommen die Metadaten-Seite
if _looks_like_bot():
return Response(_render_preview_page(target_url), mimetype="text/html")
# Alle anderen werden direkt weitergeleitet
return redirect(target_url, code=302)
@app.errorhandler(404) @app.errorhandler(404)