| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.loggerPlugin = void 0; |
| const url_1 = require("url"); |
| const logger_1 = require("../../logger"); |
| const logger_plugin_1 = require("../../utils/logger-plugin"); |
| const loggerPlugin = (proxyServer, options) => { |
| const logger = (0, logger_1.getLogger)(options); |
| proxyServer.on('error', (err, req, res, target) => { |
| const hostname = req?.headers?.host; |
| const requestHref = `${hostname}${req?.url}`; |
| const targetHref = `${target?.href}`; |
| const errorMessage = '[HPM] Error occurred while proxying request %s to %s [%s] (%s)'; |
| const errReference = 'https://nodejs.org/api/errors.html#errors_common_system_errors'; |
| logger.error(errorMessage, requestHref, targetHref, err.code || err, errReference); |
| }); |
| |
| |
| |
| |
| |
| |
| |
| proxyServer.on('proxyRes', (proxyRes, req, res) => { |
| |
| |
| const originalUrl = req.originalUrl ?? `${req.baseUrl || ''}${req.url}`; |
| |
| let target; |
| try { |
| const port = (0, logger_plugin_1.getPort)(proxyRes.req?.agent?.sockets); |
| const obj = { |
| protocol: proxyRes.req.protocol, |
| host: proxyRes.req.host, |
| pathname: proxyRes.req.path, |
| }; |
| target = new url_1.URL(`${obj.protocol}//${obj.host}${obj.pathname}`); |
| if (port) { |
| target.port = port; |
| } |
| |
| } |
| catch (err) { |
| |
| |
| target = new url_1.URL(options.target); |
| target.pathname = proxyRes.req.path; |
| } |
| const targetUrl = target.toString(); |
| const exchange = `[HPM] ${req.method} ${originalUrl} -> ${targetUrl} [${proxyRes.statusCode}]`; |
| logger.info(exchange); |
| }); |
| |
| |
| |
| proxyServer.on('open', (socket) => { |
| logger.info('[HPM] Client connected: %o', socket.address()); |
| }); |
| |
| |
| |
| proxyServer.on('close', (req, proxySocket, proxyHead) => { |
| logger.info('[HPM] Client disconnected: %o', proxySocket.address()); |
| }); |
| }; |
| exports.loggerPlugin = loggerPlugin; |
|
|