mirror of
https://github.com/andrey271192/keenetic_ssh-web.git
synced 2026-09-20 14:42:01 +00:00
auth: HTTPS с self-signed сертификатами + расширенный дефолт ROUTER_HOST
- urllib теперь идёт на HTTPS с unverified context (Keenetic админка обычно с самоподписанным сертификатом) - .env по умолчанию содержит и HTTP, и HTTPS, и :81 для LAN-IP, плюс my.keenetic.net и loopback — пробуется всё подряд
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
# Можно перечислить через запятую — будет пробовать по порядку, пока кто-то не примет.
|
||||
# Установщик сам подставит LAN-IP роутера, если запущен на нём.
|
||||
# Часто loopback закрыт админкой Keenetic — основной кандидат это LAN-IP.
|
||||
ROUTER_HOST=http://192.168.1.1,http://my.keenetic.net,http://127.0.0.1
|
||||
ROUTER_HOST=http://192.168.1.1,https://192.168.1.1,http://192.168.1.1:81,http://my.keenetic.net,https://my.keenetic.net,http://127.0.0.1
|
||||
|
||||
# Логин по умолчанию в форме входа (можно изменить руками при логине)
|
||||
ROUTER_LOGIN=admin
|
||||
|
||||
11
auth.py
11
auth.py
@@ -14,6 +14,7 @@ import http.cookiejar
|
||||
import json
|
||||
import logging
|
||||
import secrets
|
||||
import ssl
|
||||
import threading
|
||||
import time
|
||||
import urllib.error
|
||||
@@ -21,6 +22,11 @@ import urllib.request
|
||||
|
||||
log = logging.getLogger("kssh.auth")
|
||||
|
||||
# У Keenetic админка на HTTPS обычно с самоподписанным сертификатом — отключаем проверку.
|
||||
_SSL_CTX = ssl.create_default_context()
|
||||
_SSL_CTX.check_hostname = False
|
||||
_SSL_CTX.verify_mode = ssl.CERT_NONE
|
||||
|
||||
|
||||
def _normalize_host(host: str) -> str:
|
||||
h = (host or "").strip().rstrip("/")
|
||||
@@ -41,7 +47,10 @@ def keenetic_validate(host: str, login: str, password: str, timeout: float = 5.0
|
||||
if not base or not login or password is None:
|
||||
return False
|
||||
cj = http.cookiejar.CookieJar()
|
||||
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
|
||||
opener = urllib.request.build_opener(
|
||||
urllib.request.HTTPCookieProcessor(cj),
|
||||
urllib.request.HTTPSHandler(context=_SSL_CTX),
|
||||
)
|
||||
realm = ""
|
||||
challenge = ""
|
||||
try:
|
||||
|
||||
@@ -27,8 +27,9 @@ if [ ! -f "$INST/.env" ]; then
|
||||
| awk '$4 ~ /^(192\.168|10|172\.(1[6-9]|2[0-9]|3[01]))\..*\.1\// {sub("/.*","",$4); print $4; exit}'
|
||||
)"
|
||||
if [ -n "$LAN_IP_GUESS" ]; then
|
||||
sed -i "s|^ROUTER_HOST=.*|ROUTER_HOST=http://${LAN_IP_GUESS},http://my.keenetic.net,http://127.0.0.1|" "$INST/.env" 2>/dev/null || true
|
||||
echo "==> .env: ROUTER_HOST подставлен LAN-IP $LAN_IP_GUESS (можно изменить в $INST/.env)"
|
||||
DEFAULT_HOSTS="http://${LAN_IP_GUESS},https://${LAN_IP_GUESS},http://${LAN_IP_GUESS}:81,http://my.keenetic.net,https://my.keenetic.net,http://127.0.0.1"
|
||||
sed -i "s|^ROUTER_HOST=.*|ROUTER_HOST=${DEFAULT_HOSTS}|" "$INST/.env" 2>/dev/null || true
|
||||
echo "==> .env: ROUTER_HOST подставлен LAN-IP $LAN_IP_GUESS (HTTP/HTTPS, можно изменить в $INST/.env)"
|
||||
fi
|
||||
echo "!!! Создан $INST/.env — при необходимости задайте WEB_PASSWORD/ALLOWED_IPS"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user