plugin/tls: respect the path specified by root plugin (#5944)

Signed-off-by: Marius Kimmina <mar.kimmina@gmail.com>
This commit is contained in:
Marius Kimmina
2023-06-01 14:56:57 +02:00
committed by GitHub
parent cf87aa92bd
commit d0375bc026
5 changed files with 27 additions and 3 deletions

View File

@@ -19,6 +19,7 @@
# Local plugin example: # Local plugin example:
# log:log # log:log
root:root
metadata:metadata metadata:metadata
geoip:geoip geoip:geoip
cancel:cancel cancel:cancel
@@ -27,7 +28,6 @@ timeouts:timeouts
reload:reload reload:reload
nsid:nsid nsid:nsid
bufsize:bufsize bufsize:bufsize
root:root
bind:bind bind:bind
debug:debug debug:debug
trace:trace trace:trace

View File

@@ -2,6 +2,7 @@ package etcd
import ( import (
"crypto/tls" "crypto/tls"
"path/filepath"
"github.com/coredns/caddy" "github.com/coredns/caddy"
"github.com/coredns/coredns/core/dnsserver" "github.com/coredns/coredns/core/dnsserver"
@@ -29,6 +30,7 @@ func setup(c *caddy.Controller) error {
} }
func etcdParse(c *caddy.Controller) (*Etcd, error) { func etcdParse(c *caddy.Controller) (*Etcd, error) {
config := dnsserver.GetConfig(c)
etc := Etcd{PathPrefix: "skydns"} etc := Etcd{PathPrefix: "skydns"}
var ( var (
tlsConfig *tls.Config tlsConfig *tls.Config
@@ -66,6 +68,11 @@ func etcdParse(c *caddy.Controller) (*Etcd, error) {
c.RemainingArgs() c.RemainingArgs()
case "tls": // cert key cacertfile case "tls": // cert key cacertfile
args := c.RemainingArgs() 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...) tlsConfig, err = mwtls.NewTLSConfigFromArgs(args...)
if err != nil { if err != nil {
return &Etcd{}, err return &Etcd{}, err

View File

@@ -4,6 +4,7 @@ import (
"crypto/tls" "crypto/tls"
"errors" "errors"
"fmt" "fmt"
"path/filepath"
"strconv" "strconv"
"time" "time"
@@ -165,6 +166,7 @@ func parseStanza(c *caddy.Controller) (*Forward, error) {
} }
func parseBlock(c *caddy.Controller, f *Forward) error { func parseBlock(c *caddy.Controller, f *Forward) error {
config := dnsserver.GetConfig(c)
switch c.Val() { switch c.Val() {
case "except": case "except":
ignore := c.RemainingArgs() ignore := c.RemainingArgs()
@@ -230,7 +232,11 @@ func parseBlock(c *caddy.Controller, f *Forward) error {
if len(args) > 3 { if len(args) > 3 {
return c.ArgErr() 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...) tlsConfig, err := pkgtls.NewTLSConfigFromArgs(args...)
if err != nil { if err != nil {
return err return err

View File

@@ -3,6 +3,7 @@ package grpc
import ( import (
"crypto/tls" "crypto/tls"
"fmt" "fmt"
"path/filepath"
"github.com/coredns/caddy" "github.com/coredns/caddy"
"github.com/coredns/coredns/core/dnsserver" "github.com/coredns/coredns/core/dnsserver"
@@ -110,7 +111,11 @@ func parseBlock(c *caddy.Controller, g *GRPC) error {
if len(args) > 3 { if len(args) > 3 {
return c.ArgErr() 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...) tlsConfig, err := pkgtls.NewTLSConfigFromArgs(args...)
if err != nil { if err != nil {
return err return err

View File

@@ -2,6 +2,7 @@ package tls
import ( import (
ctls "crypto/tls" ctls "crypto/tls"
"path/filepath"
"github.com/coredns/caddy" "github.com/coredns/caddy"
"github.com/coredns/coredns/core/dnsserver" "github.com/coredns/coredns/core/dnsserver"
@@ -57,6 +58,11 @@ func parseTLS(c *caddy.Controller) error {
return c.Errf("unknown option '%s'", c.Val()) 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...) tls, err := tls.NewTLSConfigFromArgs(args...)
if err != nil { if err != nil {
return err return err