IP Administrador
Control de IPs bloqueadas, cors y permisos de usuario
Visión General
La clase IPBlocker
es un singleton que gestiona el bloqueo de direcciones IP para una aplicación Express.js. Proporciona:
Bloqueo y desbloqueo de IPs
Expiración automática de bloqueos
Seguimiento de intentos fallidos
Notificaciones por webhook
Middleware para bloquear peticiones
Diagrama de Clase
Configuración
La clase usa configuración de config.moderation.notifications
:
Métodos
getInstance()
Obtiene la instancia singleton de IPBlocker.
Retorna: IPBlocker
- La instancia singleton
Ejemplo:
blockIP(ipAddress, userId, reason?, expiresAt?)
Bloquea una dirección IP con razón y expiración opcionales.
Esquema de Base de Datos:
Carga de Notificación:
unblockIP(ipAddress)
Desbloquea una dirección IP.
Carga de Notificación:
isIPBlocked(ipAddress)
Verifica si una dirección IP está bloqueada.
Retorna: boolean
- True si está bloqueada
getMiddleware()
Retorna middleware de Express para bloquear peticiones de IPs bloqueadas.
Respuesta del Middleware (403):
getBlockedIPs(page?, limit?)
Obtiene lista paginada de IPs bloqueadas.
Retorna: Promise<BlockedIP[]>
- Array de registros de IPs bloqueadas
recordFailedAttempt(ipAddress)
Registra un intento fallido y bloquea automáticamente después de 5 intentos en 24 horas.
Criterios de Bloqueo Automático:
5+ intentos fallidos en 24 horas
Duración de bloqueo: 24 horas
Carga de Notificación:
Métodos Internos
loadBlockedIPs()
Carga IPs bloqueadas activas desde la base de datos a memoria. Se ejecuta:
Al inicializar
Cada hora (programado)
autoUnblockExpiredIPs()
Desbloquea automáticamente IPs con bloqueos expirados. Se ejecuta cada 10 minutos.
Ejemplos de API
Bloquear IP
Obtener IPs Bloqueadas
Uso del Middleware
Manejo de Errores
Todos los métodos incluyen bloques try-catch y registran errores usando:
Monitoreo
El sistema registra eventos clave:
Bloqueos/desbloqueos de IPs
Intentos fallidos
Bloqueos automáticos
Estado de carga en memoria
Ejemplo de registro:
Last updated