diff options
-rw-r--r-- | core/dnsserver/directives.go | 1 | ||||
-rw-r--r-- | middleware/whoami/whoami.go | 10 |
2 files changed, 7 insertions, 4 deletions
diff --git a/core/dnsserver/directives.go b/core/dnsserver/directives.go index 25f935111..e2883a1c2 100644 --- a/core/dnsserver/directives.go +++ b/core/dnsserver/directives.go @@ -92,4 +92,5 @@ var directives = []string{ "etcd", "kubernetes", "proxy", + "whoami", } diff --git a/middleware/whoami/whoami.go b/middleware/whoami/whoami.go index 4117db35e..354bf6b4f 100644 --- a/middleware/whoami/whoami.go +++ b/middleware/whoami/whoami.go @@ -29,11 +29,11 @@ func (wh Whoami) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) switch state.Family() { case 1: rr = new(dns.A) - rr.(*dns.A).Hdr = dns.RR_Header{Name: state.QName(), Rrtype: state.QType(), Class: state.QClass()} + 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: state.QType(), Class: state.QClass()} + rr.(*dns.AAAA).Hdr = dns.RR_Header{Name: state.QName(), Rrtype: dns.TypeAAAA, Class: state.QClass()} rr.(*dns.AAAA).AAAA = net.ParseIP(ip) } @@ -41,10 +41,12 @@ func (wh Whoami) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) 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 = append(a.Extra, rr) - a.Extra = append(a.Extra, srv) + a.Extra = []dns.RR{rr, srv} + state.SizeAndDo(a) w.WriteMsg(a) + return 0, nil } |