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

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…