import { Request } from 'express'; import { validv4, validv6 } from './validators'; export function fromRequest(req: Request): { v4: string | null; v6: string | null; } { let v4: null | string = null; const qv4 = req.query.ipv4 || req.body.ipv4; let v6: null | string = null; const qv6 = req.query.ipv6 || req.body.ipv6; // Lets begin our trials // Determine Address from request IP v4 = req.ip; if (v4 && !validv4(v4)) { v6 = v4; v4 = null; } // IPv4 if (qv4 && validv4(qv4)) { v4 = qv4; } if (qv4 === 'ignore') { v4 = null; } // IPv6 if (qv6 && validv6(qv6)) { v6 = qv6; } if (qv6 === 'ignore') { v6 = null; } if (v4 === null && v6 === null) { return { v4, v6 }; } // Remove subnet mask and prefix if (v6) v6 = v6.replace(/\/(\d+)$/, ''); if (v4) v4 = v4.replace(/\/(\d+)$/, ''); return { v4, v6 }; }