Control Server (FastAPI) с WEB UI (Jinja2 + HTMX) и JSON API для группового администрирования устройств RouterOS 7 через REST. - Устройства: список, статус (модель, канал, версии ROS/FW, uptime, доступные обновления), примечания, пароли шифруются (Fernet); фоновый опрос каждые 30 с и быстрое обнаружение недоступности (таймаут соединения 4 с). - Группы устройств и фильтры (устройства, резервные копии). - Резервные копии: .backup и .rsc (show-sensitive) создаются через REST, скачиваются сервером и загружаются в S3 (Yandex Object Storage). - Обновление ROS/FW и выбор канала, групповые операции задачами. - Интерфейс по утверждённому макету: светлая/тёмная темы, окна, шрифты IBM Plex локально. Docker Compose, SQLite в томе, минимальный набор тестов. - Планы и итоги каждого изменения — в docs/changes/. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
20 lines
1.7 KiB
Markdown
20 lines
1.7 KiB
Markdown
# Итоги: 002 — HTTP-подключение и исправления
|
||
|
||
## Сделано
|
||
- Флаг `use_tls` у устройства (API, UI, БД + автомиграция колонки). HTTP — только для доверенной сети.
|
||
- Сообщения об ошибках подключения содержат URL и тип ошибки (раньше — пустое `ConnectError:`).
|
||
- Исправлено падение на не-UTF-8 ответах RouterOS (`GET /file`).
|
||
- Устройство `msk-home` переведено на порт 80/HTTP: статус считывается (модель, канал, ROS, FW, uptime).
|
||
|
||
## Найдено при тесте
|
||
- Порт 8729 — `api-ssl`, не REST. REST: `www-ssl` (443) или `www` (80).
|
||
- Пользователь `apicontrol` в группе `write` с `!ftp,!policy`: `backup/save`, `export` → `not enough permissions (9)`;
|
||
`/tool/fetch` → `cannot open file: permission denied`. Нужна политика `ftp` (при необходимости `policy`).
|
||
- `ros_latest`/`ros_update_status` пусты, пока не выполнена проверка обновлений (`check-for-updates`).
|
||
|
||
## Не проверено
|
||
Бэкап целиком (ждёт выдачи прав пользователю), загрузка в S3 через `/tool/fetch`, обновления ROS/FW.
|
||
|
||
## Дополнение
|
||
Права `apicontrol` были причиной ошибок `not enough permissions`: после выдачи `full` и пересоздания подключения `backup/save` заработал (см. 003). Загрузка через `/tool/fetch` оказалась неприменима — заменена в 003.
|