diff options
Diffstat (limited to 'middleware/auto')
-rw-r--r-- | middleware/auto/README.md | 6 | ||||
-rw-r--r-- | middleware/auto/auto.go | 2 | ||||
-rw-r--r-- | middleware/auto/setup.go | 15 |
3 files changed, 23 insertions, 0 deletions
diff --git a/middleware/auto/README.md b/middleware/auto/README.md index 94a606708..64807b821 100644 --- a/middleware/auto/README.md +++ b/middleware/auto/README.md @@ -13,6 +13,8 @@ zonefile. New zones or changed zone are automatically picked up from disk. ~~~ auto [ZONES...] { directory DIR [REGEXP ORIGIN_TEMPLATE [TIMEOUT]] + no_reload + upstream ADDRESS... } ~~~ @@ -26,6 +28,10 @@ are used. name `db.example.com`, the extracted origin will be `example.com`. **TIMEOUT** specifies how often CoreDNS should scan the directory, the default is every 60 seconds. This value is in seconds. The minimum value is 1 second. +* `no_reload` by default CoreDNS will reload a zone from disk whenever it detects a change to the + file. This option disables that behavior. +* `upstream` defines upstream resolvers to be used resolve external names found (think CNAMEs) + pointing to external names. All directives from the *file* middleware are supported. Note that *auto* will load all zones found, even though the directive might only receive queries for a specific zone. I.e: diff --git a/middleware/auto/auto.go b/middleware/auto/auto.go index eaff7fd18..ec04a8766 100644 --- a/middleware/auto/auto.go +++ b/middleware/auto/auto.go @@ -9,6 +9,7 @@ import ( "github.com/miekg/coredns/middleware" "github.com/miekg/coredns/middleware/file" "github.com/miekg/coredns/middleware/metrics" + "github.com/miekg/coredns/middleware/proxy" "github.com/miekg/coredns/request" "github.com/miekg/dns" @@ -33,6 +34,7 @@ type ( // In the future this should be something like ZoneMeta that contains all this stuff. transferTo []string noReload bool + Proxy proxy.Proxy // Proxy for looking up names during the resolution process duration time.Duration } diff --git a/middleware/auto/setup.go b/middleware/auto/setup.go index 7681ea957..2d397a079 100644 --- a/middleware/auto/setup.go +++ b/middleware/auto/setup.go @@ -2,6 +2,7 @@ package auto import ( "log" + "net" "os" "path" "regexp" @@ -12,6 +13,7 @@ import ( "github.com/miekg/coredns/middleware" "github.com/miekg/coredns/middleware/file" "github.com/miekg/coredns/middleware/metrics" + "github.com/miekg/coredns/middleware/proxy" "github.com/mholt/caddy" ) @@ -142,6 +144,19 @@ func autoParse(c *caddy.Controller) (Auto, error) { case "no_reload": a.loader.noReload = true + case "upstream": + args := c.RemainingArgs() + if len(args) == 0 { + return a, false, c.ArgErr() + } + for i := 0; i < len(args); i++ { + h, p, e := net.SplitHostPort(args[i]) + if e != nil && p == "" { + args[i] = h + ":53" + } + } + a.loader.Proxy = proxy.New(args) + default: t, _, e := file.TransferParse(c, false) if e != nil { |