diff options
author | 2016-03-28 18:26:14 +0100 | |
---|---|---|
committer | 2016-03-28 18:26:14 +0100 | |
commit | 1a455f7bc4c24f472e6fd441b2b145047d1325b2 (patch) | |
tree | 77a644f6fe28f3de8eaf6f7c766cea73b438b487 /middleware/file/zone.go | |
parent | 6324bb1fa7c0516ef3bebfb822a0cdc767764ad2 (diff) | |
parent | e56d206542c901a48b28c4501fe5805e9e9e1a10 (diff) | |
download | coredns-1a455f7bc4c24f472e6fd441b2b145047d1325b2.tar.gz coredns-1a455f7bc4c24f472e6fd441b2b145047d1325b2.tar.zst coredns-1a455f7bc4c24f472e6fd441b2b145047d1325b2.zip |
Merge pull request #55 from miekg/transfer-out
Transfer out
Diffstat (limited to 'middleware/file/zone.go')
-rw-r--r-- | middleware/file/zone.go | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/middleware/file/zone.go b/middleware/file/zone.go index 57eb8d997..bac420669 100644 --- a/middleware/file/zone.go +++ b/middleware/file/zone.go @@ -1,20 +1,29 @@ package file import ( + "github.com/miekg/coredns/middleware" "github.com/miekg/coredns/middleware/file/tree" "github.com/miekg/dns" ) +type Transfer struct { + Out bool + In bool + // more later +} + type Zone struct { SOA *dns.SOA - SIG []*dns.RRSIG + SIG []dns.RR name string *tree.Tree + Masters []string + Transfer *Transfer } func NewZone(name string) *Zone { - return &Zone{name: dns.Fqdn(name), Tree: &tree.Tree{}} + return &Zone{name: dns.Fqdn(name), Tree: &tree.Tree{}, Transfer: &Transfer{}} } func (z *Zone) Insert(r dns.RR) { @@ -24,3 +33,28 @@ func (z *Zone) Insert(r dns.RR) { func (z *Zone) Delete(r dns.RR) { z.Tree.Delete(r) } + +// It the transfer request allowed. +func (z *Zone) TransferAllowed(state middleware.State) bool { + if z.Transfer == nil { + return false + } + return z.Transfer.Out +} + +// All returns all records from the zone, the first record will be the SOA record, +// otionally followed by all RRSIG(SOA)s. +func (z *Zone) All() []dns.RR { + records := []dns.RR{} + allNodes := z.Tree.All() + for _, a := range allNodes { + records = append(records, a.All()...) + } + + if len(z.SIG) > 0 { + records = append(z.SIG, records...) + } + return append([]dns.RR{z.SOA}, records...) +} + +// Apex function? |