WhatsMyIpServer/whatsMyIpServer.go

32 lines
741 B
Go

package main
import (
"fmt"
"net/http"
"os"
)
var PROXY_HEADER string = os.Getenv("PROXY_HEADER")
func respondWithIp(writer http.ResponseWriter, request *http.Request) {
remote := request.RemoteAddr
if PROXY_HEADER != "" {
ipHeader := request.Header[PROXY_HEADER]
if len(ipHeader) != 1 {
fmt.Println("Error: Reading proxy header", PROXY_HEADER, "in request from", request.RemoteAddr, "got", ipHeader)
writer.WriteHeader(http.StatusInternalServerError)
fmt.Fprintf(writer, "Internal Server Error")
return
}
remote = ipHeader[0]
}
fmt.Fprintf(writer, "%s\n", remote)
}
func main() {
addr := ":8080"
http.HandleFunc("/", respondWithIp)
fmt.Println("Starting server on", addr)
http.ListenAndServe(addr, nil)
}