diff --git a/AGENTS.md b/AGENTS.md index f00858f..c2406f1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -6,6 +6,7 @@ Este microservicio actúa como un sidecar local para el ecosistema GT:Sync / Pam - **Puerto del servicio:** `3040` - **Host:** `127.0.0.1` (Localhost) +- **Host remoto/LAN/ZeroTier:** usar `0.0.0.0` al levantar el proceso para escuchar en todas las interfaces. - **Motor Node:** Binario aislado (v24.15.0) para no afectar el PATH global. - **Core Stack:** `fastify` (Web Server), `zpl-js` (Parser), `canvas` (Render gráfico), `jspdf` (Exportación binaria). @@ -25,3 +26,10 @@ Para ejecutar el servidor o instalar paquetes a través de PM2 o consola, se DEB ```powershell C:\Users\Dorado\Desktop\Pampero\Proyectos\zpl-pdf-microservice\node-v24.15.0\node.exe server.js ``` + +**Levantarlo para acceso desde LAN/ZeroTier:** +```powershell +C:\Users\Dorado\Desktop\Pampero\Proyectos\zpl-pdf-microservice\node-v24.15.0\node.exe server.js --host=0.0.0.0 --port=3040 +``` + +El default sigue siendo `127.0.0.1:3040` para uso local. También se puede configurar con variables de entorno `HOST` y `PORT`. diff --git a/server.js b/server.js index 9426c18..848ecbc 100644 --- a/server.js +++ b/server.js @@ -5,8 +5,8 @@ const { createCanvas } = require("canvas"); const { jsPDF } = require("jspdf"); const { TextDecoder } = require("util"); -const HOST = "127.0.0.1"; -const PORT = 3040; +const DEFAULT_HOST = "127.0.0.1"; +const DEFAULT_PORT = 3040; const PAGE_PADDING_DOTS = 24; const DEFAULT_RENDER_OPTIONS = { width: 4, @@ -18,6 +18,22 @@ const DEFAULT_RENDER_OPTIONS = { let bwipPromise; +function getCliOption(name) { + const prefix = `--${name}=`; + const option = process.argv.find((argument) => argument.startsWith(prefix)); + + return option ? option.slice(prefix.length) : undefined; +} + +function getServerConfig() { + const port = Number(getCliOption("port") || process.env.PORT || DEFAULT_PORT); + + return { + host: getCliOption("host") || process.env.HOST || DEFAULT_HOST, + port: Number.isFinite(port) && port > 0 ? port : DEFAULT_PORT, + }; +} + function normalizeZpl(zpl) { return zpl.replace(/\\n/g, "\n").replace(/\r\n/g, "\n"); } @@ -660,9 +676,10 @@ function buildServer() { async function start() { const app = buildServer(); + const { host, port } = getServerConfig(); try { - await app.listen({ host: HOST, port: PORT }); + await app.listen({ host, port }); } catch (error) { app.log.error(error); process.exit(1); @@ -676,4 +693,5 @@ if (require.main === module) { module.exports = { buildServer, convertZplToPdf, + getServerConfig, };