diff options
author | 2017-02-10 12:48:51 +0000 | |
---|---|---|
committer | 2017-02-10 12:48:51 +0000 | |
commit | 3e196a6d57eddfb7e05cd6747f85ba02ceeaa0d5 (patch) | |
tree | 1629d66a851ad043514bfd6be08f5b45d3c5196d /middleware/reverse/setup.go | |
parent | 87a39a63531f18359e64b63ba8c56b141b892ef7 (diff) | |
download | coredns-3e196a6d57eddfb7e05cd6747f85ba02ceeaa0d5.tar.gz coredns-3e196a6d57eddfb7e05cd6747f85ba02ceeaa0d5.tar.zst coredns-3e196a6d57eddfb7e05cd6747f85ba02ceeaa0d5.zip |
middleware/reverse: random updates (#516)
* middleware/reverse: random updates
Make the documentation somewhat shorter (and hopefully clearer in the
process). Also to be on-par with the *auto* middleware, start counting
the referenced zones from 1 (instead of 0).
Some variable cleanups and use the NextOrFailure in the ServeDNS
function.
* More TODOs
Diffstat (limited to 'middleware/reverse/setup.go')
-rw-r--r-- | middleware/reverse/setup.go | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/middleware/reverse/setup.go b/middleware/reverse/setup.go index 024f7a39e..0dc4534c4 100644 --- a/middleware/reverse/setup.go +++ b/middleware/reverse/setup.go @@ -2,10 +2,10 @@ package reverse import ( "net" + "regexp" "sort" - "strings" "strconv" - "regexp" + "strings" "github.com/miekg/coredns/core/dnsserver" "github.com/miekg/coredns/middleware" @@ -27,7 +27,7 @@ func setupReverse(c *caddy.Controller) error { } dnsserver.GetConfig(c).AddMiddleware(func(next middleware.Handler) middleware.Handler { - return Reverse{Next: next, Networks:networks} + return Reverse{Next: next, Networks: networks} }) return nil @@ -50,13 +50,13 @@ func reverseParse(c *caddy.Controller) (networks, error) { var cidrs []*net.IPNet // parse all networks - for _, cidr := range c.RemainingArgs() { + for _, cidr := range c.RemainingArgs() { if cidr == "{" { break } _, ipnet, err := net.ParseCIDR(cidr) if err != nil { - return nil, c.Errf("%v needs to be an CIDR formatted Network\n", cidr) + return nil, c.Errf("network needs to be CIDR formatted: %q\n", cidr) } cidrs = append(cidrs, ipnet) } @@ -66,9 +66,9 @@ func reverseParse(c *caddy.Controller) (networks, error) { // set defaults var ( - template = "ip-" + templateNameIP + ".{zone[0]}" - ttl = 60 - fall = false + template = "ip-" + templateNameIP + ".{zone[1]}" + ttl = 60 + fall = false ) for c.NextBlock() { switch c.Val() { @@ -98,7 +98,9 @@ func reverseParse(c *caddy.Controller) (networks, error) { // prepare template // replace {zone[index]} by the listen zone/domain of this config block for i, zone := range zones { - template = strings.Replace(template, "{zone[" + string(i + 48) + "]}", zone, 1) + // TODO: we should be smarter about actually replacing this. This works, but silently allows "zone[-1]" + // for instance. + template = strings.Replace(template, "{zone["+strconv.Itoa(i+1)+"]}", zone, 1) } if !strings.HasSuffix(template, ".") { template += "." @@ -107,7 +109,7 @@ func reverseParse(c *caddy.Controller) (networks, error) { // extract zone from template templateZone := strings.SplitAfterN(template, ".", 2) if len(templateZone) != 2 || templateZone[1] == "" { - return nil, c.Errf("Cannot find domain in template '%v'", template) + return nil, c.Errf("cannot find domain in template '%v'", template) } // Create for each configured network in this stanza @@ -122,19 +124,18 @@ func reverseParse(c *caddy.Controller) (networks, error) { regexp.QuoteMeta(template), // escape dots regexp.QuoteMeta(templateNameIP), regexIP, - 1, ) + "$") + 1) + "$") if err != nil { - // invalid regex return nil, err } networks = append(networks, network{ - IPnet: ipnet, - Zone: templateZone[1], - Template: template, + IPnet: ipnet, + Zone: templateZone[1], + Template: template, RegexMatchIP: regex, - TTL: uint32(ttl), - Fallthrough: fall, + TTL: uint32(ttl), + Fallthrough: fall, }) } } |