37 lines
818 B
JavaScript
37 lines
818 B
JavaScript
function forwarded(req) {
|
|
const proxyAddrs = parse(req.headers["x-forwarded-for"] || "");
|
|
const socketAddr = req.socket.remoteAddress;
|
|
return [socketAddr].concat(proxyAddrs);
|
|
}
|
|
function parse(header) {
|
|
let end = header.length;
|
|
const list = [];
|
|
let start = header.length;
|
|
for (let i = header.length - 1; i >= 0; i--) {
|
|
switch (header.charCodeAt(i)) {
|
|
case 32:
|
|
if (start === end) {
|
|
start = end = i;
|
|
}
|
|
break;
|
|
case 44:
|
|
if (start !== end) {
|
|
list.push(header.substring(start, end));
|
|
}
|
|
start = end = i;
|
|
break;
|
|
default:
|
|
start = i;
|
|
break;
|
|
}
|
|
}
|
|
if (start !== end)
|
|
list.push(header.substring(start, end));
|
|
return list;
|
|
}
|
|
export {
|
|
forwarded,
|
|
parse
|
|
};
|
|
//# sourceMappingURL=index.js.map
|