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, "\"Method\": %q\n", html.EscapeString(r.Method))
fmt.Fprintf(w, "\"Proto\": %q\n", html.EscapeString(r.Proto))
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))
}