auth: ROUTER_HOST как список + диагностика причин в логе

На Keenetic админка часто не слушает loopback — биндится только на
LAN-интерфейсах. Делаем ROUTER_HOST списком (через запятую), пробуем
все по порядку.

- auth.py: keenetic_validate_any() — обходит список, на каждом шаге
  пишет в лог конкретную причину отказа: unreachable / нет realm /
  POST HTTP <code> / неверный логин-пароль
- app.py: парсит ROUTER_HOST как список (csv); login fail логируется
- install.sh: при создании свежего .env подставляет в ROUTER_HOST
  обнаруженный LAN-IP, my.keenetic.net и loopback (через запятую)
- .env.example: тот же дефолт, комментарии обновлены
This commit is contained in:
Андрей Бобырев
2026-04-26 01:32:34 +03:00
parent 282f205759
commit d8ee078ef5
4 changed files with 56 additions and 16 deletions

View File

@@ -1,7 +1,9 @@
# --- Авторизация по логину/паролю от веб-админки роутера (рекомендуется) ---
# HTTP-адрес админки Keenetic. На самом роутере обычно подходит loopback.
# Если приложение крутится в той же LAN — поставьте http://192.168.1.1
ROUTER_HOST=http://127.0.0.1
# HTTP-адрес(а) админки Keenetic для проверки логина/пароля.
# Можно перечислить через запятую — будет пробовать по порядку, пока кто-то не примет.
# Установщик сам подставит LAN-IP роутера, если запущен на нём.
# Часто loopback закрыт админкой Keenetic — основной кандидат это LAN-IP.
ROUTER_HOST=http://192.168.1.1,http://my.keenetic.net,http://127.0.0.1
# Логин по умолчанию в форме входа (можно изменить руками при логине)
ROUTER_LOGIN=admin