diff --git a/main_app.py b/main_app.py index 9081c75..f728656 100644 --- a/main_app.py +++ b/main_app.py @@ -1,4 +1,3 @@ -import os import xml.etree.ElementTree as ET from urllib.parse import parse_qs @@ -247,6 +246,26 @@ async def block_telemetry(): return fake_response({"status": "disabled by proxy :)"}, status_code=200) +@app.post("/collect/server", tags=[Hosts.ANALYTICS.value]) +async def fake_server_details(request: Request, _=host_required([Hosts.ANALYTICS])): + upstream_response = await call_official(request, request.url.path.lstrip("/")) + + data_override = None + + content_type = upstream_response.headers.get("content-type", "") + if content_type.startswith("application/xml"): + data = ET.fromstring(upstream_response.content) + + data.attrib['plexPass'] = '1' # Set plexPass to 1 + + # Pretty print XML + ET.indent(data) + + data_override = ET.tostring(data, encoding="utf-8", method="xml") + + return await return_edited_response(upstream_response, data_override) + + @app.get("/favicon.ico") async def favicon(): return FileResponse("favicon.ico") diff --git a/utils.py b/utils.py index 721a93d..98a1f40 100644 --- a/utils.py +++ b/utils.py @@ -45,7 +45,7 @@ async def call_official(request: Request, path: str) -> httpx.Response: # Forward request upstream upstream_response = await official_client.request( method=request.method, - url=f"{str(request.base_url).rstrip('/').replace("http://", "https://")}/{path}", + url=f"{str(request.base_url).rstrip('/')}/{path}", # .replace("http://", "https://") headers=req_headers, content=body, params=request.query_params,