aboutsummaryrefslogtreecommitdiff
path: root/middleware/reverse/setup.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/reverse/setup.go')
-rw-r--r--middleware/reverse/setup.go35
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,
})
}
}