Add proof of concept WebApp with basic functionality
TODO: • Add arguments to app for port and address • Add x-forwarded-for header support for use behind proxies • Be able to give response in text, json or htmlmaster
parent
d199e866c8
commit
c3a54a1b85
@ -0,0 +1 @@
|
|||||||
|
what-is-my-ip
|
@ -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)
|
||||||
|
}
|
Loading…
Reference in New Issue