diff --git a/api/main.py b/api/main.py index 49454f3..5dc1c79 100644 --- a/api/main.py +++ b/api/main.py @@ -42,7 +42,7 @@ from utils.lock import ( maintain_heartbeat, release_scheduler_lock, ) -from utils.network import get_request_namespace, get_user_public_ip, get_user_data +from utils.network import get_request_namespace, get_user_public_ip, get_user_data, get_secret_str from utils.parser import generate_manifest from utils.runtime_const import ( DELETE_ALL_META, @@ -606,7 +606,7 @@ async def get_streams( video_id: str, response: Response, request: Request, - secret_str: str = None, + secret_str: str = Depends(get_secret_str), season: int = None, episode: int = None, user_data: schemas.UserData = Depends(get_user_data), diff --git a/api/middleware.py b/api/middleware.py index 4d27089..f4938c1 100644 --- a/api/middleware.py +++ b/api/middleware.py @@ -71,6 +71,7 @@ class UserDataMiddleware(BaseHTTPMiddleware): encoded_user_data = request.headers.get("encoded_user_data") if encoded_user_data: user_data = crypto_utils.decode_user_data(encoded_user_data) + secret_str = await crypto_utils.process_user_data(user_data) else: secret_str = request.path_params.get("secret_str") or request.query_params.get("secret_str") user_data = await crypto_utils.decrypt_user_data(secret_str) @@ -126,6 +127,7 @@ class UserDataMiddleware(BaseHTTPMiddleware): # Attach UserData to request state for access in endpoints request.scope["user"] = user_data + request.scope["secret_str"] = secret_str return await call_next(request) diff --git a/utils/network.py b/utils/network.py index eafeeaa..e0c9214 100644 --- a/utils/network.py +++ b/utils/network.py @@ -328,6 +328,8 @@ def get_request_namespace(request: Request) -> str: def get_user_data(request: Request, secret_str: str | None = None) -> UserData: return request.user +def get_secret_str(request: Request) -> str: + return request.scope.get("secret_str") def encode_mediaflow_proxy_url( mediaflow_proxy_url: str,