- 5 min sustained offline window для VPS/PC/Synology/HA (раньше было только у
Keenetic) + новый STARTUP_GRACE_SEC=300 — первые 5 минут после старта сервиса
алёрты offline не отправляются, но состояние трекается. Это убирает массовый
fantom-alert при перезапуске vps-monitoring.
- Атомарная запись JSON-файлов через tempfile+os.replace и явный encoding=utf-8
везде (data/keenetic.json, pc_agents.json, synology.json, homeassistant.json,
servers.json, settings.json, metrics.json). Краш в момент записи больше не
оставляет битый файл с русскими названиями.
- Чистка: убран неиспользуемый passlib + dead bcrypt-импорт в auth.py
(verify_password всё равно был обычным сравнением); SECRET_KEY можно
переопределить через VPS_MONITORING_SECRET; убран мертвый import json там,
где он больше не нужен.
- Bump app.js cache bust до 20260524c.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace KeenDNS-only edit with a complete form (name, URL, login,
password, AnyDesk). PATCH API now supports rename and keeps password
when the field is left empty.
Co-authored-by: Cursor <cursoragent@cursor.com>
aiohttp hung on KeenDNS from VPS while httpx works (keenetic-unified
pattern). Align add/import/bulk URL parsing with parse_keenetic_web_url.
Co-authored-by: Cursor <cursoragent@cursor.com>
KeenDNS returns multiple A records including unreachable IPs; aiohttp
was timing out on the first bad address. Iterate all resolved IPs with
short connect timeouts, serialize polls with a lock, and fail faster.
Co-authored-by: Cursor <cursoragent@cursor.com>
Run refresh-all in background so API stays responsive during 24-router
poll. Cap per-device poll at 75s, add 2s gap between routers, bump
KeenDNS connect/read timeouts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add PATCH endpoint and inline card editor to update web_url and host,
with URL validation and automatic refresh after save.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use web_url scheme and host:port for API base URL instead of
forcing https. Force IPv4 in aiohttp to avoid IPv6 hangs on
KeenDNS. Sync canonical 24-router list with Russian names.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add web_url/anydesk to router records, host fallback for Web button
on offline cards, cache-bust app.js, and scripts to sync import list.
Co-authored-by: Cursor <cursoragent@cursor.com>