Skip to content

Commit 9a3f8a9

Browse files
committed
fix(telegram): always register session generation endpoints
Session endpoints (/proxy/telegram/session/{start,verify,2fa,cancel}) were only registered when enable_telegram=True (which defaults to False). POST requests to those paths fell through to the StaticFiles catch-all mount, which only handles GET/HEAD and returned 405 Method Not Allowed. Split session routes into a separate telegram_session_router that is always included unconditionally, independent of enable_telegram. This allows users to generate a session string via the web UI before setting enable_telegram=True — which is the intended workflow. Closes #280
1 parent c4d318e commit 9a3f8a9

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

mediaflow_proxy/main.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,12 @@ async def check_base64_url(url: str):
309309
from mediaflow_proxy.routes.acestream import acestream_router
310310

311311
app.include_router(acestream_router, prefix="/proxy", tags=["acestream"], dependencies=[Depends(verify_api_key)])
312+
from mediaflow_proxy.routes.telegram import telegram_session_router
313+
314+
# Session generation endpoints are always available so users can generate a
315+
# session string even before enabling the Telegram feature.
316+
app.include_router(telegram_session_router, prefix="/proxy", tags=["telegram"], dependencies=[Depends(verify_api_key)])
317+
312318
if settings.enable_telegram:
313319
from mediaflow_proxy.routes.telegram import telegram_router
314320

mediaflow_proxy/routes/telegram.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,13 @@
3131
logger = logging.getLogger(__name__)
3232
telegram_router = APIRouter()
3333

34+
# Session generation routes are registered unconditionally (independent of
35+
# enable_telegram) so users can generate a session string before enabling the
36+
# Telegram feature. Mounting them on telegram_router would make them
37+
# unavailable when enable_telegram=False, causing the StaticFiles catch-all
38+
# to return 405 on POST requests.
39+
telegram_session_router = APIRouter()
40+
3441
if TYPE_CHECKING:
3542
from mediaflow_proxy.utils.telegram import TelegramMediaRef
3643

@@ -904,7 +911,7 @@ class Session2FARequest(BaseModel):
904911
password: str
905912

906913

907-
@telegram_router.post("/telegram/session/start")
914+
@telegram_session_router.post("/telegram/session/start")
908915
async def session_start(request: SessionStartRequest):
909916
"""
910917
Start the session generation process.
@@ -995,7 +1002,7 @@ async def session_start(request: SessionStartRequest):
9951002
raise HTTPException(status_code=500, detail=f"Failed to start session: {type(e).__name__}: {str(e)}")
9961003

9971004

998-
@telegram_router.post("/telegram/session/verify")
1005+
@telegram_session_router.post("/telegram/session/verify")
9991006
async def session_verify(request: SessionCodeRequest):
10001007
"""
10011008
Verify the code sent to user's Telegram.
@@ -1053,7 +1060,7 @@ async def session_verify(request: SessionCodeRequest):
10531060
raise HTTPException(status_code=400, detail=f"Verification failed: {error_msg}")
10541061

10551062

1056-
@telegram_router.post("/telegram/session/2fa")
1063+
@telegram_session_router.post("/telegram/session/2fa")
10571064
async def session_2fa(request: Session2FARequest):
10581065
"""
10591066
Complete 2FA authentication.
@@ -1098,7 +1105,7 @@ async def session_2fa(request: Session2FARequest):
10981105
raise HTTPException(status_code=400, detail=f"2FA verification failed: {error_msg}")
10991106

11001107

1101-
@telegram_router.post("/telegram/session/cancel")
1108+
@telegram_session_router.post("/telegram/session/cancel")
11021109
async def session_cancel(session_id: str = Query(..., description="Session ID to cancel")):
11031110
"""
11041111
Cancel a pending session generation.

0 commit comments

Comments
 (0)