This commit is contained in:
2026-04-16 11:51:30 +02:00
parent 15b70309da
commit 0aa52feaac
5 changed files with 72 additions and 10 deletions

2
.env
View File

@@ -29,4 +29,4 @@ PGPASSWORD=alvar
PGPORT=5433
# Proxy
SIMCONNECTIONSURL=http://sim-connections.savefamilygps.net
CONNECTIONS_URL=https://sim-connections.savefamilygps.net

View File

@@ -0,0 +1,4 @@
vars {
baseurl: http://sim-connections.savefamilygps.net
}
color: #C77A0F

View File

@@ -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
}

View File

@@ -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)
};

View File

@@ -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