UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

37 lines (36 loc) 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.contextFromStream = contextFromStream; const buildRouteFromURL_1 = require("../../../helpers/buildRouteFromURL"); const getIPAddressFromRequest_1 = require("../../../helpers/getIPAddressFromRequest"); const parseCookies_1 = require("../../../helpers/parseCookies"); const tryParseURLParams_1 = require("../../../helpers/tryParseURLParams"); /** * Extracts required information from the http2 stream and headers to create a context object. */ function contextFromStream(stream, headers, module) { var _a; const url = headers[":path"]; const queryObject = {}; if (url) { const params = (0, tryParseURLParams_1.tryParseURLParams)(url); for (const [key, value] of params.entries()) { queryObject[key] = value; } } return { url: url, method: headers[":method"], headers: headers, route: url ? (0, buildRouteFromURL_1.buildRouteFromURL)(url) : undefined, query: queryObject, source: `${module}.createServer`, routeParams: {}, cookies: (headers === null || headers === void 0 ? void 0 : headers.cookie) ? (0, parseCookies_1.parse)(headers.cookie) : {}, body: undefined, remoteAddress: (0, getIPAddressFromRequest_1.getIPAddressFromRequest)({ headers: headers, remoteAddress: (_a = stream.session) === null || _a === void 0 ? void 0 : _a.socket.remoteAddress, }), }; }