diff options
-rw-r--r-- | plugin.cfg | 2 | ||||
-rw-r--r-- | plugin/etcd/setup.go | 7 | ||||
-rw-r--r-- | plugin/forward/setup.go | 8 | ||||
-rw-r--r-- | plugin/grpc/setup.go | 7 | ||||
-rw-r--r-- | plugin/tls/tls.go | 6 |
5 files changed, 27 insertions, 3 deletions
diff --git a/plugin.cfg b/plugin.cfg index 407a668eb..532c3dda5 100644 --- a/plugin.cfg +++ b/plugin.cfg @@ -19,6 +19,7 @@ # Local plugin example: # log:log +root:root metadata:metadata geoip:geoip cancel:cancel @@ -27,7 +28,6 @@ timeouts:timeouts reload:reload nsid:nsid bufsize:bufsize -root:root bind:bind debug:debug trace:trace diff --git a/plugin/etcd/setup.go b/plugin/etcd/setup.go index bd81af513..5953465a5 100644 --- a/plugin/etcd/setup.go +++ b/plugin/etcd/setup.go @@ -2,6 +2,7 @@ package etcd import ( "crypto/tls" + "path/filepath" "github.com/coredns/caddy" "github.com/coredns/coredns/core/dnsserver" @@ -29,6 +30,7 @@ func setup(c *caddy.Controller) error { } func etcdParse(c *caddy.Controller) (*Etcd, error) { + config := dnsserver.GetConfig(c) etc := Etcd{PathPrefix: "skydns"} var ( tlsConfig *tls.Config @@ -66,6 +68,11 @@ func etcdParse(c *caddy.Controller) (*Etcd, error) { c.RemainingArgs() case "tls": // cert key cacertfile args := c.RemainingArgs() + for i := range args { + if !filepath.IsAbs(args[i]) && config.Root != "" { + args[i] = filepath.Join(config.Root, args[i]) + } + } tlsConfig, err = mwtls.NewTLSConfigFromArgs(args...) if err != nil { return &Etcd{}, err diff --git a/plugin/forward/setup.go b/plugin/forward/setup.go index 6de0c870f..2d2ff1914 100644 --- a/plugin/forward/setup.go +++ b/plugin/forward/setup.go @@ -4,6 +4,7 @@ import ( "crypto/tls" "errors" "fmt" + "path/filepath" "strconv" "time" @@ -165,6 +166,7 @@ func parseStanza(c *caddy.Controller) (*Forward, error) { } func parseBlock(c *caddy.Controller, f *Forward) error { + config := dnsserver.GetConfig(c) switch c.Val() { case "except": ignore := c.RemainingArgs() @@ -230,7 +232,11 @@ func parseBlock(c *caddy.Controller, f *Forward) error { if len(args) > 3 { return c.ArgErr() } - + for i := range args { + if !filepath.IsAbs(args[i]) && config.Root != "" { + args[i] = filepath.Join(config.Root, args[i]) + } + } tlsConfig, err := pkgtls.NewTLSConfigFromArgs(args...) if err != nil { return err diff --git a/plugin/grpc/setup.go b/plugin/grpc/setup.go index 48a3d2c31..eead54f58 100644 --- a/plugin/grpc/setup.go +++ b/plugin/grpc/setup.go @@ -3,6 +3,7 @@ package grpc import ( "crypto/tls" "fmt" + "path/filepath" "github.com/coredns/caddy" "github.com/coredns/coredns/core/dnsserver" @@ -110,7 +111,11 @@ func parseBlock(c *caddy.Controller, g *GRPC) error { if len(args) > 3 { return c.ArgErr() } - + for i := range args { + if !filepath.IsAbs(args[i]) && dnsserver.GetConfig(c).Root != "" { + args[i] = filepath.Join(dnsserver.GetConfig(c).Root, args[i]) + } + } tlsConfig, err := pkgtls.NewTLSConfigFromArgs(args...) if err != nil { return err diff --git a/plugin/tls/tls.go b/plugin/tls/tls.go index 2658159a9..ff60b678c 100644 --- a/plugin/tls/tls.go +++ b/plugin/tls/tls.go @@ -2,6 +2,7 @@ package tls import ( ctls "crypto/tls" + "path/filepath" "github.com/coredns/caddy" "github.com/coredns/coredns/core/dnsserver" @@ -57,6 +58,11 @@ func parseTLS(c *caddy.Controller) error { return c.Errf("unknown option '%s'", c.Val()) } } + for i := range args { + if !filepath.IsAbs(args[i]) && config.Root != "" { + args[i] = filepath.Join(config.Root, args[i]) + } + } tls, err := tls.NewTLSConfigFromArgs(args...) if err != nil { return err |