UNPKG

locadot

Version:

Secure your local development environment with HTTPS and custom domains like dev.localhost.

72 lines (71 loc) 2.55 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const template_1 = require("../constants/template"); const logger_1 = __importDefault(require("../utils/logger")); class HttpModule { static requestHandler(req, res, proxy, domainMap) { try { const host = req.headers.host?.split(":")[0]; const targetPort = domainMap[host]; if (!targetPort) { res.writeHead(502, { "Content-Type": "text/html" }); res.end((0, template_1.proxyNotFound)(host)); // logger.warn( // `${ // host || "" // } warn: Connection failed. Host not found. ${targetPort}. Total host available : ${ // Object.keys(domainMap).length // }` // ); } proxy.web(req, res, { target: `http://localhost:${targetPort}`, changeOrigin: true, headers: { "X-Original-Host": host || "localhost", }, }, (err) => { logger_1.default.warn(`${host || ""} warn ${err.name}=> ${JSON.stringify(err, null, 2)}`); res.writeHead(502); res.end("Connection failed. Host not found."); }); } catch (error) { logger_1.default.error(error); } } } HttpModule.requestUpgrade = (req, socket, head, proxy, domainMap) => { try { const host = req.headers.host?.split(":")[0]; const targetPort = domainMap[host]; if (!targetPort) { socket.end(); return; } logger_1.default.info(host || "", "log", `WebSocket upgrade request for ${host}`); proxy.ws(req, socket, head, { target: `ws://localhost:${targetPort}`, ws: true, changeOrigin: true, headers: { host: `localhost:${targetPort}`, "X-Original-Host": host || "localhost", }, }, (err) => { // locadotFile.updateLogs( // host || "", // "warn", // `WebSocket Error: ${err.name}=> ${err.message}` // ); socket.end(); }); } catch (error) { logger_1.default.error(error); } }; exports.default = HttpModule;