diff options
Diffstat (limited to 'middleware/proxy')
-rw-r--r-- | middleware/proxy/upstream.go | 5 | ||||
-rw-r--r-- | middleware/proxy/upstream_test.go | 46 |
2 files changed, 23 insertions, 28 deletions
diff --git a/middleware/proxy/upstream.go b/middleware/proxy/upstream.go index 93ef0e32d..677b8e2fc 100644 --- a/middleware/proxy/upstream.go +++ b/middleware/proxy/upstream.go @@ -4,7 +4,6 @@ import ( "fmt" "net" "strconv" - "strings" "sync/atomic" "time" @@ -44,6 +43,8 @@ func NewStaticUpstreams(c *caddyfile.Dispenser) ([]Upstream, error) { if !c.Args(&upstream.from) { return upstreams, c.ArgErr() } + upstream.from = middleware.Host(upstream.from).Normalize() + to := c.RemainingArgs() if len(to) == 0 { return upstreams, c.ArgErr() @@ -168,7 +169,7 @@ func parseBlock(c *caddyfile.Dispenser, u *staticUpstream) error { return c.ArgErr() } for i := 0; i < len(ignoredDomains); i++ { - ignoredDomains[i] = strings.ToLower(dns.Fqdn(ignoredDomains[i])) + ignoredDomains[i] = middleware.Host(ignoredDomains[i]).Normalize() } u.IgnoredSubDomains = ignoredDomains case "spray": diff --git a/middleware/proxy/upstream_test.go b/middleware/proxy/upstream_test.go index 3aa4104e8..3ee225c2d 100644 --- a/middleware/proxy/upstream_test.go +++ b/middleware/proxy/upstream_test.go @@ -1,8 +1,6 @@ package proxy import ( - "io/ioutil" - "os" "path/filepath" "strings" "testing" @@ -35,19 +33,6 @@ func TestAllowedDomain(t *testing.T) { } } -func writeTmpFile(t *testing.T, data string) (string, string) { - tempDir, err := ioutil.TempDir("", "") - if err != nil { - t.Fatalf("tempDir: %v", err) - } - - path := filepath.Join(tempDir, "resolv.conf") - if err := ioutil.WriteFile(path, []byte(data), 0644); err != nil { - t.Fatalf("writeFile: %v", err) - } - return tempDir, path -} - func TestProxyParse(t *testing.T) { rmFunc, cert, key, ca := getPEMFiles(t) defer rmFunc() @@ -66,6 +51,10 @@ func TestProxyParse(t *testing.T) { false, }, { + `proxy 10.0.0.0/24 8.8.8.8:53`, + false, + }, + { ` proxy . 8.8.8.8:53 { policy round_robin @@ -103,7 +92,7 @@ proxy . 8.8.8.8:53 { { ` proxy . 8.8.8.8:53 { - except miek.nl example.org + except miek.nl example.org 10.0.0.0/24 }`, false, }, @@ -283,13 +272,18 @@ junky resolve.conf []string{"1.1.1.1:5000", "2.2.2.2:1234"}, }, } - for i, test := range tests { - tempDir, path := writeTmpFile(t, test.filedata) - defer os.RemoveAll(tempDir) - config := strings.Replace(test.inputUpstreams, "FILE", path, -1) + for i, tc := range tests { + + path, rm, err := test.TempFile(".", tc.filedata) + if err != nil { + t.Fatalf("Test %d could not creat temp file %v", i, err) + } + defer rm() + + config := strings.Replace(tc.inputUpstreams, "FILE", path, -1) c := caddy.NewTestController("dns", config) upstreams, err := NewStaticUpstreams(&c.Dispenser) - if (err != nil) != test.shouldErr { + if (err != nil) != tc.shouldErr { t.Errorf("Test %d expected no error, got %v", i+1, err) } var hosts []string @@ -298,18 +292,18 @@ junky resolve.conf hosts = append(hosts, h.Name) } } - if !test.shouldErr { - if len(hosts) != len(test.expected) { - t.Errorf("Test %d expected %d hosts got %d", i+1, len(test.expected), len(upstreams)) + if !tc.shouldErr { + if len(hosts) != len(tc.expected) { + t.Errorf("Test %d expected %d hosts got %d", i+1, len(tc.expected), len(upstreams)) } else { ok := true - for i, v := range test.expected { + for i, v := range tc.expected { if v != hosts[i] { ok = false } } if !ok { - t.Errorf("Test %d expected %v got %v", i+1, test.expected, upstreams) + t.Errorf("Test %d expected %v got %v", i+1, tc.expected, upstreams) } } } |