- Agregar editor visual de configuración avanzada con protección por contraseña
- Implementar rangos de IPs administrativas personalizados por segmento
- Crear AdminRangeHelper.php para procesamiento de JSON por segmento
- Agregar botón ⚙️ de acceso rápido al editor
- Implementar modal de autenticación con validación de contraseña
- Agregar fallback inteligente a rangos globales para segmentos no configurados
Configuración avanzada:
- 3 campos nuevos en manifest.json (checkbox, JSON textarea, password)
- Editor visual completo con formularios dinámicos
- Agregar/eliminar segmentos y rangos en tiempo real
- Tabla de segmentos configurados con acciones
- Validación de cambios sin guardar
- Mensaje de éxito al guardar configuración
Backend:
- AdminRangeHelper.php: getSegmentLimits(), isAdminIpCustom(), validateConfigJson()
- IpSearchService.php: soporte para rangos personalizados con fallback
- Handler POST para guardar configuración JSON
Frontend:
- ~250 líneas de JavaScript para gestión del editor
- CSS responsive con soporte para temas claro/oscuro
- Interfaz amigable para usuarios no técnicos
Lógica de fallback:
- Checkbox desactivado → rangos globales para todos
- Checkbox activado + segmento en JSON → rangos del JSON
- Checkbox activado + segmento NO en JSON → fallback a rangos globales
Archivos creados:
- src/AdminRangeHelper.php
Archivos modificados:
- manifest.json: 3 campos nuevos, versión 1.5.0
- src/IpSearchService.php: lógica de fallback
- public.php: editor completo, modal, JavaScript
- CHANGELOG.md: entrada v1.5.0
- README.md: documentación de nuevos campos"
314 lines
13 KiB
Markdown
314 lines
13 KiB
Markdown
# Changelog
|
|
|
|
Todos los cambios notables en este proyecto serán documentados en este archivo.
|
|
|
|
El formato está basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1.0.0/),
|
|
y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
|
|
|
|
---
|
|
|
|
## [1.5.0] - 2025-11-27
|
|
|
|
### ✨ Añadido
|
|
- **Configuración Avanzada de IPs Administrativas por Segmento**: Sistema completo de gestión de rangos administrativos personalizados por segmento.
|
|
- Editor visual protegido por contraseña
|
|
- Configuración JSON por segmento
|
|
- Múltiples rangos iniciales y finales por segmento
|
|
- Interfaz amigable para gestionar rangos
|
|
- **Botón de Configuración Avanzada** (⚙️): Acceso rápido al editor desde la interfaz principal.
|
|
- **Modal de Autenticación**: Protección por contraseña para acceso al editor.
|
|
- **Fallback Inteligente**: Segmentos no configurados en JSON usan automáticamente rangos globales.
|
|
|
|
### 🔧 Mejorado
|
|
- **AdminRangeHelper.php**: Nueva clase helper para procesar configuración JSON por segmento.
|
|
- **IpSearchService.php**: Lógica mejorada con soporte para rangos personalizados y fallback.
|
|
- **Validación de Cambios**: Advertencia al salir del editor con cambios sin guardar.
|
|
|
|
### 🎨 Interfaz
|
|
- Editor visual completo con formularios dinámicos
|
|
- Tabla de segmentos configurados
|
|
- Agregar/eliminar rangos en tiempo real
|
|
- Diseño responsive con soporte para temas claro/oscuro
|
|
|
|
## [1.4.0] - 2025-11-27
|
|
|
|
### ✨ Añadido
|
|
- **Rangos de IPs Administrativas Configurables**: Ahora puedes configurar qué rangos de IPs se consideran administrativas mediante 4 campos numéricos en la configuración del plugin (inicio/fin de rango inicial y final), en lugar de tener valores fijos (1-30 y 254).
|
|
|
|
### 🔧 Mejorado
|
|
- **Flexibilidad**: Permite adaptar la clasificación de IPs según las necesidades específicas de cada red.
|
|
- **Backend y Frontend**: Toda la lógica de clasificación ahora usa configuración dinámica.
|
|
|
|
## [1.3.3] - 2025-11-27
|
|
|
|
### ✨ Añadido
|
|
- **Modo Claro/Oscuro**: Botón toggle (☀️/🌙) en esquina superior derecha para cambiar entre temas con persistencia en localStorage.
|
|
- **Tema Claro**: Paleta de colores profesional para uso diurno con fondo claro y textos oscuros.
|
|
|
|
### 🔄 Mejorado
|
|
- **Tabla Móvil**: Optimizada para pantallas pequeñas ocultando columna "Tipo de IP" y mostrando el badge bajo la dirección IP (3 columnas en lugar de 5).
|
|
- **Límite por Defecto**: Cambiado a 5 IPs para búsquedas más rápidas.
|
|
- **Tipografía**: Direcciones IP más destacadas con fuente más grande y negrita.
|
|
|
|
## [1.3.2] - 2025-11-26
|
|
|
|
### ✨ Añadido
|
|
- **Botón de Cancelar Verificación**: Nuevo botón dinámico que aparece durante la verificación por ping, permitiendo detener el proceso en cualquier momento mientras se conservan los resultados ya obtenidos.
|
|
|
|
### 🔄 Mejorado
|
|
- **Responsividad Móvil**: Optimizada la alineación de checkboxes en dispositivos móviles para una mejor experiencia visual.
|
|
|
|
## [1.3.1] - 2025-11-26
|
|
|
|
### 🔄 Refinado
|
|
- **Renderizado Secuencial**: Las IPs de cliente aparecen una por una en la tabla conforme se inician sus verificaciones, creando un efecto visual más limpio y ordenado.
|
|
- **Limpieza de Resultados**: Si se selecciona un límite (ej. 5 IPs), la tabla solo muestra esas 5 IPs de cliente (más las administrativas), ocultando el resto del segmento.
|
|
- **Textos UI**: Actualizados para mayor claridad ("Válida para cliente", "Sólo validada con UISP").
|
|
|
|
## [1.3.0] - 2025-11-26
|
|
|
|
### ✨ Añadido
|
|
- **Carga Progresiva**: Los resultados de la búsqueda aparecen inmediatamente y la verificación por ping se realiza en segundo plano, actualizando el estado en tiempo real.
|
|
- **Feedback Visual Mejorado**: Nuevos iconos de estado (⏳ Verificando, ✅ Disponible, ⚠️ En uso) en la tabla de resultados.
|
|
- **Filtro de IPs Administrativas**: Nuevo checkbox para ocultar/mostrar IPs de administración (1-30, 254) al instante.
|
|
|
|
### 🔄 Mejorado
|
|
- **Rendimiento**: La interfaz ya no se bloquea durante la verificación por ping.
|
|
- **Experiencia de Usuario**: Se puede ver el progreso de la verificación IP por IP.
|
|
|
|
---
|
|
|
|
## [1.2.1] - 2025-11-26
|
|
|
|
### ✨ Añadido
|
|
- **Límite de IPs para verificación**: Nuevo selector para limitar la cantidad de IPs a verificar con ping (5, 10, 20 o Todas)
|
|
- Evita timeouts en segmentos grandes
|
|
- Prioriza IPs de cliente (las administrativas se muestran sin verificar cuando hay límite)
|
|
- **Defaults mejorados**: Checkbox de verificación activado por defecto (si está habilitado en config)
|
|
|
|
### 🔄 Mejorado
|
|
- **Optimización de verificación**: Al usar un límite, las IPs administrativas se excluyen del ping para acelerar el proceso
|
|
- **Interfaz de usuario**: Feedback visual más claro sobre el límite aplicado
|
|
|
|
---
|
|
|
|
## [1.2.0] - 2025-11-26
|
|
|
|
### ✨ Añadido
|
|
|
|
#### Verificación por Ping
|
|
- **Clase `PingService.php`**: Servicio de verificación de IPs mediante ping
|
|
- Ping paralelo a múltiples IPs simultáneamente (hasta 30 IPs por lote)
|
|
- Timeout configurable (default: 1 segundo)
|
|
- Detección automática de disponibilidad del comando ping
|
|
- Procesamiento en lotes para evitar sobrecarga de red
|
|
- Fallback graceful si ping no está disponible
|
|
- **Parámetro de configuración `enablePingVerification`**: Control global de verificación por ping
|
|
- Modo opcional: usuario decide en cada búsqueda
|
|
- Checkbox condicional en frontend (solo visible si está habilitado)
|
|
- Parámetro `verify_ping` en API REST
|
|
- **Detección de dispositivos no registrados**: Identifica IPs que responden a ping pero no están en UISP
|
|
- Filtra automáticamente IPs que responden
|
|
- Advertencias en logs para IPs no registradas
|
|
- Estadísticas de ping en respuestas
|
|
|
|
#### Integración
|
|
- **Frontend**: Checkbox "Verificar con ping" (condicional según configuración)
|
|
- Solo visible si `enablePingVerification` está habilitado
|
|
- Integrado en formulario de búsqueda
|
|
- Indicador de progreso durante verificación
|
|
- **API REST**: Soporte para parámetro `verify_ping` en ambos endpoints
|
|
- `event.ip_request`: Incluye estadísticas de ping en respuesta
|
|
- `event.ip_check`: Indica si IP específica responde a ping
|
|
- Campo `ping_verified` en todas las respuestas
|
|
- Campo `ping_stats` con métricas detalladas
|
|
|
|
### 🔄 Mejorado
|
|
|
|
- **`IpSearchService::buscarIpsDisponibles()`**: Ahora acepta parámetro `$verifyPing`
|
|
- Integración transparente con `PingService`
|
|
- Filtrado automático de IPs que responden
|
|
- Logging detallado de resultados de ping
|
|
- **Respuestas de API**: Información enriquecida con datos de ping
|
|
- Estadísticas: total verificado, respondiendo, no respondiendo
|
|
- Tiempo de ejecución de verificación
|
|
- Lista de IPs que responden (posibles conflictos)
|
|
|
|
### 🔧 Técnico
|
|
|
|
- **Ping paralelo**: Implementación usando procesos en background
|
|
- Archivos temporales para capturar resultados
|
|
- Espera asíncrona con timeout
|
|
- Limpieza automática de archivos temporales
|
|
- **Performance**: Optimizado para grandes rangos de IPs
|
|
- Procesamiento en lotes de 30 IPs
|
|
- Timeout total controlado
|
|
- Mínimo impacto en tiempo de respuesta
|
|
|
|
---
|
|
|
|
## [1.1.0] - 2025-11-26
|
|
|
|
### ✨ Añadido
|
|
|
|
#### API REST Completa
|
|
- **Endpoint `event.ip_request`**: Búsqueda de IPs disponibles en un segmento de red
|
|
- Acepta parámetro `segment` para especificar el tercer octeto (0-255)
|
|
- Retorna lista de IPs disponibles y en uso
|
|
- Filtra automáticamente IPs administrativas (1-30, 254)
|
|
- Incluye contadores de IPs disponibles, en uso y filtradas
|
|
- **Endpoint `event.ip_check`**: Verificación de estado de una IP específica
|
|
- Acepta parámetro `ip` con dirección completa (172.16.X.X)
|
|
- Retorna estado: disponible, en uso o desconocido
|
|
- Incluye información del tipo de IP (administrativa vs. cliente)
|
|
- Proporciona recomendaciones de uso
|
|
- **Soporte para webhooks**: Habilitado `supportsWebhookEvents: true` en manifest
|
|
- **Manejo de peticiones JSON**: Detección automática de Content-Type para API vs Frontend
|
|
|
|
#### Arquitectura y Código
|
|
- **Clase `ApiHandlers.php`**: Manejadores dedicados para eventos de API REST
|
|
- `handleApiRequest()`: Router principal de eventos
|
|
- `handleIpRequest()`: Procesamiento de búsqueda de IPs
|
|
- `handleIpCheck()`: Procesamiento de verificación de IPs
|
|
- **Clase `IpSearchService.php`**: Servicio de búsqueda de IPs con lógica de negocio
|
|
- `buscarIpsDisponibles()`: Búsqueda de IPs en segmento específico
|
|
- `obtenerIpsEnUso()`: Obtención de IPs desde API UNMS
|
|
- `isAdminIp()`: Método estático para detectar IPs administrativas
|
|
- `getIpType()`: Método estático para obtener información del tipo de IP
|
|
- **Sistema de filtrado de IPs**: Clasificación automática de IPs administrativas vs. cliente
|
|
- Rango administrativo: .1-.30 y .254
|
|
- Rango cliente: .31-.253
|
|
- Etiquetas visuales en frontend
|
|
- Filtrado automático en API REST
|
|
|
|
#### Documentación
|
|
- **README.md completo**: Documentación profesional del plugin
|
|
- Guía de instalación y configuración
|
|
- Documentación completa de API REST
|
|
- Ejemplos de uso en múltiples lenguajes (cURL, PHP, JavaScript, Python)
|
|
- Tabla de códigos de error
|
|
- Troubleshooting y soporte
|
|
- **CHANGELOG.md**: Archivo dedicado para control de versiones
|
|
|
|
### 🔄 Mejorado
|
|
|
|
- **Separación de responsabilidades**: Lógica de negocio separada en clases dedicadas
|
|
- **Manejo de errores mejorado**: Respuestas JSON estructuradas con códigos de error descriptivos
|
|
- **Sistema de logging**: Logs más detallados y organizados para debugging
|
|
- Registro de tipo de petición (HTML vs JSON)
|
|
- Logging de eventos API procesados
|
|
- Información de errores con stack traces
|
|
- **Compatibilidad dual**: Frontend HTML y API REST funcionan simultáneamente
|
|
- Detección automática del tipo de petición
|
|
- Sin interferencia entre modos
|
|
- **Validación de datos**: Validación robusta de parámetros en API
|
|
- Validación de formato de IP
|
|
- Validación de rangos de segmento
|
|
- Mensajes de error descriptivos
|
|
|
|
### 🔧 Técnico
|
|
|
|
- **Namespace PHP**: `SiipAvailableIps` para evitar conflictos
|
|
- **Manejo global de errores**: Error handler para convertir errores PHP en respuestas JSON
|
|
- **Configuración SSL**: Soporte para certificados autofirmados en desarrollo
|
|
- **Timeouts configurados**: Timeouts de conexión y ejecución para API UNMS
|
|
|
|
---
|
|
|
|
## [1.0.1] - 2025-11-25
|
|
|
|
### ✨ Añadido
|
|
|
|
- **Frontend web moderno**: Interfaz de usuario con diseño responsive y atractivo
|
|
- Diseño con gradientes y glassmorphism
|
|
- Tipografía Google Fonts (Inter)
|
|
- Animaciones suaves y micro-interacciones
|
|
- Modo oscuro integrado
|
|
- **Búsqueda de IPs por segmento**: Campo de entrada para tercer octeto
|
|
- **Función copiar al portapapeles**: Botón de copia rápida para cada IP
|
|
- Feedback visual al copiar
|
|
- Compatible con navegadores modernos
|
|
- **Estadísticas en tiempo real**: Contadores de IPs disponibles y en uso
|
|
- Tarjetas de estadísticas visuales
|
|
- Actualización dinámica tras búsqueda
|
|
- **Integración con API UNMS**: Conexión directa con UISP Network
|
|
- Obtención de IPs en uso desde dispositivos
|
|
- Soporte para HTTPS
|
|
- Manejo de errores de conexión
|
|
|
|
### 🔄 Mejorado
|
|
|
|
- **Conexión con API UNMS**: Optimización de peticiones HTTP
|
|
- Timeouts configurables
|
|
- Mejor manejo de errores de red
|
|
- Logging de respuestas
|
|
- **Búsqueda de IPs**: Algoritmo optimizado para comparación de rangos
|
|
- Ordenamiento de IPs por último octeto
|
|
- Cálculo eficiente de IPs disponibles
|
|
- Validación de segmentos (0-255)
|
|
|
|
### 🐛 Corregido
|
|
|
|
- Mejoras en la estabilidad de conexión con API UNMS
|
|
- Corrección de validación de segmentos fuera de rango
|
|
- Fix en ordenamiento de IPs en tabla de resultados
|
|
|
|
---
|
|
|
|
## [1.0.0] - 2025-11-25
|
|
|
|
### ✨ Lanzamiento Inicial
|
|
|
|
#### Funcionalidades Core
|
|
- **Búsqueda básica de IPs**: Funcionalidad principal del plugin
|
|
- Búsqueda en rangos 172.16.X.x
|
|
- Detección de IPs en uso
|
|
- Cálculo de IPs disponibles
|
|
- **Integración con UISP CRM**: Plugin nativo para UCRM
|
|
- Instalación vía interfaz de plugins
|
|
- Configuración desde panel de administración
|
|
- Acceso desde menú de reportes
|
|
- **Interfaz web básica**: Primera versión del frontend
|
|
- Formulario de búsqueda simple
|
|
- Tabla de resultados
|
|
- Diseño básico responsive
|
|
|
|
#### Configuración
|
|
- **Parámetros de configuración**:
|
|
- Dirección IP/dominio del servidor
|
|
- Token de API UCRM
|
|
- Token de API UNMS (opcional)
|
|
- Modo debug
|
|
- Nivel de logging
|
|
|
|
#### Integración
|
|
- **API UNMS**: Conexión con UISP Network para obtener IPs
|
|
- **Sistema de logs**: Archivo `plugin.log` para debugging
|
|
- **Compatibilidad**: UCRM 1.0.0+ y UNMS 1.0.0+
|
|
|
|
---
|
|
|
|
## Tipos de Cambios
|
|
|
|
- **✨ Añadido**: Para nuevas funcionalidades
|
|
- **🔄 Mejorado**: Para cambios en funcionalidades existentes
|
|
- **🐛 Corregido**: Para corrección de bugs
|
|
- **🔧 Técnico**: Para cambios técnicos internos
|
|
- **🗑️ Eliminado**: Para funcionalidades removidas
|
|
- **⚠️ Deprecado**: Para funcionalidades que serán removidas
|
|
- **🔒 Seguridad**: Para parches de seguridad
|
|
|
|
---
|
|
|
|
## Versionamiento
|
|
|
|
Este proyecto sigue [Semantic Versioning](https://semver.org/lang/es/):
|
|
|
|
- **MAJOR** (X.0.0): Cambios incompatibles con versiones anteriores
|
|
- **MINOR** (0.X.0): Nueva funcionalidad compatible con versiones anteriores
|
|
- **PATCH** (0.0.X): Correcciones de bugs compatibles con versiones anteriores
|
|
|
|
---
|
|
|
|
**Última actualización**: 26 de noviembre de 2025
|