From e1d6e6bb815e81cd8a55128f53fc7dfcdf10f47c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=91=D0=BE=D0=B1?= =?UTF-8?q?=D1=8B=D1=80=D0=B5=D0=B2?= Date: Sat, 25 Apr 2026 00:40:47 +0300 Subject: [PATCH] fix(auth): empty ADMIN_PASSWORD in .env now falls back to admin; strip passwords Made-with: Cursor --- .env.example | 1 + app/config.py | 7 ++++--- app/main.py | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index a4d929c..a71d135 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,6 @@ HOST=0.0.0.0 PORT=8001 +# Если строка пустая или ключ убран — будет пароль admin ADMIN_PASSWORD=change-me # Один логин/пароль для всех роутеров (KeenDNS HTTP Proxy → RCI) diff --git a/app/config.py b/app/config.py index 4f0ec58..c0a5ec3 100644 --- a/app/config.py +++ b/app/config.py @@ -11,7 +11,8 @@ STORE_FILE = DATA_DIR / "store.json" HOST = os.getenv("HOST", "0.0.0.0") PORT = int(os.getenv("PORT", "8001")) -ADMIN_PASSWORD = os.getenv("ADMIN_PASSWORD", "admin") +# Пустая строка в .env (ADMIN_PASSWORD=) не даёт дефолт через getenv — явно подставляем admin +ADMIN_PASSWORD = (os.getenv("ADMIN_PASSWORD") or "admin").strip() -KEENETIC_LOGIN = os.getenv("KEENETIC_LOGIN", "admin") -KEENETIC_PASSWORD = os.getenv("KEENETIC_PASSWORD", "") +KEENETIC_LOGIN = (os.getenv("KEENETIC_LOGIN") or "admin").strip() +KEENETIC_PASSWORD = (os.getenv("KEENETIC_PASSWORD") or "").strip() diff --git a/app/main.py b/app/main.py index 40e82b8..7aae4b9 100644 --- a/app/main.py +++ b/app/main.py @@ -24,7 +24,7 @@ TPL = Path(__file__).resolve().parent.parent / "templates" def _chk(pwd: str) -> None: - if config.ADMIN_PASSWORD and pwd != config.ADMIN_PASSWORD: + if (pwd or "").strip() != config.ADMIN_PASSWORD: raise HTTPException(401, "Неверный пароль") @@ -44,7 +44,7 @@ async def index(): @app.post("/api/auth") async def api_auth(b: AuthBody): - if config.ADMIN_PASSWORD and b.password == config.ADMIN_PASSWORD: + if (b.password or "").strip() == config.ADMIN_PASSWORD: return {"ok": True} raise HTTPException(401, "Wrong password")