siip-available-ips/manifest.json
DANYDHSV ecee38cf96 feat: implementar sistema de validación de IPs de 4 capas v1.6.0
- Agregar validación multi-capa para garantizar IPs 100% disponibles
- Capa 1: Filtrar IPs de dispositivos registrados en UISP
- Capa 2: Filtrar IPs de servicios CRM suspendidos/finalizados (449 IPs)
- Capa 3: Validar IPs usando búsqueda de sitios con type=subscriber
- Capa 4: Verificación opcional por ping para dispositivos de terceros

Nuevos Componentes:
- src/IpValidator.php: Clase de validación por búsqueda de sitios
- Validación progresiva en frontend JavaScript
- Endpoint action=validate en public.php

Mejoras:
- CrmService.php: Filtrado mejorado de servicios suspendidos/finalizados
- IpSearchService.php: Extraer todas las IPs de ipAddressList
- Frontend: Validación progresiva de IPs con feedback visual
- Cambiar suspended=false a suspended=true en API de UISP

Correcciones:
- Corregir variable $config indefinida en handler de validación
- Corregir falsos positivos agregando parámetro type=subscriber
- Corregir IPs secundarias no detectadas
- Corregir IPs de servicios suspendidos/finalizados mostrándose disponibles

Resultados de Pruebas:
- IP 172.16.54.70 (servicio finalizado): Filtrada correctamente por capa CRM
- IP 172.16.54.58 (cliente activo): Filtrada correctamente por búsqueda de sitios
- Todas las IPs mostradas verificadas como 100% disponibles

Documentación:
- Actualizado README.md con detalles del sistema de 4 capas
- Actualizado CHANGELOG.md con notas de versión 1.6.0
- Creado walkthrough.md completo
2025-12-06 12:34:58 -06:00

126 lines
4.9 KiB
JSON

{
"version": "1",
"information": {
"name": "siip-available-ips",
"displayName": "SIIP - Buscador de IP's Disponibles UISP",
"description": "Este plugin permite buscar IP's disponibles en UISP (UNMS) y asignarlas a los clientes en UCRM. Evitando así la asignación de IP's duplicadas y mejorando la gestión de direcciones IP en la red.",
"url": "https://siip.mx",
"version": "1.6.0",
"ucrmVersionCompliancy": {
"min": "1.0.0",
"max": null
},
"unmsVersionCompliancy": {
"min": "1.0.0",
"max": null
},
"author": "SIIP Internet"
},
"configuration": [
{
"key": "ipserver",
"label": "Dirección IP o dominio del servidor",
"description": "La dirección IP del servidor o dominio donde se ejecuta el sistema UISP CRM. Ejemplo: 172.16.5.120 o sistema.empresa.com",
"required": 1,
"type": "text"
},
{
"key": "apitoken",
"label": "Token de la API UCRM",
"description": "Token de autenticación para el uso de la API del sistema UISP UCRM. Contiene 36 caracteres y se genera desde el apartado de CRM en Ajustes->Seguridad->Claves app. Ejemplo: 3d3fa6c9-e268-6e8b-b4d5-aae394d99d7d",
"required": 1,
"type": "text"
},
{
"key": "unmsApiToken",
"label": "Token de la API UNMS",
"description": "Token de autenticación necesario para el uso de la API del sistema UISP UNMS, se utiliza para gestionar información de antenas u otros dispositivos de red. Contiene 34 caracteres y se genera desde el módulo de Ajustes del UISP Network en la opción de 'Usuarios' y en apartado de 'API tokens'.",
"required": 1,
"type": "text"
},
{
"key": "enablePingVerification",
"label": "Habilitar verificación por Ping",
"description": "Permite verificar la disponibilidad real de las IPs mediante ping. Cuando está habilitado, el usuario puede elegir si desea verificar las IPs con ping antes de mostrarlas como disponibles. Esto ayuda a detectar dispositivos no registrados en UISP.",
"required": 0,
"type": "checkbox"
},
{
"key": "adminRangeStart",
"label": "Inicio primer rango admin",
"description": "Primera IP del rango administrativo inicial (ej: 1). Las IPs en este rango se marcarán como administrativas.",
"required": 1,
"type": "number",
"default": 1
},
{
"key": "adminRangeEnd",
"label": "Fin primer rango admin",
"description": "Última IP del rango administrativo inicial (ej: 30). Las IPs desde 'Inicio primer rango' hasta este valor se marcarán como administrativas.",
"required": 1,
"type": "number",
"default": 30
},
{
"key": "adminRangeFinalStart",
"label": "Inicio rango admin final",
"description": "Primera IP del rango administrativo final (ej: 254). Útil para reservar las últimas IPs del segmento.",
"required": 1,
"type": "number",
"default": 2541
},
{
"key": "adminRangeFinalEnd",
"label": "Fin rango admin final",
"description": "Última IP del rango administrativo final (ej: 254). Las IPs desde 'Inicio rango final' hasta este valor se marcarán como administrativas.",
"required": 1,
"type": "number",
"default": 254
},
{
"key": "useCustomAdminRanges",
"label": "Usar rangos de IPs administrativas personalizados por segmento",
"description": "Habilita configuración personalizada por segmento en lugar de rangos globales. Permite definir rangos específicos para cada segmento de red.",
"required": 0,
"type": "checkbox"
},
{
"key": "customAdminRangesJson",
"label": "Configuración JSON de rangos administrativos",
"description": "JSON con rangos administrativos por segmento (Utilizar interfaz de configuración avanzada para editar). Formato: {\"segmentos\": [{\"segmento\": \"18\", \"administrativas_iniciales\": [{\"inicio\": 1, \"hasta\": 50}], \"administrativas_finales\": [{\"inicio\": 253, \"hasta\": 255}]}]}",
"required": 1,
"type": "textarea",
"default": "{\"segmentos\":[]}"
},
{
"key": "adminPassword",
"label": "Contraseña de administrador para configuración avanzada",
"description": "Contraseña requerida para acceder al editor visual de configuración avanzada de rangos administrativos.",
"required": 1,
"type": "password"
},
{
"key": "debugMode",
"label": "Debug Mode?",
"description": "More detailed log info - Informacion de log mas detallada",
"required": 0,
"type": "checkbox"
},
{
"key": "logging_level",
"label": "enable debug logs",
"description": "Make the plugin more verbose - Hace el plugin mas verboso.",
"type": "checkbox",
"required": 0
}
],
"menu": [
{
"key": "Reports",
"label": "Consultar IP's Disponibles",
"type": "admin",
"target": "iframe"
}
],
"supportsWebhookEvents": true
}