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

97 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Changelog
Все значимые изменения фиксируются в этом файле.
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/).
## [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+