INNER CODE UNIT · TypeScript
getIp
Ammaar-Alam/minebench · middleware.ts:59
function getIp(req: NextRequest): IpInfo {
const requestIp = (req as NextRequest & { ip?: string | null }).ip?.trim();
if (requestIp) return { value: requestIp, trusted: true };
const trustForwardedRaw = process.env.ARENA_TRUST_X_FORWARDED_FOR;
const trustForwardedFor = readBoolEnv("ARENA_TRUST_X_FORWARDED_FOR", process.env.VERCEL === "1");
if (trustForwardedFor) {
const direct =
req.headers.get("x-real-ip") ??
req.headers.get("cf-connecting-ip") ??
req.headers.get("x-vercel-forwarded-for");
if (direct) return { value: direct.split(",")[0]?.trim() || null, trusted: true };
}
const forwarded = req.headers.get("x-forwarded-for");
const allowForwardedFallback =
trustForwardedFor || (!trustForwardedRaw && readBoolEnv("ARENA_FORWARDED_IP_FALLBACK", true));
// fallback for non vercel reverse proxies without next ip