diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d149a94 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +what-is-my-ip diff --git a/what-is-my-ip.go b/what-is-my-ip.go new file mode 100644 index 0000000..b01a788 --- /dev/null +++ b/what-is-my-ip.go @@ -0,0 +1,31 @@ +package main + +import ( + "fmt" + "io" + "log" + "net" + "net/http" +) + +func main() { + http.HandleFunc("/", getIP) + fmt.Println("listening on port 3000") + http.ListenAndServe(":3000", nil) +} + +func getIP(w http.ResponseWriter, req *http.Request) { + ip, _, err := net.SplitHostPort(req.RemoteAddr) + if err != nil { + handleError(w, err, "Could not get IP address from request") + return + } + io.WriteString(w, ip+"\n") + log.Printf("Give response IP %s\n", ip) +} + +func handleError(resp http.ResponseWriter, err error, message string) { + resp.WriteHeader(http.StatusBadRequest) + io.WriteString(resp, message) + log.Printf("Error handling request: %s (%s)", message, err) +}