diff options
Diffstat (limited to 'whoami.go')
-rw-r--r-- | whoami.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/whoami.go b/whoami.go new file mode 100644 index 0000000..de583e9 --- /dev/null +++ b/whoami.go @@ -0,0 +1,43 @@ +package main + +import ( + "flag" + "fmt" + "html" + "log" + "net/http" + "sort" +) + +func RequestHandler(w http.ResponseWriter, r *http.Request) { + + fmt.Fprintf(w, "\"Host\": %q\n", html.EscapeString(r.Host)) + fmt.Fprintf(w, "\"IP\": %q\n", html.EscapeString(r.RemoteAddr)) + fmt.Fprintf(w, "\"URI\": %q\n", html.EscapeString(r.RequestURI)) + + keys := make([]string, 0) + for k, _ := range r.Header { + keys = append(keys, k) + } + sort.Strings(keys) + for _, k := range keys { + for _, value := range r.Header[k] { + fmt.Fprintf(w, "%q: %q\n", html.EscapeString(k), html.EscapeString(value)) + } + } +} + +func main() { + + var ( + host string + port uint64 + ) + flag.StringVar(&host, "host", "127.0.0.1", "IP address to listen on") + flag.Uint64Var(&port, "port", 8080, "Port to listen on (default 8080)") + flag.Parse() + + http.HandleFunc("/", RequestHandler) + fmt.Printf("Listening on %v port %v (http://%v:%v/)\n", host, port, host, port) + log.Fatal(http.ListenAndServe(fmt.Sprintf("%s:%d", host, port), nil)) +} |