jerkjs 2.5.6 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +167 -79
- package/README.md +134 -146
- package/RESULTADOS_WAF.md +63 -0
- package/doc-2.5/ADMIN_EXTENSION_COMMANDS_MANUAL.md +261 -0
- package/doc-2.5/ADMIN_EXTENSION_HOOK_EXAMPLE.md +28 -0
- package/doc-2.5/ADMIN_EXTENSION_INTEGRATION_MANUAL.md +232 -0
- package/doc-2.5/CACHE_SYSTEM_MAP.md +206 -0
- package/doc-2.5/MANUAL_MODULOS_ADMIN.md +287 -0
- package/doc-2.5/QUEUE_CLI_MODULE_MANUAL.md +289 -0
- package/doc-2.5/QUEUE_SYSTEM_MANUAL.md +320 -0
- package/doc-2.5/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
- package/doc-2.5/WAF_MODULE_MANUAL.md +229 -0
- package/index.js +19 -4
- package/jerk-admin-client/README.md +69 -0
- package/jerk-admin-client/package.json +23 -0
- package/jerk-admin-client.js +257 -0
- package/lib/admin/AdminExtension.js +491 -0
- package/lib/admin/ModuleLoader.js +77 -0
- package/lib/admin/config.js +21 -0
- package/lib/admin/modules/CacheModule.js +145 -0
- package/lib/admin/modules/ControllerGeneratorModule.js +414 -0
- package/lib/admin/modules/QueueManagementModule.js +265 -0
- package/lib/admin/modules/RouteCacheModule.js +227 -0
- package/lib/admin/modules/RouteManagerModule.js +468 -0
- package/lib/admin/modules/STATS_MODULE_README.md +113 -0
- package/lib/admin/modules/StatsModule.js +140 -0
- package/lib/admin/modules/SystemModule.js +140 -0
- package/lib/admin/modules/TimeModule.js +95 -0
- package/lib/admin/modules/ViewCacheStatsModule.js +92 -0
- package/lib/admin/modules/WAFModule.js +737 -0
- package/lib/cache/CacheHooks.js +141 -0
- package/lib/core/server.js +223 -77
- package/lib/middleware/firewall.js +112 -17
- package/lib/mvc/viewEngine.js +89 -5
- package/lib/queue/GlobalQueueStorage.js +38 -0
- package/lib/queue/QueueSystem.js +451 -0
- package/lib/queue/admin_example.js +114 -0
- package/lib/queue/example.js +268 -0
- package/lib/queue/integration.js +109 -0
- package/lib/router/RouteMatcher.js +242 -54
- package/lib/utils/globalStats.js +16 -0
- package/lib/utils/globalViewCacheInfo.js +16 -0
- package/lib/utils/globalWAFStats.js +54 -0
- package/package.json +2 -2
- package/test-colors.js +46 -0
- package/test-help-alias.js +31 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
# Manual del Módulo de Cache de Rutas para JERK Framework
|
|
2
|
+
|
|
3
|
+
## Tabla de Contenidos
|
|
4
|
+
1. [Introducción](#introducción)
|
|
5
|
+
2. [Comandos Disponibles](#comandos-disponibles)
|
|
6
|
+
3. [Uso Básico](#uso-básico)
|
|
7
|
+
4. [Uso Avanzado](#uso-avanzado)
|
|
8
|
+
5. [Ejemplos de Uso](#ejemplos-de-uso)
|
|
9
|
+
|
|
10
|
+
## Introducción
|
|
11
|
+
|
|
12
|
+
El módulo de Cache de Rutas es una extensión del sistema de administración CLI de JERK Framework que permite monitorear y gestionar el cache de rutas del sistema. Proporciona comandos para ver el estado del cache, visualizar su contenido, y limpiarlo cuando sea necesario.
|
|
13
|
+
|
|
14
|
+
## Comandos Disponibles
|
|
15
|
+
|
|
16
|
+
### Comandos Generales de Cache de Rutas
|
|
17
|
+
- `route-cache` o `cache-stats`: Muestra estadísticas del cache de rutas
|
|
18
|
+
- `cache-view`: Muestra el contenido completo del cache de rutas
|
|
19
|
+
- `cache-dynamic`: Muestra solo el cache de rutas dinámicas (parametrizadas)
|
|
20
|
+
- `cache-static`: Muestra solo el cache de rutas estáticas (exactas)
|
|
21
|
+
- `cache-clear`: Limpia todo el cache de rutas
|
|
22
|
+
|
|
23
|
+
## Uso Básico
|
|
24
|
+
|
|
25
|
+
### Conectar al Sistema de Administración
|
|
26
|
+
|
|
27
|
+
Para acceder al módulo de cache de rutas, primero debes conectarte al sistema de administración:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
telnet localhost 9999
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
O alternativamente:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
nc localhost 9999
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Ver estadísticas del cache de rutas
|
|
40
|
+
|
|
41
|
+
Comando: `route-cache` o `cache-stats`
|
|
42
|
+
|
|
43
|
+
Este comando muestra estadísticas generales del cache de rutas:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
> route-cache
|
|
47
|
+
|
|
48
|
+
=== Estadísticas del Cache de Rutas ===
|
|
49
|
+
Rutas dinámicas (parametrizadas) en cache: 5
|
|
50
|
+
Rutas estáticas exactas en cache: 10
|
|
51
|
+
Tamaño total de índices: 15
|
|
52
|
+
Índices válidos: Sí
|
|
53
|
+
|
|
54
|
+
>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Ver contenido del cache de rutas
|
|
58
|
+
|
|
59
|
+
Comando: `cache-view`
|
|
60
|
+
|
|
61
|
+
Este comando muestra el contenido completo del cache de rutas:
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
> cache-view
|
|
65
|
+
|
|
66
|
+
=== Contenido del Cache de Rutas ===
|
|
67
|
+
|
|
68
|
+
--- Rutas Dinámicas (Parametrizadas) en Cache ---
|
|
69
|
+
1. /users/:id -> /^\/users\/([^\/]+?)$/
|
|
70
|
+
2. /posts/:slug -> /^\/posts\/([^\/]+?)$/
|
|
71
|
+
|
|
72
|
+
--- Rutas Estáticas Exactas en Cache ---
|
|
73
|
+
1. GET /api/users -> anonymous
|
|
74
|
+
2. POST /api/users -> anonymous
|
|
75
|
+
|
|
76
|
+
>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Uso Avanzado
|
|
80
|
+
|
|
81
|
+
### Ver solo cache de rutas dinámicas
|
|
82
|
+
|
|
83
|
+
Comando: `cache-dynamic`
|
|
84
|
+
|
|
85
|
+
Muestra únicamente las rutas dinámicas (parametrizadas) en el cache:
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
> cache-dynamic
|
|
89
|
+
|
|
90
|
+
=== Cache de Rutas Dinámicas (Parametrizadas) ===
|
|
91
|
+
1. Ruta: /users/:id
|
|
92
|
+
Regex: /^\/users\/([^\/]+?)$/
|
|
93
|
+
|
|
94
|
+
2. Ruta: /posts/:slug
|
|
95
|
+
Regex: /^\/posts\/([^\/]+?)$/
|
|
96
|
+
|
|
97
|
+
Total: 2 rutas dinámicas en cache.
|
|
98
|
+
|
|
99
|
+
>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Ver solo cache de rutas estáticas
|
|
103
|
+
|
|
104
|
+
Comando: `cache-static`
|
|
105
|
+
|
|
106
|
+
Muestra únicamente las rutas estáticas (exactas) en el cache:
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
> cache-static
|
|
110
|
+
|
|
111
|
+
=== Cache de Rutas Estáticas (Exactas) ===
|
|
112
|
+
1. GET /api/users
|
|
113
|
+
Handler: anonymous
|
|
114
|
+
Static: true
|
|
115
|
+
|
|
116
|
+
2. POST /api/users
|
|
117
|
+
Handler: anonymous
|
|
118
|
+
Static: true
|
|
119
|
+
|
|
120
|
+
Total: 2 rutas estáticas en cache.
|
|
121
|
+
|
|
122
|
+
>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Limpiar el cache de rutas
|
|
126
|
+
|
|
127
|
+
Comando: `cache-clear`
|
|
128
|
+
|
|
129
|
+
Elimina todas las entradas del cache de rutas:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
> cache-clear
|
|
133
|
+
|
|
134
|
+
=== Limpieza del Cache de Rutas ===
|
|
135
|
+
Rutas dinámicas eliminadas: 5
|
|
136
|
+
Rutas estáticas eliminadas: 10
|
|
137
|
+
Cache de rutas limpiado exitosamente.
|
|
138
|
+
|
|
139
|
+
>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Ejemplos de Uso
|
|
143
|
+
|
|
144
|
+
### Ejemplo 1: Diagnóstico de rendimiento
|
|
145
|
+
|
|
146
|
+
Para diagnosticar problemas de rendimiento relacionados con el cache de rutas:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
> route-cache
|
|
150
|
+
Rutas dinámicas (parametrizadas) en cache: 50
|
|
151
|
+
Rutas estáticas exactas en cache: 100
|
|
152
|
+
Tamaño total de índices: 150
|
|
153
|
+
Índices válidos: Sí
|
|
154
|
+
|
|
155
|
+
> cache-dynamic
|
|
156
|
+
[Detalles de las 50 rutas dinámicas en cache]
|
|
157
|
+
>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Ejemplo 2: Verificación de rutas parametrizadas
|
|
161
|
+
|
|
162
|
+
Para verificar específicamente las rutas parametrizadas en el cache:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
> cache-dynamic
|
|
166
|
+
=== Cache de Rutas Dinámicas (Parametrizadas) ===
|
|
167
|
+
1. Ruta: /users/:id
|
|
168
|
+
Regex: /^\/users\/([^\/]+?)$/
|
|
169
|
+
|
|
170
|
+
2. Ruta: /products/:category/:id
|
|
171
|
+
Regex: /^\/products\/([^\/]+?)\/([^\/]+?)$/
|
|
172
|
+
|
|
173
|
+
Total: 2 rutas dinámicas en cache.
|
|
174
|
+
|
|
175
|
+
>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Solución de Problemas
|
|
179
|
+
|
|
180
|
+
### Problema: Comando no reconocido
|
|
181
|
+
|
|
182
|
+
**Síntoma**: El sistema responde con "Comando desconocido para el módulo de cache de rutas"
|
|
183
|
+
|
|
184
|
+
**Solución**: Verifica que estás usando uno de los comandos válidos: `route-cache`, `cache-stats`, `cache-view`, `cache-dynamic`, `cache-static`, `cache-clear`
|
|
185
|
+
|
|
186
|
+
### Problema: No se encuentra el componente RouteMatcher
|
|
187
|
+
|
|
188
|
+
**Síntoma**: El sistema responde con "No se encontró el componente RouteMatcher"
|
|
189
|
+
|
|
190
|
+
**Solución**: Asegúrate de que el servidor esté completamente iniciado y que el componente RouteMatcher haya sido correctamente instanciado.
|
|
191
|
+
|
|
192
|
+
## Compatibilidad
|
|
193
|
+
|
|
194
|
+
- **Versión mínima del framework**: JERK 2.5.8
|
|
195
|
+
- **Puerto de administración**: Por defecto 9999 (configurable)
|
|
196
|
+
- **Acceso**: Solo desde localhost por razones de seguridad
|
|
197
|
+
- **Protocolo**: Conexión TCP con interfaz de línea de comandos
|
|
198
|
+
|
|
199
|
+
## Autor
|
|
200
|
+
|
|
201
|
+
JERK Framework Team
|
|
202
|
+
|
|
203
|
+
## Versión
|
|
204
|
+
|
|
205
|
+
v2.6.0
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Manual del Módulo WAF (Web Application Firewall) para JERK Framework
|
|
2
|
+
|
|
3
|
+
## Tabla de Contenidos
|
|
4
|
+
1. [Introducción](#introducción)
|
|
5
|
+
2. [Características del WAF](#características-del-waf)
|
|
6
|
+
3. [Comandos Disponibles](#comandos-disponibles)
|
|
7
|
+
4. [Estadísticas del Servidor](#estadísticas-del-servidor)
|
|
8
|
+
5. [Gestión de Reglas X-Headers](#gestión-de-reglas-x-headers)
|
|
9
|
+
6. [Listas de IPs](#listas-de-ips)
|
|
10
|
+
7. [Persistencia de Reglas](#persistencia-de-reglas)
|
|
11
|
+
8. [Ejemplos de Uso](#ejemplos-de-uso)
|
|
12
|
+
|
|
13
|
+
## Introducción
|
|
14
|
+
|
|
15
|
+
El módulo WAF (Web Application Firewall) es una extensión de la extensión de administración de JERK Framework que permite monitorear, gestionar y proteger tu aplicación web. Proporciona estadísticas en tiempo real, gestión de reglas de seguridad y control de acceso basado en headers X-.
|
|
16
|
+
|
|
17
|
+
## Características del WAF
|
|
18
|
+
|
|
19
|
+
- **Estadísticas en tiempo real**: Conteo de solicitudes procesadas y respuestas enviadas con medición en kilobytes
|
|
20
|
+
- **Monitoreo de tráfico**: Registro de accesos a rutas y endpoints
|
|
21
|
+
- **Sistema de reglas X-Headers**: Bloqueo basado en headers como X-Forwarded-For, X-Real-IP, etc.
|
|
22
|
+
- **Listas de IPs**: Sistema de whitelist (nunca bloqueadas) y blacklist (siempre bloqueadas)
|
|
23
|
+
- **Persistencia**: Guardado y carga de reglas de seguridad
|
|
24
|
+
- **Interfaz interactiva**: Sistema de comandos para gestión en tiempo real
|
|
25
|
+
|
|
26
|
+
## Comandos Disponibles
|
|
27
|
+
|
|
28
|
+
### Comandos Generales de Estadísticas
|
|
29
|
+
- `waf-status` o `waf-stats`: Muestra estadísticas generales del servidor
|
|
30
|
+
- `waf-blocked` o `waf-security`: Muestra estadísticas de seguridad
|
|
31
|
+
- `waf-x-headers`: Muestra reglas de headers X- configuradas
|
|
32
|
+
|
|
33
|
+
### Comandos de Gestión de Reglas
|
|
34
|
+
- `create-x-rule`: Crea una nueva regla de seguridad basada en headers X-
|
|
35
|
+
- `remove-x-rule`: Remueve una regla de seguridad existente
|
|
36
|
+
- `save-rules`: Guarda todas las reglas a un archivo
|
|
37
|
+
- `load-rules`: Carga reglas desde un archivo
|
|
38
|
+
|
|
39
|
+
### Comandos de Gestión de IPs
|
|
40
|
+
- `waf-block-ip`: Bloquea temporalmente una IP
|
|
41
|
+
- `waf-unblock-ip`: Desbloquea una IP temporalmente bloqueada
|
|
42
|
+
- `waf-whitelist`: Agrega una IP a la lista blanca
|
|
43
|
+
- `waf-blacklist`: Agrega una IP a la lista negra
|
|
44
|
+
|
|
45
|
+
## Estadísticas del Servidor
|
|
46
|
+
|
|
47
|
+
### waf-status / waf-stats
|
|
48
|
+
Muestra las estadísticas generales del servidor:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
=== Estadísticas del WAF ===
|
|
52
|
+
Solicitudes procesadas: 15
|
|
53
|
+
Solicitudes procesadas (KB): 2.45 KB
|
|
54
|
+
Respuestas enviadas: 15
|
|
55
|
+
Respuestas enviadas (KB): 15.67 KB
|
|
56
|
+
IPs en lista blanca: 2
|
|
57
|
+
IPs en lista negra: 1
|
|
58
|
+
Reglas de seguridad activas: 3
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Campos de Estadísticas
|
|
62
|
+
- **Solicitudes procesadas**: Número total de solicitudes HTTP procesadas
|
|
63
|
+
- **Solicitudes procesadas (KB)**: Cantidad total de datos recibidos en kilobytes
|
|
64
|
+
- **Respuestas enviadas**: Número total de respuestas HTTP enviadas
|
|
65
|
+
- **Respuestas enviadas (KB)**: Cantidad total de datos enviados en kilobytes
|
|
66
|
+
- **IPs en lista blanca**: Número de IPs que nunca serán bloqueadas
|
|
67
|
+
- **IPs en lista negra**: Número de IPs que siempre serán bloqueadas
|
|
68
|
+
- **Reglas de seguridad activas**: Número de reglas de seguridad activas
|
|
69
|
+
|
|
70
|
+
## Gestión de Reglas X-Headers
|
|
71
|
+
|
|
72
|
+
### Crear Regla (`create-x-rule`)
|
|
73
|
+
Proceso interactivo para crear reglas de seguridad basadas en headers X-:
|
|
74
|
+
|
|
75
|
+
1. **Nombre del header**: Introduce el nombre del header X- (ej: X-Forwarded-For, X-Real-IP)
|
|
76
|
+
2. **Patrón**: Introduce el patrón para coincidir (cadena o expresión regular)
|
|
77
|
+
3. **Acción**: Selecciona la acción a tomar:
|
|
78
|
+
- `1` o `block`: Bloquear solicitudes que coincidan
|
|
79
|
+
- `2` o `log`: Registrar solicitudes que coincidan
|
|
80
|
+
- `3` o `monitor`: Monitorear solicitudes que coincidan
|
|
81
|
+
4. **Razón**: Introduce la razón para la regla (opcional)
|
|
82
|
+
|
|
83
|
+
### Remover Regla (`remove-x-rule`)
|
|
84
|
+
Proceso interactivo para remover reglas existentes:
|
|
85
|
+
1. Se muestra una lista numerada de reglas disponibles
|
|
86
|
+
2. Introduce el número de la regla que deseas remover
|
|
87
|
+
3. La regla se elimina inmediatamente del sistema
|
|
88
|
+
|
|
89
|
+
## Listas de IPs
|
|
90
|
+
|
|
91
|
+
### Whitelist (`waf-whitelist`)
|
|
92
|
+
Agrega una IP a la lista blanca (nunca será bloqueada):
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
> waf-whitelist
|
|
96
|
+
Introduce la IP a agregar a la lista blanca (ej: 192.168.1.100):
|
|
97
|
+
> 192.168.1.100
|
|
98
|
+
IP 192.168.1.100 agregada a la lista blanca.
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Blacklist (`waf-blacklist`)
|
|
102
|
+
Agrega una IP a la lista negra (siempre será bloqueada):
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
> waf-blacklist
|
|
106
|
+
Introduce la IP a agregar a la lista negra (ej: 10.0.0.100):
|
|
107
|
+
> 10.0.0.100
|
|
108
|
+
IP 10.0.0.100 agregada a la lista negra.
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Bloqueo Temporal (`waf-block-ip`)
|
|
112
|
+
Bloquea temporalmente una IP:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
> waf-block-ip
|
|
116
|
+
Introduce la IP a bloquear temporalmente (ej: 192.168.1.100):
|
|
117
|
+
> 192.168.1.200
|
|
118
|
+
IP 192.168.1.200 bloqueada temporalmente.
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Persistencia de Reglas
|
|
122
|
+
|
|
123
|
+
### Guardar Reglas (`save-rules`)
|
|
124
|
+
Guarda todas las reglas de seguridad actuales a un archivo JSON:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
> save-rules
|
|
128
|
+
✅ Reglas guardadas exitosamente en: /path/to/waf-rules/waf-rules-timestamp.json
|
|
129
|
+
Total de reglas guardadas: 3
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Cargar Reglas (`load-rules`)
|
|
133
|
+
Carga reglas de seguridad desde un archivo JSON:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
> load-rules
|
|
137
|
+
=== Archivos de Reglas Disponibles ===
|
|
138
|
+
1. waf-rules-1770795262452.json
|
|
139
|
+
|
|
140
|
+
Introduce el número del archivo a cargar (o "cancel" para cancelar):
|
|
141
|
+
> 1
|
|
142
|
+
|
|
143
|
+
¿Deseas reemplazar las reglas actuales? (sí/no):
|
|
144
|
+
> sí
|
|
145
|
+
|
|
146
|
+
✅ Reglas cargadas exitosamente desde: /path/to/waf-rules/waf-rules-1770795262452.json
|
|
147
|
+
Total de reglas cargadas: 3
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Ejemplos de Uso
|
|
151
|
+
|
|
152
|
+
### Ejemplo 1: Crear Regla para Bloquear IPs Internas
|
|
153
|
+
```
|
|
154
|
+
> create-x-rule
|
|
155
|
+
=== Crear Regla de Header X- ===
|
|
156
|
+
Introduce el nombre del header X- (ej: X-Forwarded-For, X-Real-IP):
|
|
157
|
+
> X-Forwarded-For
|
|
158
|
+
Header seleccionado: X-Forwarded-For
|
|
159
|
+
Introduce el patrón para coincidir (cadena o expresión regular):
|
|
160
|
+
> 192.168.
|
|
161
|
+
Selecciona la acción a tomar:
|
|
162
|
+
1. block - Bloquear solicitudes que coincidan
|
|
163
|
+
2. log - Registrar solicitudes que coincidan
|
|
164
|
+
3. monitor - Monitorear solicitudes que coincidan
|
|
165
|
+
Escribe el número o el nombre de la acción:
|
|
166
|
+
> 1
|
|
167
|
+
Acción seleccionada: block
|
|
168
|
+
Introduce la razón para la regla (opcional):
|
|
169
|
+
> Bloquear IPs internas
|
|
170
|
+
✅ Regla de header X- creada exitosamente:
|
|
171
|
+
ID: xheader_x_forwarded_for_1770792842636
|
|
172
|
+
Header: x-forwarded-for
|
|
173
|
+
Patrón: 192.168.
|
|
174
|
+
Acción: block
|
|
175
|
+
Razón: Bloquear IPs internas
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Ejemplo 2: Ver Estadísticas de Seguridad
|
|
179
|
+
```
|
|
180
|
+
> waf-security
|
|
181
|
+
=== Estadísticas de Seguridad del WAF ===
|
|
182
|
+
IPs bloqueadas temporalmente: 2
|
|
183
|
+
Intentos de ataque detectados: 5
|
|
184
|
+
Tipos de ataques detectados: 3
|
|
185
|
+
Registros de seguridad: 10
|
|
186
|
+
|
|
187
|
+
Accesos a rutas (Input/Output):
|
|
188
|
+
GET /: 8 accesos
|
|
189
|
+
POST /api/users: 3 accesos
|
|
190
|
+
GET /api/users: 4 accesos
|
|
191
|
+
|
|
192
|
+
Endpoints más accedidos:
|
|
193
|
+
GET /: 8 hits
|
|
194
|
+
GET /api/users: 4 hits
|
|
195
|
+
POST /api/users: 3 hits
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Ejemplo 3: Agregar IP a Lista Negra
|
|
199
|
+
```
|
|
200
|
+
> waf-blacklist
|
|
201
|
+
Introduce la IP a agregar a la lista negra (ej: 10.0.0.100):
|
|
202
|
+
> 10.0.0.100
|
|
203
|
+
IP 10.0.0.100 agregada a la lista negra.
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## Consideraciones de Seguridad
|
|
207
|
+
|
|
208
|
+
- El servidor de administración solo escucha en localhost (127.0.0.1) por defecto
|
|
209
|
+
- Todas las operaciones de bloqueo son inmediatas y afectan al sistema en tiempo real
|
|
210
|
+
- Las reglas de seguridad se aplican antes de que la solicitud llegue a los controladores
|
|
211
|
+
- El sistema de persistencia permite mantener reglas entre reinicios del servidor
|
|
212
|
+
|
|
213
|
+
## Solución de Problemas
|
|
214
|
+
|
|
215
|
+
### Las estadísticas no se actualizan
|
|
216
|
+
- Verifica que el middleware de firewall esté activo en tu servidor
|
|
217
|
+
- Asegúrate de que las solicitudes estén pasando por el sistema de firewall
|
|
218
|
+
|
|
219
|
+
### Las reglas no se aplican
|
|
220
|
+
- Verifica que el firewall esté correctamente integrado en tu pipeline de middlewares
|
|
221
|
+
- Confirma que las reglas se hayan creado correctamente usando `waf-x-headers`
|
|
222
|
+
|
|
223
|
+
## Autor
|
|
224
|
+
|
|
225
|
+
JERK Framework Team
|
|
226
|
+
|
|
227
|
+
## Versión
|
|
228
|
+
|
|
229
|
+
v2.5.8
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Punto de entrada del framework JERK
|
|
3
|
-
* JERK Framework 2.5.
|
|
3
|
+
* JERK Framework 2.5.8
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
// Mostrar mensaje de versión al iniciar
|
|
@@ -48,10 +48,18 @@ const ModelControllerExample = require('./lib/mvc/ModelControllerExample');
|
|
|
48
48
|
|
|
49
49
|
// Componentes de manejo de errores
|
|
50
50
|
const { ErrorHandler, ValidationError, AuthenticationError, DatabaseError } = require('./lib/utils/errorHandler');
|
|
51
|
+
|
|
52
|
+
// Componentes de caché
|
|
53
|
+
const CacheHooks = require('./lib/cache/CacheHooks');
|
|
54
|
+
|
|
51
55
|
// Componentes del QueryBuilder (v2.3.0) - MODIFICADO PARA USAR QBUILDERJS
|
|
52
56
|
const QueryBuilder = require('qbuilderjs');
|
|
53
57
|
// No hay middleware ni hooks ya que se eliminó la implementación interna
|
|
54
58
|
|
|
59
|
+
// Componentes de sistema de colas (v2.6.0)
|
|
60
|
+
const QueueSystem = require('./lib/queue/QueueSystem');
|
|
61
|
+
const QueueIntegration = require('./lib/queue/integration');
|
|
62
|
+
|
|
55
63
|
|
|
56
64
|
// Exportar todos los componentes del framework
|
|
57
65
|
module.exports = {
|
|
@@ -97,7 +105,7 @@ module.exports = {
|
|
|
97
105
|
// Componentes de modelo (v2.4.0)
|
|
98
106
|
ModelBase,
|
|
99
107
|
ModelManager,
|
|
100
|
-
// Componentes del QueryBuilder (v2.3.0)
|
|
108
|
+
// Componentes del QueryBuilder (v2.3.0)
|
|
101
109
|
QueryBuilder,
|
|
102
110
|
UserModel,
|
|
103
111
|
|
|
@@ -113,7 +121,14 @@ module.exports = {
|
|
|
113
121
|
ErrorHandler,
|
|
114
122
|
ValidationError,
|
|
115
123
|
AuthenticationError,
|
|
116
|
-
DatabaseError
|
|
124
|
+
DatabaseError,
|
|
125
|
+
|
|
126
|
+
// Componentes de sistema de colas (v2.6.0)
|
|
127
|
+
QueueSystem,
|
|
128
|
+
QueueIntegration,
|
|
129
|
+
|
|
130
|
+
// Componentes de administración (v2.5.7)
|
|
131
|
+
AdminExtension: require('./lib/admin/AdminExtension')
|
|
117
132
|
};
|
|
118
133
|
|
|
119
134
|
// También exportar clases individuales por conveniencia
|
|
@@ -124,4 +139,4 @@ const hooksInstance = new HookSystem();
|
|
|
124
139
|
module.exports.hooks = hooksInstance;
|
|
125
140
|
|
|
126
141
|
// Disparar hooks de inicio del framework
|
|
127
|
-
hooksInstance.doAction('framework_init');
|
|
142
|
+
hooksInstance.doAction('framework_init');
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Cliente CLI para JERK Framework Administration Server
|
|
2
|
+
|
|
3
|
+
Cliente de línea de comandos para interactuar con el servidor de administración de JERK Framework. Permite reutilizar comandos y cuenta con autocompletado.
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- **Autocompletado**: Presiona TAB para autocompletar comandos conocidos
|
|
8
|
+
- **Historial de comandos**: Accede a comandos previamente utilizados
|
|
9
|
+
- **Reutilización de comandos**: Reutiliza comandos por número o por texto
|
|
10
|
+
- **Conservación de contexto**: Mantiene el historial entre sesiones
|
|
11
|
+
|
|
12
|
+
## Instalación
|
|
13
|
+
|
|
14
|
+
El cliente CLI está incluido en el framework JERK y se puede ejecutar directamente:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
node jerk-admin-client.js
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
O con parámetros específicos:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
node jerk-admin-client.js --host 127.0.0.1 --port 9999
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Comandos del Cliente
|
|
27
|
+
|
|
28
|
+
Además de los comandos del servidor de administración, el cliente CLI incluye comandos especiales:
|
|
29
|
+
|
|
30
|
+
- `history` - Muestra el historial de comandos
|
|
31
|
+
- `clear` - Limpia la pantalla
|
|
32
|
+
- `re <número>` - Reutiliza el comando número n del historial
|
|
33
|
+
- `re <texto>` - Reutiliza el último comando que contiene el texto
|
|
34
|
+
- `help-cli` - Muestra la ayuda del cliente
|
|
35
|
+
|
|
36
|
+
## Uso
|
|
37
|
+
|
|
38
|
+
1. Inicia el cliente:
|
|
39
|
+
```bash
|
|
40
|
+
node jerk-admin-client.js
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. El cliente se conectará automáticamente al servidor de administración en `localhost:9999`
|
|
44
|
+
|
|
45
|
+
3. Usa los comandos estándar del servidor de administración:
|
|
46
|
+
- `stats` - Ver estadísticas generales
|
|
47
|
+
- `requests` - Ver estadísticas de solicitudes
|
|
48
|
+
- `endpoints` - Ver endpoints más accedidos
|
|
49
|
+
- `routes` - Ver rutas registradas
|
|
50
|
+
- `help` - Ver todos los comandos disponibles
|
|
51
|
+
|
|
52
|
+
4. Usa los comandos especiales del cliente para mejorar la experiencia:
|
|
53
|
+
- `history` para ver comandos anteriores
|
|
54
|
+
- `re 3` para reutilizar el tercer comando del historial
|
|
55
|
+
- `re stats` para reutilizar el último comando que contenía "stats"
|
|
56
|
+
|
|
57
|
+
## Atajos
|
|
58
|
+
|
|
59
|
+
- Presiona `↑` y `↓` para navegar por el historial de comandos
|
|
60
|
+
- Presiona `TAB` para autocompletar comandos
|
|
61
|
+
- Presiona `Ctrl+C` para salir del cliente
|
|
62
|
+
|
|
63
|
+
## Configuración
|
|
64
|
+
|
|
65
|
+
Por defecto, el cliente intenta conectarse a `localhost:9999`. Puedes especificar un host y puerto diferente usando los argumentos `--host` y `--port`.
|
|
66
|
+
|
|
67
|
+
## Archivo de Historial
|
|
68
|
+
|
|
69
|
+
El cliente guarda el historial de comandos en `~/.jerk_admin_history` para conservarlo entre sesiones.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jerkjs/admin-client",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Cliente CLI para interactuar con el servidor de administración de JERK Framework",
|
|
5
|
+
"main": "jerk-admin-client.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"jerk-admin": "./jerk-admin-client.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"start": "node jerk-admin-client.js",
|
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"jerkjs",
|
|
15
|
+
"admin",
|
|
16
|
+
"cli",
|
|
17
|
+
"client",
|
|
18
|
+
"framework"
|
|
19
|
+
],
|
|
20
|
+
"author": "JERK Framework Team",
|
|
21
|
+
"license": "Apache-2.0",
|
|
22
|
+
"dependencies": {}
|
|
23
|
+
}
|