- Agregar sistema de modo claro/oscuro con botón toggle (☀️/🌙) - Implementar persistencia de tema con localStorage - Optimizar tabla para móviles (3 columnas en lugar de 5) - Cambiar límite por defecto a 5 IPs para búsquedas más rápidas - Mejorar tipografía de direcciones IP (más grande y negrita) - Actualizar documentación y versión a 1.3.3 Características del modo claro/oscuro: - Botón flotante en esquina superior derecha - Paleta de colores profesional para tema claro - Transiciones suaves entre temas - Preferencia guardada automáticamente Mejoras móviles: - Columna "Tipo de IP" oculta en móviles - Badge de tipo mostrado bajo la dirección IP - Mejor distribución de espacio (40% IP, 35% Estado, 25% Acción) - Fuentes y padding optimizados Archivos modificados: - public.php: Sistema de temas, optimizaciones móviles, límite por defecto - CHANGELOG.md: entrada v1.3.3 - README.md: documentación de nuevas características - manifest.json: actualización de versión a 1.3.3
12 KiB
12 KiB
Changelog
Todos los cambios notables en este proyecto serán documentados en este archivo.
El formato está basado en Keep a Changelog, y este proyecto adhiere a Semantic Versioning.
[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_pingen 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
enablePingVerificationestá habilitado - Integrado en formulario de búsqueda
- Indicador de progreso durante verificación
- Solo visible si
- API REST: Soporte para parámetro
verify_pingen ambos endpointsevent.ip_request: Incluye estadísticas de ping en respuestaevent.ip_check: Indica si IP específica responde a ping- Campo
ping_verifieden todas las respuestas - Campo
ping_statscon 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
- Integración transparente con
- 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
segmentpara 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
- Acepta parámetro
- Endpoint
event.ip_check: Verificación de estado de una IP específica- Acepta parámetro
ipcon 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
- Acepta parámetro
- Soporte para webhooks: Habilitado
supportsWebhookEvents: trueen 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 RESThandleApiRequest(): Router principal de eventoshandleIpRequest(): Procesamiento de búsqueda de IPshandleIpCheck(): Procesamiento de verificación de IPs
- Clase
IpSearchService.php: Servicio de búsqueda de IPs con lógica de negociobuscarIpsDisponibles(): Búsqueda de IPs en segmento específicoobtenerIpsEnUso(): Obtención de IPs desde API UNMSisAdminIp(): Método estático para detectar IPs administrativasgetIpType(): 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:
SiipAvailableIpspara 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.logpara 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:
- 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