diff options
Diffstat (limited to 'plugin/root/root.go')
-rw-r--r-- | plugin/root/root.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/plugin/root/root.go b/plugin/root/root.go new file mode 100644 index 000000000..56fd42c01 --- /dev/null +++ b/plugin/root/root.go @@ -0,0 +1,43 @@ +package root + +import ( + "log" + "os" + + "github.com/coredns/coredns/core/dnsserver" + "github.com/coredns/coredns/plugin" + + "github.com/mholt/caddy" +) + +func init() { + caddy.RegisterPlugin("root", caddy.Plugin{ + ServerType: "dns", + Action: setup, + }) +} + +func setup(c *caddy.Controller) error { + config := dnsserver.GetConfig(c) + + for c.Next() { + if !c.NextArg() { + return plugin.Error("root", c.ArgErr()) + } + config.Root = c.Val() + } + + // Check if root path exists + _, err := os.Stat(config.Root) + if err != nil { + if os.IsNotExist(err) { + // Allow this, because the folder might appear later. + // But make sure the user knows! + log.Printf("[WARNING] Root path does not exist: %s", config.Root) + } else { + return plugin.Error("root", c.Errf("unable to access root path '%s': %v", config.Root, err)) + } + } + + return nil +} |