aboutsummaryrefslogtreecommitdiff
path: root/middleware/auto/walk.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/auto/walk.go')
-rw-r--r--middleware/auto/walk.go109
1 files changed, 0 insertions, 109 deletions
diff --git a/middleware/auto/walk.go b/middleware/auto/walk.go
deleted file mode 100644
index 1bb351691..000000000
--- a/middleware/auto/walk.go
+++ /dev/null
@@ -1,109 +0,0 @@
-package auto
-
-import (
- "log"
- "os"
- "path"
- "path/filepath"
- "regexp"
-
- "github.com/coredns/coredns/middleware/file"
-
- "github.com/miekg/dns"
-)
-
-// Walk will recursively walk of the file under l.directory and adds the one that match l.re.
-func (a Auto) Walk() error {
-
- // TODO(miek): should add something so that we don't stomp on each other.
-
- toDelete := make(map[string]bool)
- for _, n := range a.Zones.Names() {
- toDelete[n] = true
- }
-
- filepath.Walk(a.loader.directory, func(path string, info os.FileInfo, err error) error {
- if info == nil || info.IsDir() {
- return nil
- }
-
- match, origin := matches(a.loader.re, info.Name(), a.loader.template)
- if !match {
- return nil
- }
-
- if _, ok := a.Zones.Z[origin]; ok {
- // we already have this zone
- toDelete[origin] = false
- return nil
- }
-
- reader, err := os.Open(path)
- if err != nil {
- log.Printf("[WARNING] Opening %s failed: %s", path, err)
- return nil
- }
- defer reader.Close()
-
- // Serial for loading a zone is 0, because it is a new zone.
- zo, err := file.Parse(reader, origin, path, 0)
- if err != nil {
- log.Printf("[WARNING] Parse zone `%s': %v", origin, err)
- return nil
- }
-
- zo.NoReload = a.loader.noReload
- zo.Proxy = a.loader.proxy
- zo.TransferTo = a.loader.transferTo
-
- a.Zones.Add(zo, origin)
-
- if a.metrics != nil {
- a.metrics.AddZone(origin)
- }
-
- zo.Notify()
-
- log.Printf("[INFO] Inserting zone `%s' from: %s", origin, path)
-
- toDelete[origin] = false
-
- return nil
- })
-
- for origin, ok := range toDelete {
- if !ok {
- continue
- }
-
- if a.metrics != nil {
- a.metrics.RemoveZone(origin)
- }
-
- a.Zones.Remove(origin)
-
- log.Printf("[INFO] Deleting zone `%s'", origin)
- }
-
- return nil
-}
-
-// matches matches re to filename, if is is a match, the subexpression will be used to expand
-// template to an origin. When match is true that origin is returned. Origin is fully qualified.
-func matches(re *regexp.Regexp, filename, template string) (match bool, origin string) {
- base := path.Base(filename)
-
- matches := re.FindStringSubmatchIndex(base)
- if matches == nil {
- return false, ""
- }
-
- by := re.ExpandString(nil, template, base, matches)
- if by == nil {
- return false, ""
- }
-
- origin = dns.Fqdn(string(by))
-
- return true, origin
-}