package main import ( "fmt" "log" "net" "net/http" "os" "strings" ) func main() { http.HandleFunc("/ip", func(w http.ResponseWriter, r *http.Request) { ip := r.Header.Get("X-Real-IP") hostname := "" hostnames, err := net.LookupAddr(ip) if err == nil && len(hostnames) > 0 { hostname = hostnames[0] if strings.HasSuffix(hostname, ".") { hostname = hostname[:len(hostname)-1] } } fmt.Fprintf(w, "%s\n%s\n%s\n", ip, hostname, r.UserAgent()) }) listener, err := net.FileListener(os.Stdin) if err != nil { log.Fatal(err) } err = http.Serve(listener, nil) if err != nil { log.Fatal(err) } }