aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/dnsserver/address.go2
-rw-r--r--core/dnsserver/address_test.go28
-rw-r--r--core/dnsserver/config.go15
-rw-r--r--core/dnsserver/middleware.go52
-rw-r--r--core/dnsserver/register.go10
-rw-r--r--core/dnsserver/server.go3
-rw-r--r--middleware/cache/setup.go2
-rw-r--r--middleware/chaos/setup.go2
-rw-r--r--middleware/dnssec/setup.go2
-rw-r--r--middleware/errors/setup.go2
-rw-r--r--middleware/etcd/setup.go2
-rw-r--r--middleware/file/setup.go2
-rw-r--r--middleware/kubernetes/setup.go2
-rw-r--r--middleware/loadbalance/setup.go3
-rw-r--r--middleware/log/setup.go2
-rw-r--r--middleware/metrics/setup.go2
-rw-r--r--middleware/proxy/setup.go2
-rw-r--r--middleware/rewrite/setup.go2
-rw-r--r--middleware/secondary/setup.go2
-rw-r--r--middleware/whoami/setup.go2
20 files changed, 58 insertions, 81 deletions
diff --git a/core/dnsserver/address.go b/core/dnsserver/address.go
index 865d082cc..c5493d3d0 100644
--- a/core/dnsserver/address.go
+++ b/core/dnsserver/address.go
@@ -18,6 +18,8 @@ func (z zoneAddr) String() string { return z.Zone + ":" + z.Port }
// normalizeZone parses an zone string into a structured format with separate
// host, and port portions, as well as the original input string.
+//
+// TODO(miek): possibly move this to middleware/normalize.go
func normalizeZone(str string) (zoneAddr, error) {
var err error
diff --git a/core/dnsserver/address_test.go b/core/dnsserver/address_test.go
new file mode 100644
index 000000000..2aca80c70
--- /dev/null
+++ b/core/dnsserver/address_test.go
@@ -0,0 +1,28 @@
+package dnsserver
+
+import "testing"
+
+func TestNormalizeZone(t *testing.T) {
+ for i, test := range []struct {
+ input string
+ expected string
+ shouldErr bool
+ }{
+ {".", ".:53", false},
+ {".:54", ".:54", false},
+ {"..", ":", true},
+ {"..", ":", true},
+ } {
+ addr, err := normalizeZone(test.input)
+ actual := addr.String()
+ if test.shouldErr && err == nil {
+ t.Errorf("Test %d: Expected error, but there wasn't any", i)
+ }
+ if !test.shouldErr && err != nil {
+ t.Errorf("Test %d: Expected no error, but there was one: %v", i, err)
+ }
+ if actual != test.expected {
+ t.Errorf("Test %d: Expected %s but got %s", i, test.expected, actual)
+ }
+ }
+}
diff --git a/core/dnsserver/config.go b/core/dnsserver/config.go
index 7af483f21..cbe2fd5da 100644
--- a/core/dnsserver/config.go
+++ b/core/dnsserver/config.go
@@ -1,6 +1,10 @@
package dnsserver
-import "github.com/mholt/caddy"
+import (
+ "github.com/miekg/coredns/middleware"
+
+ "github.com/mholt/caddy"
+)
// Config configuration for a single server.
type Config struct {
@@ -13,14 +17,11 @@ type Config struct {
// The port to listen on.
Port string
- // The directory from which to parse db files, and store keys.
- Root string
-
// Middleware stack.
- Middleware []Middleware
+ Middleware []middleware.Middleware
// Compiled middleware stack.
- middlewareChain Handler
+ middlewareChain middleware.Handler
}
// GetConfig gets the Config that corresponds to c.
@@ -33,6 +34,6 @@ func GetConfig(c *caddy.Controller) *Config {
// we should only get here during tests because directive
// actions typically skip the server blocks where we make
// the configs.
- ctx.saveConfig(c.Key, &Config{Root: Root})
+ ctx.saveConfig(c.Key, &Config{})
return GetConfig(c)
}
diff --git a/core/dnsserver/middleware.go b/core/dnsserver/middleware.go
deleted file mode 100644
index 5bce304b1..000000000
--- a/core/dnsserver/middleware.go
+++ /dev/null
@@ -1,52 +0,0 @@
-package dnsserver
-
-import (
- "github.com/miekg/dns"
- "golang.org/x/net/context"
-)
-
-type (
- // Middleware is the middle layer which represents the traditional
- // idea of middleware: it chains one Handler to the next by being
- // passed the next Handler in the chain.
- Middleware func(Handler) Handler
-
- // Handler is like dns.Handler except ServeDNS may return an rcode
- // and/or error.
- //
- // If ServeDNS writes to the response body, it should return a status
- // code. If the status code is not one of the following:
- // * SERVFAIL (dns.RcodeServerFailure)
- // * REFUSED (dns.RecodeRefused)
- // * FORMERR (dns.RcodeFormatError)
- // * NOTIMP (dns.RcodeNotImplemented)
- //
- // CoreDNS assumes *no* reply has yet been written. All other response
- // codes signal other handlers above it that the response message is
- // already written, and that they should not write to it also.
- //
- // If ServeDNS encounters an error, it should return the error value
- // so it can be logged by designated error-handling middleware.
- //
- // If writing a response after calling another ServeDNS method, the
- // returned rcode SHOULD be used when writing the response.
- //
- // If handling errors after calling another ServeDNS method, the
- // returned error value SHOULD be logged or handled accordingly.
- //
- // Otherwise, return values should be propagated down the middleware
- // chain by returning them unchanged.
- Handler interface {
- ServeDNS(context.Context, dns.ResponseWriter, *dns.Msg) (int, error)
- }
-
- // HandlerFunc is a convenience type like dns.HandlerFunc, except
- // ServeDNS returns an rcode and an error. See Handler
- // documentation for more information.
- HandlerFunc func(context.Context, dns.ResponseWriter, *dns.Msg) (int, error)
-)
-
-// ServeDNS implements the Handler interface.
-func (f HandlerFunc) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
- return f(ctx, w, r)
-}
diff --git a/core/dnsserver/register.go b/core/dnsserver/register.go
index 047fb673f..25927782c 100644
--- a/core/dnsserver/register.go
+++ b/core/dnsserver/register.go
@@ -6,6 +6,8 @@ import (
"net"
"time"
+ "github.com/miekg/coredns/middleware"
+
"github.com/mholt/caddy"
"github.com/mholt/caddy/caddyfile"
)
@@ -96,7 +98,7 @@ func (h *dnsContext) MakeServers() ([]caddy.Server, error) {
}
// AddMiddleware adds a middleware to a site's middleware stack.
-func (c *Config) AddMiddleware(m Middleware) {
+func (c *Config) AddMiddleware(m middleware.Middleware) {
c.Middleware = append(c.Middleware, m)
}
@@ -126,17 +128,11 @@ func groupConfigsByListenAddr(configs []*Config) (map[string][]*Config, error) {
const (
// DefaultPort is the default port.
DefaultPort = "2053"
- // DefaultRoot is the default root folder.
- DefaultRoot = "."
)
// These "soft defaults" are configurable by
// command line flags, etc.
var (
- // Root is the site root
- // TODO(miek): double check if this is used and if we want to use it.
- Root = DefaultRoot
-
// Port is the site port
Port = DefaultPort
diff --git a/core/dnsserver/server.go b/core/dnsserver/server.go
index 4e02f1c21..9f2a8a024 100644
--- a/core/dnsserver/server.go
+++ b/core/dnsserver/server.go
@@ -8,6 +8,7 @@ import (
"sync"
"time"
+ "github.com/miekg/coredns/middleware"
"github.com/miekg/coredns/middleware/pkg/edns"
"github.com/miekg/coredns/request"
@@ -58,7 +59,7 @@ func NewServer(addr string, group []*Config) (*Server, error) {
// set the config per zone
s.zones[site.Zone] = site
// compile custom middleware for everything
- var stack Handler
+ var stack middleware.Handler
for i := len(site.Middleware) - 1; i >= 0; i-- {
stack = site.Middleware[i](stack)
}
diff --git a/middleware/cache/setup.go b/middleware/cache/setup.go
index 6b003503b..05811a276 100644
--- a/middleware/cache/setup.go
+++ b/middleware/cache/setup.go
@@ -22,7 +22,7 @@ func setup(c *caddy.Controller) error {
if err != nil {
return middleware.Error("cache", err)
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return NewCache(ttl, zones, next)
})
diff --git a/middleware/chaos/setup.go b/middleware/chaos/setup.go
index 18746f1b0..124c7d533 100644
--- a/middleware/chaos/setup.go
+++ b/middleware/chaos/setup.go
@@ -20,7 +20,7 @@ func setup(c *caddy.Controller) error {
return middleware.Error("chaos", err)
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return Chaos{Next: next, Version: version, Authors: authors}
})
diff --git a/middleware/dnssec/setup.go b/middleware/dnssec/setup.go
index 83ca785f4..74a70f87f 100644
--- a/middleware/dnssec/setup.go
+++ b/middleware/dnssec/setup.go
@@ -22,7 +22,7 @@ func setup(c *caddy.Controller) error {
return middleware.Error("dnssec", err)
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return New(zones, keys, next)
})
diff --git a/middleware/errors/setup.go b/middleware/errors/setup.go
index a5fa86921..437c6a996 100644
--- a/middleware/errors/setup.go
+++ b/middleware/errors/setup.go
@@ -54,7 +54,7 @@ func setup(c *caddy.Controller) error {
}
handler.Log = log.New(writer, "", 0)
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
handler.Next = next
return handler
})
diff --git a/middleware/etcd/setup.go b/middleware/etcd/setup.go
index 37f817e5c..47e253a69 100644
--- a/middleware/etcd/setup.go
+++ b/middleware/etcd/setup.go
@@ -37,7 +37,7 @@ func setup(c *caddy.Controller) error {
})
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
e.Next = next
return e
})
diff --git a/middleware/file/setup.go b/middleware/file/setup.go
index 65496d2eb..5a2c80e6b 100644
--- a/middleware/file/setup.go
+++ b/middleware/file/setup.go
@@ -37,7 +37,7 @@ func setup(c *caddy.Controller) error {
})
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return File{Next: next, Zones: zones}
})
diff --git a/middleware/kubernetes/setup.go b/middleware/kubernetes/setup.go
index d68f69921..f976ba75b 100644
--- a/middleware/kubernetes/setup.go
+++ b/middleware/kubernetes/setup.go
@@ -42,7 +42,7 @@ func setup(c *caddy.Controller) error {
return kubernetes.APIConn.Stop()
})
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
kubernetes.Next = next
return kubernetes
})
diff --git a/middleware/loadbalance/setup.go b/middleware/loadbalance/setup.go
index ef3f35f03..9f6e030d8 100644
--- a/middleware/loadbalance/setup.go
+++ b/middleware/loadbalance/setup.go
@@ -3,6 +3,7 @@ package loadbalance
import (
"github.com/mholt/caddy"
"github.com/miekg/coredns/core/dnsserver"
+ "github.com/miekg/coredns/middleware"
)
func init() {
@@ -17,7 +18,7 @@ func setup(c *caddy.Controller) error {
// TODO(miek): block and option parsing
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return RoundRobin{Next: next}
})
diff --git a/middleware/log/setup.go b/middleware/log/setup.go
index a86aa17f9..e14bebfe8 100644
--- a/middleware/log/setup.go
+++ b/middleware/log/setup.go
@@ -56,7 +56,7 @@ func setup(c *caddy.Controller) error {
return nil
})
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return Logger{Next: next, Rules: rules, ErrorFunc: dnsserver.DefaultErrorFunc}
})
diff --git a/middleware/metrics/setup.go b/middleware/metrics/setup.go
index 36e131bf3..eee886f00 100644
--- a/middleware/metrics/setup.go
+++ b/middleware/metrics/setup.go
@@ -22,7 +22,7 @@ func setup(c *caddy.Controller) error {
return middleware.Error("prometheus", err)
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
m.Next = next
return m
})
diff --git a/middleware/proxy/setup.go b/middleware/proxy/setup.go
index 3757fbbe3..865eef4b1 100644
--- a/middleware/proxy/setup.go
+++ b/middleware/proxy/setup.go
@@ -19,7 +19,7 @@ func setup(c *caddy.Controller) error {
if err != nil {
return middleware.Error("proxy", err)
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return Proxy{Next: next, Client: Clients(), Upstreams: upstreams}
})
diff --git a/middleware/rewrite/setup.go b/middleware/rewrite/setup.go
index 89c80e868..707ad962a 100644
--- a/middleware/rewrite/setup.go
+++ b/middleware/rewrite/setup.go
@@ -23,7 +23,7 @@ func setup(c *caddy.Controller) error {
return middleware.Error("rewrite", err)
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return Rewrite{Next: next, Rules: rewrites}
})
diff --git a/middleware/secondary/setup.go b/middleware/secondary/setup.go
index 8de9c540c..d0367094d 100644
--- a/middleware/secondary/setup.go
+++ b/middleware/secondary/setup.go
@@ -36,7 +36,7 @@ func setup(c *caddy.Controller) error {
}
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return Secondary{file.File{Next: next, Zones: zones}}
})
diff --git a/middleware/whoami/setup.go b/middleware/whoami/setup.go
index ad9995085..285060bbe 100644
--- a/middleware/whoami/setup.go
+++ b/middleware/whoami/setup.go
@@ -20,7 +20,7 @@ func setupWhoami(c *caddy.Controller) error {
return middleware.Error("whoami", c.ArgErr())
}
- dnsserver.GetConfig(c).AddMiddleware(func(next dnsserver.Handler) dnsserver.Handler {
+ dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler {
return Whoami{Next: next}
})