Spaces:
Running
Running
const express = require('express'); | |
const ipaddr = require('ipaddr.js'); | |
// Instantiate parser middleware here with application-level size limits | |
const jsonParser = express.json({ limit: '200mb' }); | |
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 | |
*/ | |
function getIpFromRequest(req) { | |
let clientIp = req.connection.remoteAddress; | |
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; | |
clientIp = clientIp.toString(); | |
} | |
return clientIp; | |
} | |
module.exports = { jsonParser, urlencodedParser, getIpFromRequest }; | |