aboutsummaryrefslogtreecommitdiff
path: root/middleware/file/zone.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/file/zone.go')
-rw-r--r--middleware/file/zone.go27
1 files changed, 13 insertions, 14 deletions
diff --git a/middleware/file/zone.go b/middleware/file/zone.go
index 8c56b6bf9..c3567b45f 100644
--- a/middleware/file/zone.go
+++ b/middleware/file/zone.go
@@ -7,23 +7,22 @@ import (
"github.com/miekg/dns"
)
-type Transfer struct {
- Out bool
- In bool
-}
-
type Zone struct {
SOA *dns.SOA
SIG []dns.RR
name string
*tree.Tree
- Peers []string
- Transfer *Transfer
+
+ TransferTo []string
+ TransferFrom []string
+ Expired *bool
}
// NewZone returns a new zone.
func NewZone(name string) *Zone {
- return &Zone{name: dns.Fqdn(name), Tree: &tree.Tree{}, Transfer: &Transfer{}}
+ z := &Zone{name: dns.Fqdn(name), Tree: &tree.Tree{}, Expired: new(bool)}
+ *z.Expired = false
+ return z
}
// Insert inserts r into z.
@@ -32,12 +31,14 @@ func (z *Zone) Insert(r dns.RR) { z.Tree.Insert(r) }
// Delete deletes r from z.
func (z *Zone) Delete(r dns.RR) { z.Tree.Delete(r) }
-// It the transfer request allowed.
+// TransferAllowed checks if incoming request for transferring the zone is allowed according to the ACLs.
func (z *Zone) TransferAllowed(state middleware.State) bool {
- if z.Transfer == nil {
- return false
+ for _, t := range z.TransferTo {
+ if t == "*" {
+ return true
+ }
}
- return z.Transfer.Out
+ return false
}
// All returns all records from the zone, the first record will be the SOA record,
@@ -54,5 +55,3 @@ func (z *Zone) All() []dns.RR {
}
return append([]dns.RR{z.SOA}, records...)
}
-
-// Apex function?