insitu-js 1.2.0 → 1.3.0
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
CHANGED
|
@@ -5,6 +5,34 @@ El versionado sigue SemVer (MAJOR.MINOR.PATCH).
|
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
## [1.3.0] - 2026-02-17
|
|
9
|
+
|
|
10
|
+
### Soporte para Uploads Binarios y Excepciones en Firewall - Insitu Framework
|
|
11
|
+
|
|
12
|
+
#### Soporte para Uploads Binarios (`lib/core/server.js`)
|
|
13
|
+
- Implementación de `req.rawBody` para almacenar el cuerpo crudo de la solicitud como Buffer
|
|
14
|
+
- Mantenimiento de compatibilidad con `req.body` para comportamiento original (string)
|
|
15
|
+
- Capacidad de manejar uploads de archivos binarios (.tar.gz, imágenes, etc.)
|
|
16
|
+
- Permite que las rutas que procesan archivos binarios accedan al contenido sin conversión a string
|
|
17
|
+
|
|
18
|
+
#### Excepción en Firewall para Rutas de Deploy (`lib/middleware/firewall.js`)
|
|
19
|
+
- Exclusión de rutas `POST /api/admin/apps/deploy` del firewall
|
|
20
|
+
- Las solicitudes de deploy ahora saltan las reglas de seguridad del firewall
|
|
21
|
+
- Permite procesos de despliegue automático sin bloqueos por reglas de seguridad
|
|
22
|
+
|
|
23
|
+
#### Compatibilidad
|
|
24
|
+
- **Retrocompatible:** Sí. Los cambios no afectan funcionalidad existente
|
|
25
|
+
- **Requiere:** Ninguna dependencia adicional
|
|
26
|
+
- **Afecta:** Solo a rutas que acceden a `req.rawBody` y rutas de deploy de administración
|
|
27
|
+
|
|
28
|
+
#### Beneficios Obtenidos
|
|
29
|
+
- Capacidad de subir archivos binarios de cualquier tipo
|
|
30
|
+
- Flexibilidad para manejar contenido crudo en formatos específicos
|
|
31
|
+
- Despliegue automático sin interferencia del firewall
|
|
32
|
+
- Mejor integración con sistemas de CI/CD
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
8
36
|
## [1.2.0] - 2026-02-16
|
|
9
37
|
|
|
10
38
|
### Custom Static 404 Response Filter - Insitu Framework
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manejadores de hooks para aplicaciones (App Server)
|
|
3
|
+
* Implementación para el framework Insitu
|
|
4
|
+
*
|
|
5
|
+
* Este archivo maneja los hooks específicos para la gestión de aplicaciones
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
class AppHooksHandler {
|
|
9
|
+
/**
|
|
10
|
+
* Dispara el hook antes de registrar las rutas de una aplicación
|
|
11
|
+
* @param {Object} server - Instancia del servidor
|
|
12
|
+
* @param {Object} routeConfig - Configuración de la ruta
|
|
13
|
+
* @param {string} appName - Nombre de la aplicación
|
|
14
|
+
* @param {string} version - Versión de la aplicación
|
|
15
|
+
* @returns {Object} - routeConfig modificado
|
|
16
|
+
*/
|
|
17
|
+
static handleBeforeAppRouteRegister(server, routeConfig, appName, version) {
|
|
18
|
+
if (server.hooks) {
|
|
19
|
+
// El filtro puede modificar routeConfig
|
|
20
|
+
return server.hooks.applyFilters(
|
|
21
|
+
'before_app_routes_register',
|
|
22
|
+
routeConfig,
|
|
23
|
+
appName,
|
|
24
|
+
version
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
return routeConfig;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Dispara el hook después de registrar las rutas de una aplicación
|
|
32
|
+
* @param {Object} server - Instancia del servidor
|
|
33
|
+
* @param {Array} routes - Lista de rutas registradas
|
|
34
|
+
* @param {string} appName - Nombre de la aplicación
|
|
35
|
+
* @param {string} version - Versión de la aplicación
|
|
36
|
+
*/
|
|
37
|
+
static handleAfterAppRoutesRegister(server, routes, appName, version) {
|
|
38
|
+
if (server.hooks) {
|
|
39
|
+
server.hooks.doAction('after_app_routes_register', routes, appName, version);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Dispara el hook cuando una ruta de aplicación es registrada
|
|
45
|
+
* @param {Object} server - Instancia del servidor
|
|
46
|
+
* @param {Object} route - Ruta registrada
|
|
47
|
+
* @param {string} appName - Nombre de la aplicación
|
|
48
|
+
* @param {string} version - Versión de la aplicación
|
|
49
|
+
*/
|
|
50
|
+
static handleAppRouteRegistered(server, route, appName, version) {
|
|
51
|
+
if (server.hooks) {
|
|
52
|
+
server.hooks.doAction('app_route_registered', route, appName, version);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
module.exports = AppHooksHandler;
|
package/lib/core/server.js
CHANGED
|
@@ -987,7 +987,18 @@ class APIServer {
|
|
|
987
987
|
req.on('end', async () => {
|
|
988
988
|
try {
|
|
989
989
|
// Concatenar todos los chunks una sola vez
|
|
990
|
-
|
|
990
|
+
const rawBuffer = Buffer.concat(bodyChunks);
|
|
991
|
+
|
|
992
|
+
// ============================================
|
|
993
|
+
// BINARY UPLOAD SUPPORT - BlackCoffee
|
|
994
|
+
// ============================================
|
|
995
|
+
// Guardar body raw como Buffer para rutas binarias
|
|
996
|
+
// Esto permite uploads de archivos binarios (.tar.gz, imágenes, etc.)
|
|
997
|
+
req.rawBody = rawBuffer;
|
|
998
|
+
// ============================================
|
|
999
|
+
|
|
1000
|
+
// Convertir a string para req.body (comportamiento original)
|
|
1001
|
+
req.body = rawBuffer.toString();
|
|
991
1002
|
|
|
992
1003
|
// Actualizar estadísticas globales de bytes recibidos
|
|
993
1004
|
StatsHooksHandler.updateRequestBytes(bodySize);
|
|
@@ -399,6 +399,11 @@ class Firewall {
|
|
|
399
399
|
*/
|
|
400
400
|
middleware() {
|
|
401
401
|
return (req, res, next) => {
|
|
402
|
+
// Excluir rutas de administración de deploy
|
|
403
|
+
if (req.method === 'POST' && req.url.startsWith('/api/admin/apps/deploy')) {
|
|
404
|
+
return next(); // Saltar firewall para deploy
|
|
405
|
+
}
|
|
406
|
+
|
|
402
407
|
// Disparar hook antes de procesar la solicitud
|
|
403
408
|
const hooks = require('../../index.js').hooks;
|
|
404
409
|
if (hooks) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "insitu-js",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Insitu Framework v1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"description": "Insitu Framework v1.3.0 - A comprehensive framework for building secure and scalable APIs with frontend support, sessions, template engine, integration with qbuilderjs, complete MVC architecture with models, enhanced route loading from directory, improved model loading system, administration extension, queue management system, route cache management module, fixed routing issues with static and parametrized routes, custom static 404 response filter for personalized HTML templates, binary upload support, and firewall exceptions for admin deploy routes",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1",
|