SHA256
39 lines
1.3 KiB
Python
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)
|