/** Extract client IP / UA from incoming requests (proxy-aware). */

export function getClientIp(req: Request): string | null {
  const headers = req.headers;
  const forwarded = headers.get("x-forwarded-for");
  if (forwarded) {
    const first = forwarded.split(",")[0]?.trim();
    if (first) return first.slice(0, 64);
  }
  const realIp = headers.get("x-real-ip")?.trim();
  if (realIp) return realIp.slice(0, 64);
  const cf = headers.get("cf-connecting-ip")?.trim();
  if (cf) return cf.slice(0, 64);
  return null;
}

export function getUserAgent(req: Request): string | null {
  return req.headers.get("user-agent");
}

export function requestMeta(req: Request) {
  return {
    ip: getClientIp(req),
    userAgent: getUserAgent(req),
  };
}
