PACServer/app/__init__.py

30 lines
933 B
Python
Raw Permalink Normal View History

2024-05-29 23:27:43 +03:00
# This software is licensed by the MIT License, see LICENSE file
# Copyright © 2024 Gregory Lirent
from fastapi import FastAPI, Request, Response, HTTPException
from .models import PACContent
pac: PACContent | None = None
app = FastAPI()
def init(filename: str | None = None):
global pac
if not filename:
pac = None
else:
pac = PACContent(filename)
@app.get("/")
async def root(request: Request, view: bool = False):
if not pac:
raise HTTPException(status_code=500, detail="Config is not set")
print(request.headers.get('X-Real-IP', None) or request.client.host)
return Response(status_code=200, media_type="application/javascript",
content=pac.render_for(request.headers.get('X-Real-IP', None) or request.client.host),
headers=None if view else {"Content-Disposition": "attachment; filename=wpad.dat"})