From 7d834ce037681ec7228d6ee5cbbcfc580bea5228 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Wed, 23 Mar 2016 10:54:50 +0000 Subject: [PATCH] Remove reflect middleware - it was only a toy --- core/directives.go | 5 +- core/setup/reflect.go | 28 ---------- middleware/reflect/reflect.go | 86 ------------------------------ middleware/reflect/reflect_test.go | 1 - 4 files changed, 2 insertions(+), 118 deletions(-) delete mode 100644 core/setup/reflect.go delete mode 100644 middleware/reflect/reflect.go delete mode 100644 middleware/reflect/reflect_test.go diff --git a/core/directives.go b/core/directives.go index 96f4d910c..71e1aa9a0 100644 --- a/core/directives.go +++ b/core/directives.go @@ -51,12 +51,11 @@ var directiveOrder = []directive{ {"shutdown", setup.Shutdown}, // Directives that inject handlers (middleware) + {"log", setup.Log}, + {"errors", setup.Errors}, {"prometheus", setup.Prometheus}, {"rewrite", setup.Rewrite}, {"file", setup.File}, - {"reflect", setup.Reflect}, - {"log", setup.Log}, - {"errors", setup.Errors}, {"proxy", setup.Proxy}, } diff --git a/core/setup/reflect.go b/core/setup/reflect.go deleted file mode 100644 index 9ae1d5181..000000000 --- a/core/setup/reflect.go +++ /dev/null @@ -1,28 +0,0 @@ -package setup - -import ( - "github.com/miekg/coredns/middleware" - "github.com/miekg/coredns/middleware/reflect" -) - -// Reflect sets up the reflect middleware. -func Reflect(c *Controller) (middleware.Middleware, error) { - if err := reflectParse(c); err != nil { - return nil, err - } - return func(next middleware.Handler) middleware.Handler { - return reflect.Reflect{Next: next} - }, nil - -} - -func reflectParse(c *Controller) error { - for c.Next() { - if c.Val() == "reflect" { - if c.NextArg() { - return c.ArgErr() - } - } - } - return nil -} diff --git a/middleware/reflect/reflect.go b/middleware/reflect/reflect.go deleted file mode 100644 index 6e49c4199..000000000 --- a/middleware/reflect/reflect.go +++ /dev/null @@ -1,86 +0,0 @@ -// Reflect provides middleware that reflects back some client properties. -// This is the default middleware when Caddy is run without configuration. -// -// The left-most label must be `who`. -// When queried for type A (resp. AAAA), it sends back the IPv4 (resp. v6) address. -// In the additional section the port number and transport are shown. -// Basic use pattern: -// -// dig @localhost -p 1053 who.miek.nl A -// -// ;; ANSWER SECTION: -// who.miek.nl. 0 IN A 127.0.0.1 -// -// ;; ADDITIONAL SECTION: -// who.miek.nl. 0 IN TXT "Port: 56195 (udp)" -package reflect - -import ( - "errors" - "net" - "strings" - - "golang.org/x/net/context" - - "github.com/miekg/coredns/middleware" - "github.com/miekg/dns" -) - -type Reflect struct { - Next middleware.Handler -} - -func (rl Reflect) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - state := middleware.State{Req: r, W: w} - - class := r.Question[0].Qclass - qname := r.Question[0].Name - i, ok := dns.NextLabel(qname, 0) - - if strings.ToLower(qname[:i]) != who || ok { - err := state.ErrorMessage(dns.RcodeFormatError) - w.WriteMsg(err) - return dns.RcodeFormatError, errors.New(dns.RcodeToString[dns.RcodeFormatError]) - } - - answer := new(dns.Msg) - answer.SetReply(r) - answer.Compress = true - answer.Authoritative = true - - ip := state.IP() - proto := state.Proto() - port, _ := state.Port() - family := state.Family() - var rr dns.RR - - switch family { - case 1: - rr = new(dns.A) - rr.(*dns.A).Hdr = dns.RR_Header{Name: qname, Rrtype: dns.TypeA, Class: class, Ttl: 0} - rr.(*dns.A).A = net.ParseIP(ip).To4() - case 2: - rr = new(dns.AAAA) - rr.(*dns.AAAA).Hdr = dns.RR_Header{Name: qname, Rrtype: dns.TypeAAAA, Class: class, Ttl: 0} - rr.(*dns.AAAA).AAAA = net.ParseIP(ip) - } - - t := new(dns.TXT) - t.Hdr = dns.RR_Header{Name: qname, Rrtype: dns.TypeTXT, Class: class, Ttl: 0} - t.Txt = []string{"Port: " + port + " (" + proto + ")"} - - switch state.Type() { - case "TXT": - answer.Answer = append(answer.Answer, t) - answer.Extra = append(answer.Extra, rr) - default: - fallthrough - case "AAAA", "A": - answer.Answer = append(answer.Answer, rr) - answer.Extra = append(answer.Extra, t) - } - w.WriteMsg(answer) - return 0, nil -} - -const who = "who." diff --git a/middleware/reflect/reflect_test.go b/middleware/reflect/reflect_test.go deleted file mode 100644 index 477a3a573..000000000 --- a/middleware/reflect/reflect_test.go +++ /dev/null @@ -1 +0,0 @@ -package reflect