Files
2026-10-14 20:29:22 +02:00

39 lines
1.3 KiB
Python

import os
from werkzeug.serving import WSGIRequestHandler
from backend.app import create_app
app = create_app()
class RedactingRequestHandler(WSGIRequestHandler):
"""Werkzeug access log handler that never writes query strings to the log.
Credentials must never be sent in URLs, but as defense in depth this also
prevents any accidental query value (tokens, emails, passwords) from being
recorded in the server log.
"""
def log_request(self, code="-", size="-"):
try:
target = self.path or self.requestline.split(" ")[1]
except Exception:
target = self.requestline
if "?" in target:
target = target.split("?", 1)[0] + "?[redacted]"
try:
msg = f"{self.command} {target} {self.request_version}"
except Exception:
msg = self.requestline
code = str(code)
level = "warning" if code[:1] in ("4", "5") else "info"
self.log(level, '"%s" %s %s', msg, code, size)
if __name__ == "__main__":
host = os.environ.get("FLASK_HOST", "127.0.0.1")
port = int(os.environ.get("FLASK_PORT", "8085"))
debug = os.environ.get("FLASK_DEBUG", "false").lower() == "true"
app.run(host=host, port=port, debug=debug, request_handler=RedactingRequestHandler)