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
package/CHANGELOG.md
CHANGED
|
@@ -1,128 +1,216 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Todos los cambios relevantes de este framework se documentan en este archivo.
|
|
4
|
+
El versionado sigue SemVer (MAJOR.MINOR.PATCH).
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## [2.6.1] - 2026-02-12
|
|
9
|
+
|
|
10
|
+
### Added (CLI / Performance)
|
|
11
|
+
- Cache de rutas integrado al sistema de administración.
|
|
12
|
+
- Comandos: `route-cache`, `cache-stats`, `cache-view`, `cache-dynamic`, `cache-static`, `cache-clear`.
|
|
13
|
+
- Estadísticas de cache (hits/misses).
|
|
14
|
+
- Inspección de rutas dinámicas con visualización de expresiones regulares.
|
|
15
|
+
- Inspección de rutas estáticas exactas.
|
|
16
|
+
- Limpieza selectiva del cache.
|
|
17
|
+
- Salida coloreada en CLI.
|
|
18
|
+
- Alias `?` para `help`.
|
|
19
|
+
|
|
20
|
+
### Changed (Performance)
|
|
21
|
+
- Optimización del archivo lib/core/server.js para evitar inclusiones innecesarias de módulos en memoria
|
|
22
|
+
- Eliminación de llamadas repetidas a getHooks() sustituidas por this.hooks directamente
|
|
23
|
+
- Implementación de función getErrorHandler() para evitar inclusiones repetidas de ErrorHandler
|
|
24
|
+
- Mejora del rendimiento al evitar operaciones de require() repetidas en tiempo de ejecución
|
|
25
|
+
- Uso más eficiente de la instancia de hooks en lugar de la función getHooks() en varios métodos
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## [2.6.0] - 2026-02-11
|
|
30
|
+
|
|
31
|
+
### Added (Queues / Infraestructura)
|
|
32
|
+
- Sistema de colas con múltiples colas concurrentes.
|
|
33
|
+
- Priorización de tareas.
|
|
34
|
+
- Hooks personalizados por cola.
|
|
35
|
+
- Reintentos y fallback configurables.
|
|
36
|
+
- Almacenamiento global compartido.
|
|
37
|
+
|
|
38
|
+
### Added (CLI)
|
|
39
|
+
- Comandos: `queues`, `queue-info`, `queue-pause`, `queue-resume`, `queue-clear`, `queue-retry-failed`.
|
|
40
|
+
- Monitorización en tiempo real del estado de las colas.
|
|
41
|
+
- Pausa y reanudación individual.
|
|
42
|
+
- Limpieza y reintento de tareas fallidas.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## [2.5.8] - 2026-02-09
|
|
47
|
+
|
|
48
|
+
### Added (Admin / Observabilidad)
|
|
49
|
+
- Extensión de administración con servidor TCP (solo localhost).
|
|
50
|
+
- Arquitectura modular extensible.
|
|
51
|
+
- Carga de módulos externos sin modificar el core.
|
|
52
|
+
- Hook `admin_extensions_initialize`.
|
|
53
|
+
|
|
54
|
+
### Added (Módulos)
|
|
55
|
+
- **TimeModule**: `time`, `date`.
|
|
56
|
+
- **SystemModule**: `sysinfo`, `system`, `resources`.
|
|
57
|
+
- **StatsModule**: métricas de requests/responses/endpoints.
|
|
58
|
+
- **ViewCacheStatsModule**: estadísticas del cache de vistas.
|
|
59
|
+
- **ControllerGeneratorModule**: `generate-controller`, `gen-ctrl`, `new-ctrl`.
|
|
60
|
+
- **RouteManagerModule**: `manage-routes`, `route-manager`, `route-mgmt`.
|
|
61
|
+
|
|
62
|
+
### Added (DX)
|
|
63
|
+
- Generación interactiva de controladores.
|
|
64
|
+
- Gestión interactiva de rutas.
|
|
65
|
+
- Colores en CLI.
|
|
66
|
+
|
|
67
|
+
### Added (Performance)
|
|
68
|
+
- Registro global de estadísticas sin depender de hooks.
|
|
69
|
+
- Registro de dependencias entre vistas.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## [2.5.7] - 2026-02-08
|
|
74
|
+
|
|
75
|
+
### Added (Security)
|
|
76
|
+
- Filtros `session_cookie_flags` y `session_cookie_destroy_flags`.
|
|
77
|
+
- Soporte para flags `Secure`, `SameSite` y extensiones futuras (ej. `Partitioned`).
|
|
78
|
+
|
|
79
|
+
### Added (Performance)
|
|
80
|
+
- Índices de rutas por número de segmentos y prefijo.
|
|
81
|
+
- Buckets por aridad para reducir espacio de búsqueda.
|
|
10
82
|
|
|
11
83
|
### Changed
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- Mejora en el manejo de rutas estáticas para reducir operaciones de normalización repetidas
|
|
17
|
-
- Implementación de caché para el método render en la respuesta para evitar redefiniciones innecesarias
|
|
84
|
+
- Seguridad por defecto reforzada en cookies de sesión.
|
|
85
|
+
- Carga anticipada de módulos comunes.
|
|
86
|
+
- Optimización de rutas estáticas.
|
|
87
|
+
- Cache del método `render`.
|
|
18
88
|
|
|
19
|
-
|
|
89
|
+
---
|
|
20
90
|
|
|
21
91
|
## [2.5.4] - 2026-02-08
|
|
22
92
|
|
|
23
|
-
### Fixed
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
93
|
+
### Fixed (Routing)
|
|
94
|
+
- Resolución incorrecta de rutas estáticas con distinta especificidad.
|
|
95
|
+
- Prioridad incorrecta de rutas menos específicas.
|
|
96
|
+
- Manejo de rutas absolutas en archivos estáticos.
|
|
97
|
+
- Caracteres especiales en rutas parametrizadas.
|
|
28
98
|
|
|
29
99
|
### Changed
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
100
|
+
- Selección de rutas estáticas por prefijo más largo.
|
|
101
|
+
- Uso de `path.resolve` en lugar de `path.join`.
|
|
102
|
+
- Mensajes de depuración mejorados.
|
|
103
|
+
|
|
104
|
+
---
|
|
33
105
|
|
|
34
|
-
## [2.5.3]
|
|
106
|
+
## [2.5.3]
|
|
35
107
|
|
|
36
108
|
### Added
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
- Incorporado sistema mejorado de carga de modelos
|
|
109
|
+
- Integración completa con qbuilderjs.
|
|
110
|
+
- Arquitectura MVC con modelos.
|
|
111
|
+
- Carga automática de rutas y modelos.
|
|
41
112
|
|
|
42
|
-
|
|
113
|
+
---
|
|
43
114
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
-
|
|
115
|
+
## [2.5.2]
|
|
116
|
+
|
|
117
|
+
### Added (Security)
|
|
118
|
+
- Autenticación JWT.
|
|
119
|
+
- Middleware de autenticación.
|
|
120
|
+
- Sistema de roles y capacidades.
|
|
48
121
|
|
|
49
|
-
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## [2.5.1]
|
|
50
125
|
|
|
51
126
|
### Fixed
|
|
52
|
-
-
|
|
53
|
-
-
|
|
127
|
+
- Fugas de memoria en el sistema de colas.
|
|
128
|
+
- Problemas de concurrencia en base de datos.
|
|
54
129
|
|
|
55
130
|
### Changed
|
|
56
|
-
-
|
|
57
|
-
-
|
|
131
|
+
- Logging optimizado.
|
|
132
|
+
- Consultas SQL optimizadas.
|
|
133
|
+
|
|
134
|
+
---
|
|
58
135
|
|
|
59
|
-
## [2.5.0]
|
|
136
|
+
## [2.5.0]
|
|
60
137
|
|
|
61
138
|
### Added
|
|
62
|
-
- Nuevo sistema de modelos con soporte
|
|
63
|
-
-
|
|
64
|
-
-
|
|
139
|
+
- Nuevo sistema de modelos con soporte MariaDB y SQLite.
|
|
140
|
+
- Adaptadores de base de datos.
|
|
141
|
+
- Migraciones.
|
|
65
142
|
|
|
66
143
|
### Changed
|
|
67
|
-
- Refactorización del sistema de vistas
|
|
68
|
-
- Actualización de dependencias
|
|
144
|
+
- Refactorización del sistema de vistas.
|
|
145
|
+
- Actualización de dependencias.
|
|
69
146
|
|
|
70
|
-
|
|
147
|
+
---
|
|
71
148
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
149
|
+
## [2.4.0]
|
|
150
|
+
|
|
151
|
+
### Added (Security)
|
|
152
|
+
- Sistema de sesiones.
|
|
153
|
+
- Middleware de seguridad.
|
|
154
|
+
- WAF integrado.
|
|
76
155
|
|
|
77
156
|
### Fixed
|
|
78
|
-
-
|
|
79
|
-
-
|
|
157
|
+
- Vulnerabilidades XSS.
|
|
158
|
+
- Inyección SQL.
|
|
80
159
|
|
|
81
|
-
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## [2.3.0]
|
|
82
163
|
|
|
83
164
|
### Added
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
165
|
+
- QueryBuilder integrado.
|
|
166
|
+
- Validación de entradas.
|
|
167
|
+
- Sistema de auditoría.
|
|
168
|
+
|
|
169
|
+
---
|
|
87
170
|
|
|
88
|
-
## [2.2.0]
|
|
171
|
+
## [2.2.0]
|
|
89
172
|
|
|
90
173
|
### Added
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
174
|
+
- CORS.
|
|
175
|
+
- Rate limiting.
|
|
176
|
+
- Compresión de respuestas.
|
|
94
177
|
|
|
95
178
|
### Changed
|
|
96
|
-
-
|
|
97
|
-
- Optimización de rendimiento
|
|
179
|
+
- Optimización del enrutamiento.
|
|
98
180
|
|
|
99
|
-
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## [2.1.0]
|
|
100
184
|
|
|
101
185
|
### Added
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
186
|
+
- Sistema de hooks.
|
|
187
|
+
- Sistema de plugins.
|
|
188
|
+
- Rutas anidadas.
|
|
105
189
|
|
|
106
190
|
### Fixed
|
|
107
|
-
-
|
|
108
|
-
-
|
|
191
|
+
- Problemas de seguridad.
|
|
192
|
+
- Fugas de memoria.
|
|
193
|
+
|
|
194
|
+
---
|
|
109
195
|
|
|
110
|
-
## [2.0.0]
|
|
196
|
+
## [2.0.0]
|
|
111
197
|
|
|
112
198
|
### Added
|
|
113
|
-
-
|
|
114
|
-
- Nuevo sistema de middleware
|
|
115
|
-
-
|
|
116
|
-
-
|
|
199
|
+
- Reescritura completa de la arquitectura.
|
|
200
|
+
- Nuevo sistema de middleware.
|
|
201
|
+
- Autenticación integrada.
|
|
202
|
+
- Soporte HTTPS.
|
|
117
203
|
|
|
118
204
|
### Changed
|
|
119
|
-
- Cambios importantes en la API
|
|
120
|
-
-
|
|
121
|
-
-
|
|
205
|
+
- Cambios importantes en la API.
|
|
206
|
+
- Manejo de errores mejorado.
|
|
207
|
+
- Dependencias actualizadas.
|
|
208
|
+
|
|
209
|
+
---
|
|
122
210
|
|
|
123
|
-
## [1.x.x]
|
|
211
|
+
## [1.x.x]
|
|
124
212
|
|
|
125
|
-
- Versiones iniciales del framework
|
|
126
|
-
-
|
|
127
|
-
- Sistema inicial de enrutamiento
|
|
128
|
-
-
|
|
213
|
+
- Versiones iniciales del framework.
|
|
214
|
+
- Servidor HTTP básico.
|
|
215
|
+
- Sistema inicial de enrutamiento.
|
|
216
|
+
- Middleware básico.
|
package/README.md
CHANGED
|
@@ -1,167 +1,155 @@
|
|
|
1
|
-
|
|
2
|
-
##### JERK Framework v2.5.6
|
|
3
|
-
|
|
4
|
-
**JERK Framework** es un framework de desarrollo web completo para Node.js que implementa una arquitectura MVC (Modelo-Vista-Controlador) con soporte para APIs REST, seguridad avanzada, y sistemas de plantillas.
|
|
5
|
-
|
|
6
|
-
## Características Principales
|
|
7
|
-
|
|
8
|
-
### 🚀 Rendimiento Optimizado
|
|
9
|
-
- Servidor HTTP/HTTPS de alto rendimiento
|
|
10
|
-
- Optimizaciones de rendimiento en el manejo de solicitudes
|
|
11
|
-
- Carga anticipada de módulos comunes para evitar operaciones redundantes
|
|
12
|
-
- Manejo eficiente de rutas estáticas y dinámicas
|
|
13
|
-
|
|
14
|
-
### 🔐 Seguridad Avanzada
|
|
15
|
-
- Sistema de sesiones con cookies seguras personalizables
|
|
16
|
-
- Filtros para personalizar flags de seguridad de cookies (`Secure`, `SameSite`, etc.)
|
|
17
|
-
- Web Application Firewall (WAF) con detección de patrones de ataque
|
|
18
|
-
- Sistema de autenticación con múltiples estrategias (JWT, API Keys, Basic Auth, OAuth2, OpenID Connect)
|
|
19
|
-
- Protección contra SQL Injection, XSS y otros ataques comunes
|
|
20
|
-
|
|
21
|
-
### 🏗️ Arquitectura Modular
|
|
22
|
-
- Componentes independientes para mayor flexibilidad
|
|
23
|
-
- Sistema de hooks y filtros similar al de WordPress
|
|
24
|
-
- Soporte para middlewares personalizados
|
|
25
|
-
- Arquitectura MVC completa con modelos, vistas y controladores
|
|
26
|
-
|
|
27
|
-
### 📊 Soporte para Bases de Datos
|
|
28
|
-
- Adaptadores para diferentes motores de base de datos (Memory, MariaDB/MySQL, SQLite)
|
|
29
|
-
- Integración con QueryBuilder externo (qbuilderjs) para construir consultas SQL seguras
|
|
30
|
-
- Sistema de modelos con operaciones CRUD completas
|
|
31
|
-
|
|
32
|
-
### 🎨 Motores de Plantillas
|
|
33
|
-
- Motor de plantillas con soporte para variables, condiciones, bucles e inclusiones
|
|
34
|
-
- Filtros y helpers personalizables
|
|
35
|
-
- Soporte para layouts y vistas dinámicas
|
|
36
|
-
|
|
37
|
-
## Instalación
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
npm install jerkjs
|
|
41
|
-
```
|
|
1
|
+
# 🚀 JavascriptEnvironmentRealKit Framework
|
|
42
2
|
|
|
43
|
-
|
|
3
|
+
Un framework backend **rápido, modular y extensible**, diseñado para construir APIs y servicios HTTP de alto rendimiento con enfoque en **rendimiento real, control total y cero dependencias innecesarias**.
|
|
44
4
|
|
|
45
|
-
|
|
46
|
-
const { APIServer, RouteDirectoryLoader, ViewEngine, ModelManager, MemoryAdapter } = require('jerkjs');
|
|
5
|
+
Pensado para desarrolladores que prefieren **infraestructura directa, predecible y eficiente**, no capas de abstracción pesadas.
|
|
47
6
|
|
|
48
|
-
|
|
49
|
-
const server = new APIServer({
|
|
50
|
-
port: 3000,
|
|
51
|
-
host: 'localhost'
|
|
52
|
-
});
|
|
7
|
+
---
|
|
53
8
|
|
|
54
|
-
|
|
55
|
-
const viewEngine = new ViewEngine({
|
|
56
|
-
viewsDir: './views',
|
|
57
|
-
defaultLayout: 'layout.html'
|
|
58
|
-
});
|
|
9
|
+
## ⚡ Principios
|
|
59
10
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
11
|
+
- Performance first — rutas indexadas, cachés y estructuras O(1)
|
|
12
|
+
- Arquitectura modular — hooks, filtros y módulos desacoplados
|
|
13
|
+
- Observabilidad integrada — administración en tiempo real
|
|
14
|
+
- Seguridad por defecto
|
|
15
|
+
- Sin magia oculta — comportamiento explícito y depurable
|
|
64
16
|
|
|
65
|
-
|
|
66
|
-
server.viewEngine = viewEngine;
|
|
67
|
-
server.modelManager = modelManager;
|
|
17
|
+
---
|
|
68
18
|
|
|
69
|
-
|
|
70
|
-
const routeDirectoryLoader = new RouteDirectoryLoader();
|
|
71
|
-
routeDirectoryLoader.loadRoutesFromDirectory(server, './routes');
|
|
19
|
+
## ✨ Características principales
|
|
72
20
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
21
|
+
### 🧭 Enrutamiento de alto rendimiento
|
|
22
|
+
- Índices por segmentos y prefijos
|
|
23
|
+
- Buckets por aridad
|
|
24
|
+
- Rutas estáticas y dinámicas (regex)
|
|
25
|
+
- Cache de rutas con estadísticas de hits/misses
|
|
76
26
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
27
|
+
### 🧩 Sistema modular
|
|
28
|
+
- Hooks y filtros
|
|
29
|
+
- Plugins externos sin modificar el core
|
|
30
|
+
- Carga dinámica de módulos
|
|
31
|
+
|
|
32
|
+
### 🛠 Consola de administración integrada
|
|
33
|
+
Servidor TCP local para inspección en tiempo real:
|
|
34
|
+
|
|
35
|
+
- rutas activas
|
|
36
|
+
- estadísticas del servidor
|
|
37
|
+
- estado del sistema
|
|
38
|
+
- colas
|
|
39
|
+
- cachés
|
|
40
|
+
- generación de controladores
|
|
41
|
+
|
|
42
|
+
### 📬 Sistema de colas
|
|
43
|
+
- Múltiples colas concurrentes
|
|
44
|
+
- Prioridades
|
|
45
|
+
- Reintentos automáticos
|
|
46
|
+
- Fallbacks
|
|
47
|
+
- Pausa / reanudación
|
|
48
|
+
- Limpieza y reintentos manuales
|
|
49
|
+
|
|
50
|
+
### 📊 Observabilidad
|
|
51
|
+
- Métricas de requests/responses
|
|
52
|
+
- Endpoints más utilizados
|
|
53
|
+
- Estadísticas de caché de vistas
|
|
54
|
+
- Estado de recursos del sistema
|
|
55
|
+
- Monitorización en tiempo real
|
|
56
|
+
|
|
57
|
+
### 🔐 Seguridad
|
|
58
|
+
- Autenticación JWT
|
|
59
|
+
- Roles y capacidades
|
|
60
|
+
- Middleware de seguridad
|
|
61
|
+
- WAF básico
|
|
62
|
+
- Cookies con flags configurables (`Secure`, `SameSite`, etc.)
|
|
63
|
+
- Protección XSS / SQL Injection
|
|
64
|
+
|
|
65
|
+
### 🗄 Base de datos
|
|
66
|
+
- Sistema de modelos
|
|
67
|
+
- QueryBuilder integrado
|
|
68
|
+
- Soporte MariaDB y SQLite
|
|
69
|
+
- Migraciones
|
|
70
|
+
|
|
71
|
+
### 🎨 Developer Experience
|
|
72
|
+
- Generador interactivo de controladores
|
|
73
|
+
- Gestor de rutas
|
|
74
|
+
- CLI coloreada
|
|
75
|
+
- Configuración mínima
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 🧠 Uso
|
|
80
|
+
|
|
81
|
+
El framework **no impone comandos mágicos ni wrappers propietarios**.
|
|
82
|
+
|
|
83
|
+
Se integra directamente en tu binario/servidor, y la administración se realiza a través de:
|
|
84
|
+
|
|
85
|
+
- consola TCP local de administración
|
|
86
|
+
- módulos CLI
|
|
87
|
+
- hooks y extensiones
|
|
103
88
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- Firewall (WAF) con detección de patrones de ataque
|
|
121
|
-
- Audit Logger para eventos de seguridad
|
|
122
|
-
|
|
123
|
-
### Componentes MVC
|
|
124
|
-
- ControllerBase con soporte para vistas, layouts y variables
|
|
125
|
-
- ModelBase con operaciones CRUD
|
|
126
|
-
- ViewEngine con soporte para filtros, helpers, condiciones, bucles e inclusiones
|
|
127
|
-
- ModelManager con soporte para múltiples adaptadores
|
|
128
|
-
|
|
129
|
-
## Sistema de Hooks y Filtros
|
|
130
|
-
|
|
131
|
-
El framework incluye un sistema completo de hooks y filtros similar al de WordPress:
|
|
132
|
-
|
|
133
|
-
```javascript
|
|
134
|
-
// Registrar una acción
|
|
135
|
-
hooks.addAction('firewall_request_blocked', (rule, clientIP, req, res) => {
|
|
136
|
-
console.log(`Solicitud bloqueada: ${rule.name} para IP: ${clientIP}`);
|
|
137
|
-
});
|
|
138
|
-
|
|
139
|
-
// Registrar un filtro
|
|
140
|
-
hooks.addFilter('session_create_data', (userData, req) => {
|
|
141
|
-
return {
|
|
142
|
-
...userData,
|
|
143
|
-
ipAddress: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
|
|
144
|
-
createdAt: new Date().toISOString()
|
|
145
|
-
};
|
|
146
|
-
});
|
|
89
|
+
Consulta la documentación del proyecto para ejemplos específicos de inicialización según tu aplicación.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 🧱 Arquitectura
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
Request
|
|
97
|
+
↓
|
|
98
|
+
Router (indexado)
|
|
99
|
+
↓
|
|
100
|
+
Middleware / Hooks
|
|
101
|
+
↓
|
|
102
|
+
Controller
|
|
103
|
+
↓
|
|
104
|
+
View / JSON / Stream
|
|
147
105
|
```
|
|
148
106
|
|
|
149
|
-
|
|
107
|
+
Componentes desacoplados → extensibles → reemplazables.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 🔌 Extensibilidad
|
|
112
|
+
|
|
113
|
+
Puedes extender sin modificar el core:
|
|
114
|
+
|
|
115
|
+
- módulos de administración
|
|
116
|
+
- hooks personalizados
|
|
117
|
+
- filtros de seguridad
|
|
118
|
+
- middlewares
|
|
119
|
+
- plugins externos
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 📈 Rendimiento
|
|
124
|
+
|
|
125
|
+
Optimizado para:
|
|
126
|
+
|
|
127
|
+
- menos asignaciones
|
|
128
|
+
- menos normalización de rutas
|
|
129
|
+
- menos búsquedas lineales
|
|
130
|
+
- más indexación y caché
|
|
131
|
+
|
|
132
|
+
Resultado: **menor CPU, menor latencia y mayor throughput**.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 🗂 Versionado
|
|
150
137
|
|
|
151
|
-
|
|
138
|
+
Seguimos **Semantic Versioning (SemVer)**.
|
|
152
139
|
|
|
153
|
-
|
|
140
|
+
Consulta cambios detallados en:
|
|
141
|
+
👉 `CHANGELOG.md`
|
|
154
142
|
|
|
155
|
-
|
|
143
|
+
---
|
|
156
144
|
|
|
157
|
-
##
|
|
145
|
+
## 🤝 Filosofía
|
|
158
146
|
|
|
159
|
-
|
|
147
|
+
> Menos framework. Más control. Más rendimiento.
|
|
160
148
|
|
|
161
|
-
|
|
149
|
+
Diseñado para equipos que prefieren entender el sistema completo en lugar de depender de abstracciones innecesarias.
|
|
162
150
|
|
|
163
|
-
|
|
151
|
+
---
|
|
164
152
|
|
|
165
|
-
##
|
|
153
|
+
## 📄 Licencia
|
|
166
154
|
|
|
167
|
-
|
|
155
|
+
APACHE 2.0
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Demostración del Módulo WAF - Resultados Finales
|
|
2
|
+
|
|
3
|
+
## ✅ Funcionalidades del Módulo WAF Verificadas
|
|
4
|
+
|
|
5
|
+
1. **Creación de Reglas**: ✅
|
|
6
|
+
- Comando `create-x-rule` funciona correctamente
|
|
7
|
+
- Proceso interactivo paso a paso para crear reglas
|
|
8
|
+
- Selecciona header, patrón, acción y razón
|
|
9
|
+
|
|
10
|
+
2. **Remoción de Reglas SIN Reiniciar**: ✅
|
|
11
|
+
- Comando `remove-x-rule` funciona correctamente
|
|
12
|
+
- Muestra lista de reglas disponibles para remover
|
|
13
|
+
- Remueve la regla seleccionada inmediatamente
|
|
14
|
+
- No requiere reiniciar el servidor
|
|
15
|
+
|
|
16
|
+
3. **Guardado de Reglas**: ✅
|
|
17
|
+
- Comando `save-rules` funciona correctamente
|
|
18
|
+
- Guarda reglas en archivos JSON en el directorio `waf-rules/`
|
|
19
|
+
- Muestra confirmación de guardado exitoso
|
|
20
|
+
|
|
21
|
+
4. **Carga de Reglas**: ✅
|
|
22
|
+
- Comando `load-rules` funciona correctamente
|
|
23
|
+
- Lista archivos disponibles para cargar
|
|
24
|
+
- Pregunta confirmación antes de reemplazar reglas
|
|
25
|
+
- Carga reglas desde archivo JSON exitosamente
|
|
26
|
+
|
|
27
|
+
5. **Visualización de Estadísticas**: ✅
|
|
28
|
+
- Comandos `waf-status`, `waf-stats`, `waf-blocked`, `waf-security` funcionan
|
|
29
|
+
- Muestra solicitudes procesadas con kilobytes
|
|
30
|
+
- Muestra respuestas enviadas con kilobytes
|
|
31
|
+
- Muestra accesos a rutas (input/output)
|
|
32
|
+
- Muestra endpoints y rutas más accedidas
|
|
33
|
+
|
|
34
|
+
## 🧪 Pruebas Realizadas
|
|
35
|
+
|
|
36
|
+
1. **Creación de regla**: Se creó regla para `X-Real-IP` con patrón `10.0.0.` y acción `block`
|
|
37
|
+
2. **Verificación**: Se confirmó que la regla estaba registrada
|
|
38
|
+
3. **Guardado**: Se guardó la regla en archivo JSON
|
|
39
|
+
4. **Remoción**: Se removió la regla sin reiniciar el servidor
|
|
40
|
+
5. **Verificación de remoción**: Se confirmó que la regla ya no estaba registrada
|
|
41
|
+
6. **Carga**: Se cargaron las reglas desde el archivo guardado
|
|
42
|
+
7. **Verificación de carga**: Se confirmó que la regla fue restaurada desde el archivo
|
|
43
|
+
|
|
44
|
+
## 📊 Resultados Finales
|
|
45
|
+
|
|
46
|
+
- **Cantidad de requests procesados mostrando kilobytes**: ✅ Funciona
|
|
47
|
+
- **Cantidad de responses enviadas mostrando kilobytes**: ✅ Funciona
|
|
48
|
+
- **Accesos a las rutas registradas (input y output)**: ✅ Funciona
|
|
49
|
+
- **Endpoints y rutas más accedidas**: ✅ Funciona
|
|
50
|
+
- **Remoción de reglas sin reiniciar**: ✅ Funciona
|
|
51
|
+
- **Guardado y carga de reglas**: ✅ Funciona
|
|
52
|
+
|
|
53
|
+
## 🚀 Comandos Disponibles
|
|
54
|
+
|
|
55
|
+
- `waf-status` / `waf-stats`: Muestra estadísticas generales
|
|
56
|
+
- `waf-blocked` / `waf-security`: Muestra estadísticas de seguridad
|
|
57
|
+
- `waf-x-headers`: Muestra reglas de headers X-
|
|
58
|
+
- `create-x-rule`: Crea nuevas reglas de headers X-
|
|
59
|
+
- `remove-x-rule`: Remueve reglas existentes
|
|
60
|
+
- `save-rules`: Guarda reglas a archivo
|
|
61
|
+
- `load-rules`: Carga reglas desde archivo
|
|
62
|
+
|
|
63
|
+
El módulo de gestión de rutas del WAF está completamente funcional y proporciona todas las funcionalidades solicitadas con un sistema robusto de estadísticas globales y persistencia de reglas.
|