diff --git a/app/main.py b/app/main.py index d8c0077..766be04 100644 --- a/app/main.py +++ b/app/main.py @@ -159,6 +159,52 @@ async def request_logging_middleware(request: Request, call_next): return response + +import re as _re_mob + +_MOBILE_UA_RE = _re_mob.compile( + r"(Mobile|Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|webOS)", + _re_mob.IGNORECASE, +) +_MOBILE_PAGE = ( + "" + '' + "" + '' + '' + "МОНТ - инфрастуктурный полигон" + "" + "" + "" + '' + '
🖥
' + "

Ресурс доступен
только с ПК

" + "

Пожалуйста, откройте эту страницу на компьютере или ноутбуке.

" + "" + "" +) + + +@app.middleware("http") +async def mobile_block_middleware(request: Request, call_next): + path = request.url.path + if path.startswith("/static/"): + return await call_next(request) + ua = request.headers.get("user-agent", "") + if _MOBILE_UA_RE.search(ua): + from starlette.responses import HTMLResponse as _HR + return _HR(content=_MOBILE_PAGE, status_code=200) + return await call_next(request) + class Base(DeclarativeBase): pass