Per-router RCI creds + .env fallback; parse user:pass@ URL; fix apply/checkbox (kdns-sel), save groups on toggle; update.sh

Made-with: Cursor
This commit is contained in:
Андрей Бобырев
2026-04-25 01:42:16 +03:00
parent ef946e37f2
commit 4f42da9a0e
10 changed files with 437 additions and 80 deletions

View File

@@ -13,9 +13,11 @@ class RouterSpec(BaseModel):
name: str
rci_base_url: str = Field(
...,
description="Например http://rci.home.keenetic.pro:79 (KeenDNS HTTP Proxy)",
description="Базовый URL HTTP Proxy (http(s)://хост:порт), без путей /rci/...",
)
enabled: bool = True
keenetic_login: str = Field(default="", description="Логин Keenetic для HTTP Proxy / RCI")
keenetic_password: str = Field(default="", description="Пароль Keenetic для RCI")
class StoreData(BaseModel):
@@ -34,9 +36,11 @@ class StoreData(BaseModel):
if isinstance(v, dict):
g[k] = GroupSpec(**v)
rlist = []
from .rci_url import sanitize_router_dict
for r in raw.get("routers") or []:
if isinstance(r, dict) and r.get("id"):
rlist.append(RouterSpec(**r))
rlist.append(RouterSpec(**sanitize_router_dict(r)))
return cls(groups=g, routers=rlist)
def to_json(self) -> dict[str, Any]: