diff --git a/examples/example.py b/examples/example.py old mode 100644 new mode 100755 index f59eb1d..2823257 --- a/examples/example.py +++ b/examples/example.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + import os import sys import webbrowser diff --git a/examples/flask_server.py b/examples/flask_server.py old mode 100644 new mode 100755 index b90c13c..d231a8b --- a/examples/flask_server.py +++ b/examples/flask_server.py @@ -1,3 +1,5 @@ +#!/usr/bin/env python3 + import os import re import sys @@ -14,6 +16,7 @@ examples_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(os.path.dirname(examples_dir)) from cloudflare_error_page import get_resources_folder, render as render_cf_error_page +# TODO: use blueprint app = Flask(__name__) # You can use resources from Cloudflare CDN. But in case of changing, you can set use_cdn = False to use bundled resources. @@ -24,7 +27,7 @@ if use_cdn: # This handler is used to provide stylesheet and icon resources for the error page. If you pass use_cdn=True to render_cf_error_page # or if your site is under proxy of Cloudflare (the cdn-cgi folder is already provided by Cloudflare), this handler can be removed. - @app.route("/cdn-cgi/") + @app.route('/cdn-cgi/') def cdn_cgi(path): return send_from_directory(res_folder, path) @@ -32,7 +35,7 @@ if use_cdn: param_cache: dict[str, dict] = {} def get_page_params(name: str) -> dict: - name = re.sub(r'[/\\]', '', name) + name = re.sub(r'[^\w]', '', name) params = param_cache.get(name) if params is not None: return params @@ -45,9 +48,11 @@ def get_page_params(name: str) -> dict: return None -@app.route("/", defaults={'name': 'default'}) -@app.route("/") +@app.route('/', defaults={'name': 'default'}) +@app.route('/') def index(name: str): + name = os.path.basename(name) # keep only the base name + params = get_page_params(name) if params is None: abort(404) @@ -62,13 +67,22 @@ def index(name: str): params = { **params, - "ray_id": ray_id, - "client_ip": client_ip, + 'ray_id': ray_id, + 'client_ip': client_ip, } # Render the error page return render_cf_error_page(params, use_cdn=use_cdn), 500 -if __name__ == "__main__": - app.run(debug=True) +if __name__ == '__main__': + if len(sys.argv) > 1: + host = sys.argv[1] + else: + host = None + if len(sys.argv) > 2: + port = int(sys.argv[2]) + else: + port = None + + app.run(debug=True, host=host, port=port)