24 lines
635 B
JavaScript
24 lines
635 B
JavaScript
function getFirstForwardedValue(multiValueHeader) {
|
|
return multiValueHeader?.toString()?.split(",").map((e) => e.trim())?.[0];
|
|
}
|
|
const IP_RE = /^[0-9a-fA-F.:]{1,45}$/;
|
|
function isValidIpAddress(value) {
|
|
return IP_RE.test(value);
|
|
}
|
|
function getValidatedIpFromHeader(headerValue) {
|
|
const raw = getFirstForwardedValue(headerValue);
|
|
if (raw && isValidIpAddress(raw)) {
|
|
return raw;
|
|
}
|
|
return void 0;
|
|
}
|
|
function getClientIpAddress(request) {
|
|
return getValidatedIpFromHeader(request.headers.get("x-forwarded-for"));
|
|
}
|
|
export {
|
|
getClientIpAddress,
|
|
getFirstForwardedValue,
|
|
getValidatedIpFromHeader,
|
|
isValidIpAddress
|
|
};
|