📊 Dashboard 👥 Gestión de Clientes 📺 Gestión de Streams 📁 Gestión de Categorías ⚙️ Configuración del Sistema
Distribución Usuarios
Streams por Tipo
Top Streams
Sin datos aún
📊 Actividad (Últimos 7 días)
Conexiones diarias⚡ En Tiempo Real
📱 Dispositivos Conectados
📝 Actividad Reciente
No hay actividad reciente
👥 Gestión de Usuarios
{{ filteredUsers.length }} de {{ users.length }} usuarios
| 👤 Usuario | ⚡ Estado | 🔌 Max Conexiones | ⏰ Expira | ⚙️ Acciones | |
|---|---|---|---|---|---|
|
{{ user.username.charAt(0).toUpperCase() }}
{{ user.username }}
|
{{ user.email || '-' }} | {{ user.status === 'active' ? '✓ Activo' : user.status === 'suspended' ? '⏸ Suspendido' : '✕ Inactivo' }} | {{ user.max_connections }} | {{ formatDate(user.expires_at) }} |
📺 Gestión de Streams
{{ filteredStreams.length }} de {{ streams.length }} canales
| #️⃣ ID | 📺 Nombre | 🎭 Tipo | 📁 Categoría | 🏥 Health | ⚡ Estado | ⚙️ Acciones |
|---|---|---|---|---|---|---|
| {{ stream.stream_id }} |
{{ stream.type === 'live' ? '📡' : stream.type === 'vod' ? '🎬' : '📺' }}
{{ stream.name }}
|
{{ stream.type === 'live' ? '📡 LIVE' : stream.type === 'vod' ? '🎬 VOD' : '📺 SERIES' }} | {{ getCategoryName(stream.category_id) }} |
🟢
🔴
🟡
⚪
{{ stream.check_status || 'Sin verificar' }}
{{ stream.response_time_ms }}ms
{{ stream.codec_info.video }} / {{ stream.codec_info.audio }}
{{ stream.codec_info.resolution }}
|
{{ stream.status === 'active' ? '✓ Activo' : '✕ Inactivo' }} |
|
📁 Gestión de Categorías
{{ filteredCategories.length }} de {{ categories.length }} categorías
| 📁 Nombre | 🎭 Tipo | 🔢 Orden | ⚙️ Acciones |
|---|---|---|---|
|
📁
{{ category.name }}
|
{{ category.type === 'live' ? '📡 LIVE' : category.type === 'vod' ? '🎬 VOD' : '📺 SERIES' }} | #{{ category.sort_order }} |
|
⚙️ Configuración del Sistema
{{ systemConfig.length }} parámetros configurables
{{ config.key }}
{{ config.category }}
⚠️ Nota: Cambiar puertos de servicios requiere reiniciar el sistema para aplicar los cambios.
🔒 Seguridad y Control de Acceso
Gestiona conexiones, bloqueos y límites
🔌 Conexiones Activas por Usuario
👤 {{ userConn.username }}
{{ userConn.connections.length }} conexión(es) activa(s)
🚫 IPs Bloqueadas
| IP Address | Razón | Bloqueado | Expira | Estado | Acciones |
|---|---|---|---|---|---|
| {{ entry.ip_address }} | {{ entry.reason || '-' }} | {{ formatDateTime(entry.blocked_at) }} | {{ entry.expires_at ? formatDateTime(entry.expires_at) : 'Permanente' }} | BLOQUEADO EXPIRADO |
|
| No hay IPs bloqueadas | |||||
⚠️ Intentos de Conexión Bloqueados
Registro de intentos rechazados por límite de conexiones o IP bloqueada
| Fecha | Usuario | IP | Razón | Stream | Acciones |
|---|---|---|---|---|---|
| {{ formatDateTime(attempt.attempted_at) }} | {{ attempt.username }} | {{ attempt.ip_address }} | LÍMITE EXCEDIDO IP BLOQUEADA {{ attempt.reason }} | {{ attempt.stream_name || '-' }} |
|
| No hay intentos bloqueados registrados | |||||
📊 Límites de Conexión por Usuario
Configura cuántos dispositivos pueden conectarse simultáneamente
| Usuario | Límite Actual | Modo | Acciones | |
|---|---|---|---|---|
| {{ user.username }} | {{ user.email || '-' }} | {{ user.max_connections || 1 }} | ESTRICTO FLEXIBLE |
|
| No hay usuarios registrados | ||||
🚫 Bloquear Dirección IP
Dejar vacío para bloqueo permanente
📊 Configurar Límite de Conexión
Usuario: {{ limitForm.username }}
Número de dispositivos que pueden reproducir al mismo tiempo