12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package main
-
- import (
- "log"
- "net/http"
- "strings"
- "encoding/json"
- )
-
- type jsonOutput struct {
- Ip string `json:"ip"`
- }
-
- func ipJsonOutput (w http.ResponseWriter, r *http.Request) {
- var ip jsonOutput
- ip.Ip = remoteAddr(r)
- output, err := json.Marshal(ip)
- if err != nil {
- w.Write([]byte(err.Error()))
- }
- w.Write([]byte(output))
- }
-
- func ipOutput (w http.ResponseWriter, r *http.Request) {
- ip := remoteAddr(r)
- w.Write([]byte(ip))
- }
-
- func remoteAddr ( r *http.Request) string {
- var ip string
- if r.RemoteAddr[0] == '[' {
- ip = strings.Split(r.RemoteAddr,"]")[0][1:]
- } else {
- ip = strings.Split(r.RemoteAddr,":")[0]
- }
- return ip
- }
-
- func main() {
- http.HandleFunc("/",ipOutput)
- http.HandleFunc("/json",ipJsonOutput)
- log.Fatal(http.ListenAndServe(":8080", nil))
- }
|