siip-available-ips/CHANGELOG.md

10 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.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:

  • 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