summaryrefslogtreecommitdiffstats
path: root/ip/main.go
blob: 9c91fd84232c48be260df25318b9dbf8a46508cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package main

import (
	"fmt"
	"log"
	"net"
	"net/http"
	"os"
	"strings"
)

func main() {
	http.HandleFunc("/ip", func(w http.ResponseWriter, r *http.Request) {
		ip := r.Header.Get("X-Real-IP")
		hostname := ""
		hostnames, err := net.LookupAddr(ip)
		if err == nil && len(hostnames) > 0 {
			hostname = hostnames[0]
			if strings.HasSuffix(hostname, ".") {
				hostname = hostname[:len(hostname)-1]
			}
		}
		fmt.Fprintf(w, "%s\n%s\n%s\n", ip, hostname, r.UserAgent())
	})
	listener, err := net.FileListener(os.Stdin)
	if err != nil {
		log.Fatal(err)
	}
	err = http.Serve(listener, nil)
	if err != nil {
		log.Fatal(err)
	}
}