From 304a33528e11b65e46c35291a9666bb11ff1cdad Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Wed, 24 Feb 2021 23:20:24 +0800 Subject: [PATCH] feat: add simple http server --- simple_httpserver/simpleserver.go | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 simple_httpserver/simpleserver.go diff --git a/simple_httpserver/simpleserver.go b/simple_httpserver/simpleserver.go new file mode 100644 index 0000000..b8a5827 --- /dev/null +++ b/simple_httpserver/simpleserver.go @@ -0,0 +1,47 @@ +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 +} \ No newline at end of file