Files
golang-tests/simple_httpserver/simpleserver.go

47 lines
1.0 KiB
Go

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
}