Blocking with conditional upstream (#174)

* blocking with conditional upstream

* cache conditional upstream results
This commit is contained in:
moyo 2021-04-11 03:47:08 +08:00 committed by GitHub
parent 7af0c57d04
commit a31fc8d818
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 2 deletions

View File

@ -144,9 +144,9 @@ func createQueryResolver(cfg *config.Config) resolver.Resolver {
resolver.NewStatsResolver(),
resolver.NewMetricsResolver(cfg.Prometheus),
resolver.NewCustomDNSResolver(cfg.CustomDNS),
resolver.NewConditionalUpstreamResolver(cfg.Conditional),
resolver.NewBlockingResolver(cfg.Blocking),
resolver.NewCachingResolver(cfg.Caching),
resolver.NewConditionalUpstreamResolver(cfg.Conditional),
resolver.NewParallelBestResolver(cfg.Upstream.ExternalResolvers),
)
}

View File

@ -68,6 +68,7 @@ var _ = Describe("Running DNS server", func() {
Conditional: config.ConditionalUpstreamConfig{
Mapping: config.ConditionalUpstreamMapping{
Upstreams: map[string][]config.Upstream{
"net.cn": {upstreamClient},
"fritz.box": {upstreamFritzbox},
},
},
@ -169,6 +170,13 @@ var _ = Describe("Running DNS server", func() {
Expect(resp.Answer).Should(BeDNSRecord("host.fritz.box.", dns.TypeA, 3600, "192.168.178.2"))
})
})
Context("Conditional upstream blocking", func() {
It("Query should be blocked, domain is in default group", func() {
resp = requestServer(util.NewMsgWithQuestion("doubleclick.net.cn.", dns.TypeA))
Expect(resp.Answer).Should(BeDNSRecord("doubleclick.net.cn.", dns.TypeA, 21600, "0.0.0.0"))
})
})
Context("Blocking default group", func() {
It("Query should be blocked, domain is in default group", func() {
resp = requestServer(util.NewMsgWithQuestion("doubleclick.net.", dns.TypeA))

View File

@ -1 +1,2 @@
doubleclick.net
doubleclick.net
doubleclick.net.cn