package utils import ( "net" "net/http" "strings" ) func ClientIP(r *http.Request) string { if xff := r.Header.Get("X-Forwarded-For"); xff != "" { parts := strings.Split(xff, ",") if len(parts) > 0 { return strings.TrimSpace(parts[0]) } } if ip := r.Header.Get("X-Real-IP"); ip != "" { return ip } // RemoteAddr: IP:port host, _, err := net.SplitHostPort(r.RemoteAddr) if err == nil { return host } return r.RemoteAddr }