From 3f89335ed2f820db627b09a5c32fdc96d79ccdad Mon Sep 17 00:00:00 2001 From: Simon Zolin Date: Fri, 26 Apr 2019 16:07:12 +0300 Subject: [PATCH] + dns: use per-client filtering settings --- dns.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/dns.go b/dns.go index 001876d0..e637fa4a 100644 --- a/dns.go +++ b/dns.go @@ -70,9 +70,32 @@ func generateServerConfig() dnsforward.ServerConfig { newconfig.Upstreams = upstreamConfig.Upstreams newconfig.DomainsReservedUpstreams = upstreamConfig.DomainReservedUpstreams newconfig.AllServers = config.DNS.AllServers + newconfig.FilterHandler = applyClientSettings return newconfig } +// If a client has his own settings, apply them +func applyClientSettings(clientAddr string, setts *dnsfilter.RequestFilteringSettings) { + c, ok := clientFind(clientAddr) + if !ok || !c.UseOwnSettings { + return + } + + log.Debug("Using settings for client with IP %s", clientAddr) + if !c.FilteringEnabled { + setts.FilteringEnabled = false + } + if !c.SafeSearchEnabled { + setts.SafeSearchEnabled = false + } + if !c.SafeBrowsingEnabled { + setts.SafeBrowsingEnabled = false + } + if !c.ParentalEnabled { + setts.ParentalEnabled = false + } +} + func startDNSServer() error { if isRunning() { return fmt.Errorf("unable to start forwarding DNS server: Already running")