From 69fa70c743e6b046ec315dea58b960146b857556 Mon Sep 17 00:00:00 2001 From: Kosma Moczek Date: Wed, 4 Mar 2026 16:47:28 +0100 Subject: [PATCH] proxy --- app.py | 32 +++++++++++++++++++++++++++++--- requirements.txt | 1 + 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/app.py b/app.py index a2b6113..ee9a8bc 100644 --- a/app.py +++ b/app.py @@ -5,10 +5,11 @@ import json import secrets from urllib.parse import urlencode +import requests import yaml from cryptography.hazmat.primitives import serialization from cryptography.hazmat.primitives.asymmetric import padding, rsa -from flask import Flask, redirect, render_template, request, session +from flask import Flask, redirect, render_template, request, Response, session parser = argparse.ArgumentParser() parser.add_argument("config", help="Path to configuration file") @@ -39,7 +40,7 @@ def authorize(): session["nonce"] = nonce params = { - "auth_redirect": config["redirect_url"], + "auth_redirect": config["app_url"] + "/callback", "application_name": config["application_name"], "scopes": "read", "client_id": client_id, @@ -71,7 +72,7 @@ def callback(): key = response["key"] calendar_url = ( - f"{config['forum_url']}/discourse-post-event/events.ics?" + f"{config['app_url']}/calendar?" + urlencode({"order": "desc", "api_key": key}) ) @@ -81,6 +82,31 @@ def callback(): calendar_url=calendar_url, ) +@app.route("/calendar") +def calendar(): + params = request.args.to_dict() + user_api_key = params.pop('user_api_key', None) + if not user_api_key: + return {"error": "Missing user_api_key parameter"}, 400 + + calendar_url = config['forum_url'] + "/discourse-post-event/events.ics" + + headers = { + 'User-Api-Key': user_api_key + } + + try: + response = requests.get(calendar_url, params=params, headers=headers) + + return Response( + response.content, + status=response.status_code, + content_type=response.headers.get('Content-Type') + ) + + except requests.exceptions.RequestException as e: + return {"error": f"Backend connection failed: {str(e)}"}, 502 + if __name__ == "__main__": app.run(host="0.0.0.0", port=8000) diff --git a/requirements.txt b/requirements.txt index f1a9e39..f608730 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ flask cryptography pyyaml +requests