- 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/
6.9 KiB
6.9 KiB
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
- Архивный плеер: спиннер ожидания при загрузке потока (переключение режима, перемотка, клик по таймлайну)
- Архивный плеер: отображение текущего времени воспроизведения обновляется каждую секунду
- Таймлайн: убраны сегменты записей, метки каждый час (0–24) вместо каждых 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+