28 lines
935 B
JavaScript
28 lines
935 B
JavaScript
import express from 'express';
|
|
import ipaddr from 'ipaddr.js';
|
|
|
|
// Instantiate parser middleware here with application-level size limits
|
|
export const jsonParser = express.json({ limit: '200mb' });
|
|
export const urlencodedParser = express.urlencoded({ extended: true, limit: '200mb' });
|
|
|
|
/**
|
|
* Gets the IP address of the client from the request object.
|
|
* @param {import('express').Request} req Request object
|
|
* @returns {string} IP address of the client
|
|
*/
|
|
export function getIpFromRequest(req) {
|
|
let clientIp = req.socket.remoteAddress;
|
|
if (!clientIp) {
|
|
return 'unknown';
|
|
}
|
|
let ip = ipaddr.parse(clientIp);
|
|
// Check if the IP address is IPv4-mapped IPv6 address
|
|
if (ip.kind() === 'ipv6' && ip instanceof ipaddr.IPv6 && ip.isIPv4MappedAddress()) {
|
|
const ipv4 = ip.toIPv4Address().toString();
|
|
clientIp = ipv4;
|
|
} else {
|
|
clientIp = ip.toString();
|
|
}
|
|
return clientIp;
|
|
}
|