Volver
QVR-ADX — Gestor de Videovigilancia QNAP

QVR-ADX — Gestor de Videovigilancia QNAP

QVR-ADX

API REST en Go que actúa como intermediaria entre un frontend web y un NAS QNAP con QVR (sistema de videovigilancia). Todo el protocolo de comunicación con el QNAP —autenticación, consulta de grabaciones, streaming— fue obtenido mediante ingeniería inversa, ya que QNAP no documenta públicamente su API de QVR. A base de capturar tráfico HTTP desde el panel web original, analizar los endpoints, parámetros, tokens de sesión y estructura de respuestas, reconstruí el cliente necesario para integrarlo en una API propia. Permite buscar grabaciones por rango de fechas, previsualizar miniaturas, reproducir videos y gestionar la configuración de conexión al NAS, todo desde una interfaz web con React. Pensado para desplegar con Docker Compose detrás de nginx.

Qué hace

El proceso de ingeniería inversa consistió en interceptar las peticiones HTTP que hace el panel web original de QVR (con las DevTools del navegador) para descubrir el flujo de autenticación (authLogin.cgi), el formato de los tokens de sesión (authSid en XML), y los parámetros exactos del endpoint /qvrsurveillance/recviewer/v1/func/viewer (act, sid, view_time, sort, offset, limit). Con eso, el backend se autentica contra la API del QNAP, obtiene un token de sesión y lo renueva automáticamente cada 25 minutos. Con ese token, consulta el endpoint del QVR para recuperar la lista de grabaciones de videovigilancia.

Implementa un sistema de búsqueda por meses: dado un rango de fechas, itera mes a mes paginando los resultados (500 por página), filtra por timestamp y devuelve solo las grabaciones dentro del período solicitado. Soporta consultas predefinidas: hoy, última semana, o rango personalizado.

El frontend muestra los resultados en una cuadrícula de thumbnails con un reproductor PLYR integrado. Incluye panel de estadísticas (total de grabaciones, cámaras activas), selector de cámara, búsqueda por fecha, y modal de configuración para cambiar la IP, puerto y credenciales del QNAP.

El proxy /api/proxy es clave: reenvía las peticiones de thumbnail, playback y download directamente al QNAP, incluyendo el token de autenticación en la query string. Esto permite que los recursos multimedia del NAS (que solo son accesibles en red local) se sirvan a través de la API desde cualquier IP pública.

Tech stack

Características clave