chore: Refactor IP address retrieval logic in main.go

This commit is contained in:
skidoodle 2024-06-13 12:34:13 +02:00
parent 7e607bf733
commit f4b529eb7f

17
main.go
View file

@ -187,14 +187,15 @@ func handler(w http.ResponseWriter, r *http.Request) {
IPAddress = requestedThings[1] IPAddress = requestedThings[1]
} }
if IPAddress == "" || IPAddress == "self" { if IPAddress == "" || IPAddress == "self" {
if realIP, ok := r.Header["X-Forwarded-For"]; ok && len(realIP) > 0 { if realIP := r.Header.Get("CF-Connecting-IP"); realIP != "" {
IPAddress = realIP[0] IPAddress = realIP
} else { } else if realIP := r.Header.Get("X-Forwarded-For"); realIP != "" {
IPAddress = extractIP(r.RemoteAddr) IPAddress = strings.Split(realIP, ",")[0]
} } else {
} IPAddress = extractIP(r.RemoteAddr)
}
}
ip := net.ParseIP(IPAddress) ip := net.ParseIP(IPAddress)
if ip == nil { if ip == nil {
w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.Header().Set("Content-Type", "text/plain; charset=utf-8")