17 lines
491 B
JavaScript
17 lines
491 B
JavaScript
import IPCIDR from 'ip-cidr';
|
|
|
|
export default function setIp(req, res, next) {
|
|
const ip = req.headers['x-forwarded-for']
|
|
? req.headers['x-forwarded-for'].split(',')[0]
|
|
: req.connection.remoteAddress;
|
|
|
|
// ensure IP is in expanded notation to simplify matching
|
|
const expandedIp = /:/.test(ip)
|
|
? new IPCIDR(`${ip}/128`) // IPv6
|
|
: new IPCIDR(`${ip}/32`); // IPv4
|
|
|
|
req.userIp = expandedIp.addressStart?.addressMinusSuffix || null; // eslint-disable-line no-param-reassign
|
|
|
|
next();
|
|
}
|