dvr_admin/CHANGELOG.md
deeily 3da61f09ca Release dvr_admin v1.5
- Archive player: loading spinner on stream start/seek/timeline click
- Archive player: live clock updates every second during playback
- Timeline: removed segment overlays, hourly labels (0–24)
- Clip download: split time inputs into separate HH/MM/SS fields
- Clip download: cancel button aborts fetch and kills ffmpeg on server
- Security: CSRF protection, HttpOnly/SameSite cookies, XSS escaping,
  parameter validation, access control on ping endpoint
- Dashboard: user-specific DVR cards, live clock and version widgets
- Preview channels resume after closing fullscreen player
- Docker: moved SDK libs into dvr_admin/, cleaned up dvr_admin_docker/
2026-04-06 22:46:19 +03:00

6.9 KiB
Raw Blame History

Changelog

Все значимые изменения фиксируются в этом файле.
Формат основан на Keep a Changelog.

[1.5] — 2026-04-06

Добавлено

  • Дашборд обычного пользователя: карточки «Время» (живые часы) и «Версия»
  • Дашборд: обычный пользователь видит только разрешённые ему регистраторы
  • IP регистратора в шапке предпросмотра — кликабельная ссылка на веб-интерфейс устройства

Безопасность

  • CSRF-защита: все state-changing запросы (POST/PUT/DELETE) проверяют токен сессии; токен автоматически добавляется в формы и fetch-запросы через JavaScript
  • Куки сессии: установлены флаги HttpOnly и SameSite=Lax — куки недоступны из JS и не отправляются при кросс-сайтовых запросах
  • Открытый редирект: параметр next после логина принимается только как относительный путь, исключая редирект на внешние домены
  • XSS: все пользовательские данные в HTML-шаблонах экранируются через html.escape() вместо частичного replace('"', '"')
  • Валидация параметров: channel, year, month проверяются на допустимый формат и диапазон до использования в XML-запросах и вычислениях
  • Контроль доступа: /api/dvr/<id>/ping теперь проверяет права пользователя на конкретный DVR
  • Небезопасный ключ по умолчанию: при запуске без SECRET_KEY выводится предупреждение в stderr

Убрано

  • Лишние папки и скрипты со старым кодом который уже нигде не используется

Исправлено

  • Удаление пользователя не срабатывало — клик всплывал на строку таблицы и перехватывался её onclick
  • После добавления CSRF-защиты ломались пинги регистраторов (порядок загрузки скриптов)
  • После выхода из просмотра канала предпросмотр не возобновлял поток

Улучшено

  • Предпросмотр каналов, плеер, календарь и таймлайн теперь полностью адаптируются к светлой/тёмной теме
  • Кнопка «Войти» на странице логина: hover больше не сливается с фоном
  • IP регистратора в шапке: обводка-кнопка без подчёркивания, появляется только после выбора DVR
  • Архивный плеер: спиннер ожидания при загрузке потока (переключение режима, перемотка, клик по таймлайну)
  • Архивный плеер: отображение текущего времени воспроизведения обновляется каждую секунду
  • Таймлайн: убраны сегменты записей, метки каждый час (024) вместо каждых 3 часов
  • Скачивание клипа: поля времени разбиты на отдельные ЧЧ / ММ / СС — каждая часть редактируется независимо
  • Скачивание клипа: кнопка «Отменить» прерывает загрузку и завершает ffmpeg-процесс на сервере

[1.4] — 2026-04-05

Добавлено

  • Сохранение пользовательского порядка каналов предпросмотра (drag-and-drop, per-user)

[1.2] — 2026-04-05

Добавлено

  • Смена пароля веб-пользователей (включая admin)
  • Отключение/включение учётных записей (включая admin)
  • Docker-контейнер: dvr_admin_docker/ с Gunicorn, инструкция деплоя DEPLOY.md
  • Ключ шифрования Fernet через переменную окружения FERNET_KEY

Исправлено

  • Скачивание клипа всегда начиналось с начала сегмента — теперь с запрошенного времени (byte-range seek)
  • Колонки таблицы веб-пользователей съезжали при добавлении колонки «Статус»

[1.1] — 2026-04-03

Добавлено

  • Панель сохранения клипа: выбор времени начала/конца, формат mp4/mkv/gif
  • Быстрое скачивание клипов через ISAPI HTTP download (~14 MB/s вместо RTSP)
  • YouTube-подобный спиннер загрузки для предпросмотра, основного потока и архива
  • Адаптивный FPS основного потока и архива (подстраивается под DVR)

Исправлено

  • ffmpeg-процессы не завершались при переключении между DVR — утечка CPU
  • Предпросмотр не загружался на DVR со спецсимволами в пароле (;#{}])
  • Клипы скачивались с начала сегмента вместо запрошенного времени

Улучшено

  • Предпросмотр: 1 fps на канал через -skip_frame noref (снижение нагрузки на CPU)
  • SSE-поток предпросмотра ставится на паузу при открытии полноэкранного плеера

[1.0] — 2026-04-01

Добавлено

  • Централизованное управление регистраторами Hikvision
  • Авторизация с bcrypt, шифрование паролей DVR через Fernet
  • Предпросмотр каналов через SSE (Server-Sent Events)
  • Просмотр архива с календарём и треком записей
  • Управление пользователями и правами доступа к DVR/концепциям
  • Поддержка Hikvision SDK (libhcnetsdk, libPlayCtrl) для Hi-Watch HEVC+