diff options
Diffstat (limited to 'middleware/whoami/whoami.go')
-rw-r--r-- | middleware/whoami/whoami.go | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/middleware/whoami/whoami.go b/middleware/whoami/whoami.go deleted file mode 100644 index 6b5ed332a..000000000 --- a/middleware/whoami/whoami.go +++ /dev/null @@ -1,57 +0,0 @@ -// Package whoami implements a middleware that returns details about the resolving -// querying it. -package whoami - -import ( - "net" - "strconv" - - "github.com/coredns/coredns/request" - - "github.com/miekg/dns" - "golang.org/x/net/context" -) - -// Whoami is a middleware that returns your IP address, port and the protocol used for connecting -// to CoreDNS. -type Whoami struct{} - -// ServeDNS implements the middleware.Handler interface. -func (wh Whoami) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - state := request.Request{W: w, Req: r} - - a := new(dns.Msg) - a.SetReply(r) - a.Compress = true - a.Authoritative = true - - ip := state.IP() - var rr dns.RR - - switch state.Family() { - case 1: - rr = new(dns.A) - rr.(*dns.A).Hdr = dns.RR_Header{Name: state.QName(), Rrtype: dns.TypeA, Class: state.QClass()} - rr.(*dns.A).A = net.ParseIP(ip).To4() - case 2: - rr = new(dns.AAAA) - rr.(*dns.AAAA).Hdr = dns.RR_Header{Name: state.QName(), Rrtype: dns.TypeAAAA, Class: state.QClass()} - rr.(*dns.AAAA).AAAA = net.ParseIP(ip) - } - - srv := new(dns.SRV) - srv.Hdr = dns.RR_Header{Name: "_" + state.Proto() + "." + state.QName(), Rrtype: dns.TypeSRV, Class: state.QClass()} - port, _ := strconv.Atoi(state.Port()) - srv.Port = uint16(port) - srv.Target = "." - - a.Extra = []dns.RR{rr, srv} - - state.SizeAndDo(a) - w.WriteMsg(a) - - return 0, nil -} - -// Name implements the Handler interface. -func (wh Whoami) Name() string { return "whoami" } |