dvr_admin/CHANGELOG.md
deeily fa730238d0 Release dvr_admin v1.6
Переведено скачивание клипов на Hikvision SDK (PlayBackByTime_V40 +
data callback) — точное время по часам DVR без seek-смещения.
Исправлена загрузка SDK-библиотек через self-restart с LD_LIBRARY_PATH.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 12:26:38 +03:00

7.4 KiB
Raw Blame History

Changelog

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

[1.6] — 2026-04-07

Исправлено

  • Скачивание клипов переведено на Hikvision SDK (PlayBackByTime_V40 + data callback): точное время начала по часам DVR, без seek-смещения
  • SDK-библиотеки загружаются корректно: процесс перезапускается с правильным LD_LIBRARY_PATH, чтобы libPlayCtrl.so находила зависимость libAudioRender.so

[1.5] — 2026-04-06

Добавлено

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

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

  • CSRF-защита: все state-changing запросы (POST/PUT/DELETE) проверяют токен сессии; токен автоматически добавляется в формы и fetch-запросы через JavaScript
  • Куки сессии: установлены флаги HttpOnly и SameSite=Lax — куки недоступны из JS и не отправляются при кросс-сайтовых запросах
  • Открытый редирект: параметр next после логина принимается только как относительный путь, исключая редирект на внешние домены
  • XSS: все пользовательские данные в HTML-шаблонах экранируются через html.escape() вместо частичного replace('"', '&quot;')
  • Валидация параметров: 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+