middleware/root: add it (#330)

This PR adds the *root* middleware that specifies a path where
all zone file (the *file* middleware is the only consumer now) can
be found. It works the same as in Caddy.

Documentation can be found in the README.md of the middleware.

Fixes #307
This commit is contained in:
Miek Gieben
2016-10-11 20:42:28 +01:00
committed by GitHub
parent baea5eef2f
commit 710c9b111f
10 changed files with 184 additions and 3 deletions

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"net"
"os"
"path"
"github.com/miekg/coredns/core/dnsserver"
"github.com/miekg/coredns/middleware"
@@ -49,6 +50,8 @@ func fileParse(c *caddy.Controller) (Zones, error) {
names := []string{}
origins := []string{}
config := dnsserver.GetConfig(c)
for c.Next() {
if c.Val() == "file" {
// file db.file [zones...]
@@ -64,6 +67,10 @@ func fileParse(c *caddy.Controller) (Zones, error) {
origins = args
}
if !path.IsAbs(fileName) && config.Root != "" {
fileName = path.Join(config.Root, fileName)
}
reader, err := os.Open(fileName)
if err != nil {
// bail out