Lock the parser to prevent spam and repeated requests

This commit is contained in:
Nexus 2024-02-22 18:24:59 +00:00
parent 9f97c523d6
commit d7422926ad
Signed by: nex
GPG key ID: 0FA334385D0B689F

View file

@ -11,12 +11,12 @@ import httpx
import logging import logging
import sqlite3 import sqlite3
import appdirs import appdirs
from threading import Lock
from typing import Annotated from typing import Annotated
from fastapi import Query, Header, HTTPException, Request from fastapi import Query, Header, HTTPException, Request
from fastapi.responses import JSONResponse from fastapi.responses import JSONResponse
from pathlib import Path from pathlib import Path
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from rich.logging import RichHandler
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
@ -50,6 +50,7 @@ app = fastapi.FastAPI(
root_path=os.environ.get("PREVIEW_ROOT_PATH", ""), root_path=os.environ.get("PREVIEW_ROOT_PATH", ""),
lifespan=startup lifespan=startup
) )
lock = Lock()
app.add_middleware( app.add_middleware(
CORSMiddleware, CORSMiddleware,
allow_origins=["*"], allow_origins=["*"],
@ -231,7 +232,7 @@ def preview_url(
return json.loads(metadata) return json.loads(metadata)
domain = os.environ.get("PREVIEW_HOMESERVER", "https://" + req.url.hostname) domain = os.environ.get("PREVIEW_HOMESERVER", "https://" + req.url.hostname)
with lock:
try: try:
with httpx.Client( with httpx.Client(
headers={ headers={