30 lines
933 B
Python
30 lines
933 B
Python
# 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"})
|