package api import ( "net" "strings" "github.com/gin-gonic/gin" ) func clientIP(c *gin.Context) string { if xff := c.GetHeader("X-Forwarded-For"); xff != "" { parts := strings.Split(xff, ",") return strings.TrimSpace(parts[0]) } if xri := strings.TrimSpace(c.GetHeader("X-Real-IP")); xri != "" { return xri } host, _, err := net.SplitHostPort(c.Request.RemoteAddr) if err != nil { return c.Request.RemoteAddr } return host }