@aikidosec/firewall
Version:
Zen by Aikido is an embedded Application Firewall that autonomously protects Node.js apps against common and critical attacks, provides rate limiting, detects malicious traffic (including bots), and more.
37 lines (36 loc) • 1.52 kB
JavaScript
;
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,
}),
};
}