mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-30 17:53:21 -04:00 
			
		
		
		
	middleware/proxy: config syntax cleanups (#435)
* middleware/proxy: config syntax cleanups Allow port numbers to be used in the transfer statements and clean up the proxy stanza parsing. Also allow, when specifying an upstream, /etc/resolv.conf (or any other file) to be used for getting the upstream nameserver. Add tests and fix the documentation to make clear what is allowed. * Fix the other upstream parse as well
This commit is contained in:
		| @@ -2,12 +2,12 @@ package file | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"net" | ||||
| 	"os" | ||||
| 	"path" | ||||
|  | ||||
| 	"github.com/miekg/coredns/core/dnsserver" | ||||
| 	"github.com/miekg/coredns/middleware" | ||||
| 	"github.com/miekg/coredns/middleware/pkg/dnsutil" | ||||
|  | ||||
| 	"github.com/mholt/caddy" | ||||
| ) | ||||
| @@ -125,24 +125,26 @@ func TransferParse(c *caddy.Controller, secondary bool) (tos, froms []string, er | ||||
| 			tos = c.RemainingArgs() | ||||
| 			for i := range tos { | ||||
| 				if tos[i] != "*" { | ||||
| 					if x := net.ParseIP(tos[i]); x == nil { | ||||
| 						return nil, nil, fmt.Errorf("must specify an IP address: `%s'", tos[i]) | ||||
| 					normalized, err := dnsutil.ParseHostPort(tos[i], "53") | ||||
| 					if err != nil { | ||||
| 						return nil, nil, err | ||||
| 					} | ||||
| 					tos[i] = middleware.Addr(tos[i]).Normalize() | ||||
| 					tos[i] = normalized | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if value == "from" { | ||||
| 			if !secondary { | ||||
| 				return nil, nil, fmt.Errorf("can't use `transfer from` when not being a seconary") | ||||
| 				return nil, nil, fmt.Errorf("can't use `transfer from` when not being a secondary") | ||||
| 			} | ||||
| 			froms = c.RemainingArgs() | ||||
| 			for i := range froms { | ||||
| 				if froms[i] != "*" { | ||||
| 					if x := net.ParseIP(froms[i]); x == nil { | ||||
| 						return nil, nil, fmt.Errorf("must specify an IP address: `%s'", froms[i]) | ||||
| 					normalized, err := dnsutil.ParseHostPort(froms[i], "53") | ||||
| 					if err != nil { | ||||
| 						return nil, nil, err | ||||
| 					} | ||||
| 					froms[i] = middleware.Addr(froms[i]).Normalize() | ||||
| 					froms[i] = normalized | ||||
| 				} else { | ||||
| 					return nil, nil, fmt.Errorf("can't use '*' in transfer from") | ||||
| 				} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user