package main import ( "fmt" "log" "net" "os" "net/http" ) func main() { listen := "0.0.0.0:8000" log.Print("Start simple server at port: ", listen) http.HandleFunc("/", handler) log.Fatal(http.ListenAndServe(listen, nil)) } func handler(w http.ResponseWriter, r *http.Request) { log.Println("request from address: ", r.RemoteAddr) fmt.Fprintf(w, "%s %s %s\n", r.Method, r.URL, r.Proto) for k, v := range r.Header { fmt.Fprintf(w, "Header[%q] = %q\n", k, v) } fmt.Fprintf(w, "Host = %q\n", r.Host) fmt.Fprintf(w, "RemoteAddr = %q\n", r.RemoteAddr) if err := r.ParseForm(); err != nil { log.Print(err) } for k, v := range r.Form { fmt.Fprintf(w, "Form[%q] = %q\n", k, v) } fmt.Fprintf(w, "\n===> local IP: %q\n\n",GetOutboundIP()) //fmt.Fprintf(w, "Env message = %s\n", os.Getenv("message")) } func GetOutboundIP() net.IP { conn, err := net.Dial("udp", "8.8.8.8:80") if err != nil { log.Fatal(err) } defer conn.Close() localAddr := conn.LocalAddr().(*net.UDPAddr) return localAddr.IP }