From 0aa52feaac717f86d41d96223a1f4ba429bd4b70 Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Thu, 16 Apr 2026 11:51:30 +0200 Subject: [PATCH] Proxy --- .env | 2 +- docs/sim-api/environments/simconnections.bru | 4 ++ docs/sim-api/test proxy.bru | 20 +++++++ .../sim-entrada-eventos/config/env/index.ts | 1 + .../infrastructure/simconnectionsRoutes.ts | 55 ++++++++++++++++--- 5 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 docs/sim-api/environments/simconnections.bru create mode 100644 docs/sim-api/test proxy.bru diff --git a/.env b/.env index 250da3e..d72f207 100644 --- a/.env +++ b/.env @@ -29,4 +29,4 @@ PGPASSWORD=alvar PGPORT=5433 # Proxy -SIMCONNECTIONSURL=http://sim-connections.savefamilygps.net +CONNECTIONS_URL=https://sim-connections.savefamilygps.net diff --git a/docs/sim-api/environments/simconnections.bru b/docs/sim-api/environments/simconnections.bru new file mode 100644 index 0000000..d7e876f --- /dev/null +++ b/docs/sim-api/environments/simconnections.bru @@ -0,0 +1,4 @@ +vars { + baseurl: http://sim-connections.savefamilygps.net +} +color: #C77A0F diff --git a/docs/sim-api/test proxy.bru b/docs/sim-api/test proxy.bru new file mode 100644 index 0000000..d4e17b0 --- /dev/null +++ b/docs/sim-api/test proxy.bru @@ -0,0 +1,20 @@ +meta { + name: test proxy + type: http + seq: 14 +} + +get { + url: {{baseurl}}/simconnections/alai/select?iccid=1111111111111111111 + body: none + auth: inherit +} + +params:query { + iccid: 1111111111111111111 +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/packages/sim-entrada-eventos/config/env/index.ts b/packages/sim-entrada-eventos/config/env/index.ts index 3923ba0..c8d6370 100644 --- a/packages/sim-entrada-eventos/config/env/index.ts +++ b/packages/sim-entrada-eventos/config/env/index.ts @@ -22,4 +22,5 @@ export const env = { RABBITMQ_SECURE: process.env.RABBITMQ_SECURE, RABBITMQ_RETRY_INTERVAL: process.env.RABBITMQ_INTERVAL, RABBITMQ_VHOST: String(process.env.RABBITMQ_VHOST), + CONNECTIONS_URL: String(process.env.CONNECTIONS_URL) }; diff --git a/packages/sim-entrada-eventos/infrastructure/simconnectionsRoutes.ts b/packages/sim-entrada-eventos/infrastructure/simconnectionsRoutes.ts index f955865..e0173bb 100644 --- a/packages/sim-entrada-eventos/infrastructure/simconnectionsRoutes.ts +++ b/packages/sim-entrada-eventos/infrastructure/simconnectionsRoutes.ts @@ -1,21 +1,58 @@ +import { env } from "#config/env/index.js" import { Router } from "express" +import { ClientRequest, IncomingMessage } from "http" import { createProxyMiddleware } from "http-proxy-middleware" +import { Request } from "express" export const connectionsRoutes = Router() -const CONNECTIONSURL = "" // TODO: Meter al ENV +const CONNECTIONS_URL = env.CONNECTIONS_URL// TODO: Meter al ENV +//const CONNECTIONS_URL = "http://sf-nfc-server.savefamilygps.net" -connectionsRoutes.post("/", createProxyMiddleware({ - target: CONNECTIONSURL + "/sim/activate", +console.log("CONNURL: ", CONNECTIONS_URL) + +connectionsRoutes.use("", createProxyMiddleware({ + target: CONNECTIONS_URL, changeOrigin: true, - // pathrewrite - //on proxy req + pathRewrite: { + '^/': "/simconnections/" + }, + on: { + proxyReq: (proxyReq: ClientRequest, req: Request) => { + // 1. Construimos la URL de origen (lo que recibe tu proxy) + console.log(JSON.stringify(req)) + const protocol = req.protocol; + const host = req.get('host'); + const originalFullUrl = `${protocol}://${host}${req.originalUrl}`; + + // 2. Construimos la URL de destino (hacia donde se envía) + // proxyReq.path ya incluye el path rewrite y los query params + const destinationFullUrl = `${CONNECTIONS_URL}${proxyReq.path}`; + + console.log('──────────────────────────────────────────────────'); + console.log(`[PROXY_DEBUG]`); + console.log(` ENTRADA: ${originalFullUrl}`); + console.log(` MÉTODO : ${req.method}`); + console.log(` DESTINO: ${destinationFullUrl}`); + console.log('──────────────────────────────────────────────────'); + + //console.log(`[Proxy Req]: ${req.method} ${req.url} -> ${proxyReq.path}`); + }, + proxyRes: (proxyRes, req, res) => { + console.log(`[Proxy Res] Status: ${proxyRes.statusCode} desde ${req.url}`); + }, + error: (err, req, res) => { + console.error('[Proxy Error]:', err); + + // Validamos que 'res' tenga el método 'status' (típico de Express Response) + if ('status' in res) { + //@ts-ignore + res.status(500).json({ message: 'Error interno en el Gateway' }); + } + }, + } })) -connectionsRoutes.post("/sim/pause", createProxyMiddleware({ - target: CONNECTIONSURL + "/sim/pause", - changeOrigin: true -})) // Rutas