dvr_admin/CHANGELOG.md
deeily 0021730359 Release dvr_admin v1.7
- Мои виды: создание именованных видов с произвольным набором камер
- Переименование каналов (per-user) в «Мои виды»
- Полноэкранный плеер доступен из «Мои виды»
- Архивный плеер: FPS с DVR через ISAPI, окно 24ч, без параллельных потоков при seek
- Исправлен плеер в /view (display:none override)
- Версия в APP_VERSION
2026-04-08 01:01:57 +03:00

9.8 KiB
Raw Blame History

Changelog

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

[1.7] — 2026-04-07

Добавлено

  • Мои виды — новый раздел в боковом меню: пользователь создаёт произвольные виды с любым набором камер из разрешённых ему регистраторов
  • Камеры в виде перетаскиваются (drag-and-drop), порядок сохраняется
  • Редактор вида: модальное окно с переименованием и управлением камерами (выбор по DVR с чекбоксами)
  • SSE-эндпоинт /api/myview/sse — единый поток превью для камер с разных регистраторов
  • Полноэкранный плеер (прямой эфир + архив + скачивание клипа) доступен из «Мои виды»
  • Переименование каналов в «Мои виды»: каждый пользователь задаёт своё название, сохраняется в БД
  • Версия приложения вынесена в константу APP_VERSION в начале скрипта

Улучшено

  • Архивный плеер: окно воспроизведения расширено с 1 до 24 часов — длинные записи больше не обрываются
  • Архивный плеер: FPS берётся с регистратора через ISAPI (maxFrameRate), фоллбэк 20 fps
  • Архивный плеер: при переключении времени (клик по таймлайну) предыдущий поток явно завершается — нет параллельных соединений
  • Архивный плеер: ffmpeg-путь тоже throttle до реального FPS — потребление памяти при просмотре архива снижено

[1.6.1] — 2026-04-07

Улучшено

  • Скачивание клипа: прогресс-бар с двумя фазами — «Загрузка с DVR» (байты / процент) и «Конвертация»
  • Скачивание клипа: задание выполняется в фоновом потоке, браузер не блокируется
  • Кнопка «Отменить» прерывает фоновое задание и сигнализирует SDK прекратить приём данных

[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('"', '"')
  • Валидация параметров: 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+