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:
Андрей Бобырев
2026-04-26 10:47:55 +03:00
parent d8ee078ef5
commit 7c2adf95b9
3 changed files with 14 additions and 4 deletions

11
auth.py
View File

@@ -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: