package main import ( "io" "net" "net/http" ) func init() { http.HandleFunc("/ip", ip) } func ip(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain") if remote := r.Header.Get("X-Forwarded-For"); remote != "" { io.WriteString(w, remote) return } addr, _, err := net.SplitHostPort(r.RemoteAddr) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } io.WriteString(w, addr) }