From 7ce663f2b6d3ebdb0704c9c20618d7d1f1b87f49 Mon Sep 17 00:00:00 2001 From: "kam (from the studio)" Date: Fri, 22 Apr 2022 15:22:48 +0200 Subject: [PATCH] prefix and environ --- .env | 0 app.py | 9 ++++++++- prefix.py | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .env create mode 100644 prefix.py diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/app.py b/app.py index af5b036..316ded7 100644 --- a/app.py +++ b/app.py @@ -1,10 +1,17 @@ +import os from flask import Flask, render_template from flask_sock import Sock +from . import prefix -app = Flask(__name__) +app = Flask(__name__, ) sock = Sock(app) +app.wsgi_app = prefix.PrefixMiddleware( + app.wsgi_app, prefix=os.environ.get("URL_PREFIX", "") +) + + @app.route('/') def index(): return render_template('index.html') diff --git a/prefix.py b/prefix.py new file mode 100644 index 0000000..3d6a9cc --- /dev/null +++ b/prefix.py @@ -0,0 +1,14 @@ +class PrefixMiddleware(object): + def __init__(self, app, prefix=""): + self.app = app + self.prefix = prefix + + def __call__(self, environ, start_response): + + if environ["PATH_INFO"].startswith(self.prefix): + environ["PATH_INFO"] = environ["PATH_INFO"][len(self.prefix) :] + environ["SCRIPT_NAME"] = self.prefix + return self.app(environ, start_response) + else: + start_response("404", [("Content-Type", "text/plain")]) + return ["This url does not belong to the app.".encode()] \ No newline at end of file