From ccd73c302a2130f3b77ae2491ae9c7fd8491c928 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vinot?= Date: Wed, 22 Apr 2020 14:58:01 +0200 Subject: [PATCH] chg: Properly handle proxied setups --- etc/nginx/sites-available/lookyloo | 2 +- website/web/__init__.py | 2 ++ website/web/proxied.py | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 website/web/proxied.py diff --git a/etc/nginx/sites-available/lookyloo b/etc/nginx/sites-available/lookyloo index c0dfe41..46a754a 100644 --- a/etc/nginx/sites-available/lookyloo +++ b/etc/nginx/sites-available/lookyloo @@ -7,7 +7,7 @@ server { proxy_set_header Host $http_host; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Scheme $scheme; + proxy_set_header X_FORWARDED_PROTO $scheme; proxy_connect_timeout 300; proxy_read_timeout 300; proxy_pass http://localhost:5100/; diff --git a/website/web/__init__.py b/website/web/__init__.py index f3c4d3d..1157da8 100644 --- a/website/web/__init__.py +++ b/website/web/__init__.py @@ -16,12 +16,14 @@ from flask_httpauth import HTTPDigestAuth # type: ignore from lookyloo.helpers import get_homedir, update_user_agents, get_user_agents from lookyloo.lookyloo import Lookyloo from lookyloo.exceptions import NoValidHarFile +from .proxied import ReverseProxied from typing import Tuple import logging app: Flask = Flask(__name__) +app.wsgi_app = ReverseProxied(app.wsgi_app) secret_file_path: Path = get_homedir() / 'secret_key' diff --git a/website/web/proxied.py b/website/web/proxied.py new file mode 100644 index 0000000..439624f --- /dev/null +++ b/website/web/proxied.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +class ReverseProxied(): + def __init__(self, app): + self.app = app + + def __call__(self, environ, start_response): + scheme = environ.get('HTTP_X_FORWARDED_PROTO') + if not scheme: + scheme = environ.get('HTTP_X_SCHEME') + + if scheme: + environ['wsgi.url_scheme'] = scheme + return self.app(environ, start_response)