diff options
author | Jordan <me@jordan.im> | 2022-12-31 14:52:04 -0700 |
---|---|---|
committer | Jordan <me@jordan.im> | 2022-12-31 14:52:04 -0700 |
commit | 7c1d3208374e36f2d3c3a16c10ab59adc98b46ba (patch) | |
tree | 6125eabbf1c3ee8c89b31267c1ade93b2c3bd820 /whoami.go | |
download | whoami-7c1d3208374e36f2d3c3a16c10ab59adc98b46ba.tar.gz whoami-7c1d3208374e36f2d3c3a16c10ab59adc98b46ba.zip |
initial commit
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)) +} |