Spaces:
Paused
Paused
| 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; | |
| } | |