mirror of
https://github.com/vastxie/99AI.git
synced 2025-09-17 09:16:38 +08:00
23 lines
783 B
JavaScript
23 lines
783 B
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.getClientIp = void 0;
|
|
function getFirstValidIp(ipString) {
|
|
const ips = ipString.split(',').map(ip => ip.trim());
|
|
return ips.find(ip => isValidIp(ip)) || '';
|
|
}
|
|
function isValidIp(ip) {
|
|
return /^\d{1,3}(\.\d{1,3}){3}$/.test(ip) || /^::ffff:\d{1,3}(\.\d{1,3}){3}$/.test(ip);
|
|
}
|
|
function getClientIp(req) {
|
|
const forwardedFor = req.header('x-forwarded-for');
|
|
let clientIp = forwardedFor ? getFirstValidIp(forwardedFor) : '';
|
|
if (!clientIp) {
|
|
clientIp = req.connection.remoteAddress || req.socket.remoteAddress || '';
|
|
}
|
|
if (clientIp.startsWith('::ffff:')) {
|
|
clientIp = clientIp.substring(7);
|
|
}
|
|
return clientIp;
|
|
}
|
|
exports.getClientIp = getClientIp;
|