UNPKG

forest-express

Version:

Official package for all Forest Express Lianas

20 lines (19 loc) 858 B
"use strict"; var ipAddr = require('ipaddr.js'); var ipRegex = require('ip-regex'); function getIpFromRequest(request) { /** @type {string} */ var forwardedAddresses = request.headers['x-forwarded-for']; var parsedIps = forwardedAddresses === null || forwardedAddresses === void 0 ? void 0 : forwardedAddresses.match(ipRegex()); if (parsedIps !== null && parsedIps !== void 0 && parsedIps.length) { // If the ip chain contains multiple IPs, the last public IP from the chain is the only // one we can trust and it corresponds to real IP that contacted our own reverse proxy return parsedIps.reverse().map(function (address) { return address.trim(); }).find(function (address) { return ipAddr.parse(address).range() !== 'private'; }); } return request.connection.remoteAddress; } module.exports = getIpFromRequest;