Allow cidr based reverse zone config (#500)

* add cidrs opt

* remove state data from middleware object
This commit is contained in:
Chris O'Haver 2017-02-01 12:56:10 -05:00 committed by John Belamaric
parent 3a04d2a306
commit 8beb1b2166
3 changed files with 33 additions and 1 deletions

View file

@ -5,6 +5,7 @@ import (
"errors"
"fmt"
"log"
"net"
"strings"
"time"
@ -41,6 +42,7 @@ type Kubernetes struct {
LabelSelector *unversionedapi.LabelSelector
Selector *labels.Selector
PodMode string
ReverseCidrs []net.IPNet
}
const (
@ -128,6 +130,16 @@ func (k *Kubernetes) Reverse(state request.Request, exact bool, opt middleware.O
return records, nil, nil
}
func (k *Kubernetes) IsRequestInReverseRange(state request.Request) bool {
ip := dnsutil.ExtractAddressFromReverse(state.Name())
for _, c := range k.ReverseCidrs {
if c.Contains(net.ParseIP(ip)) {
return true
}
}
return false
}
// Lookup implements the ServiceBackend interface.
func (k *Kubernetes) Lookup(state request.Request, name string, typ uint16) (*dns.Msg, error) {
return k.Proxy.Lookup(state, name, typ)