diff --git a/clients.go b/clients.go index 88143737..3974cbe7 100644 --- a/clients.go +++ b/clients.go @@ -89,13 +89,13 @@ func clientExists(ip string) bool { } // Search for a client by IP -func clientFind(ip string) (Client, bool) { +func clientFind(ip string) (*Client, bool) { clients.lock.Lock() defer clients.lock.Unlock() c, ok := clients.ipIndex[ip] if ok { - return *c, true + return c, true } for _, c = range clients.list { @@ -109,12 +109,12 @@ func clientFind(ip string) (Client, bool) { continue } if ip == ipAddr.String() { - return *c, true + return c, true } } } - return Client{}, false + return nil, false } // Check if Client object's fields are correct diff --git a/dns.go b/dns.go index f41a5e7c..cc3840fc 100644 --- a/dns.go +++ b/dns.go @@ -216,7 +216,7 @@ func generateServerConfig() dnsforward.ServerConfig { // If a client has his own settings, apply them func applyClientSettings(clientAddr string, setts *dnsfilter.RequestFilteringSettings) { c, ok := clientFind(clientAddr) - if !ok || !c.UseOwnSettings { + if !ok || c == nil || !c.UseOwnSettings { return } @@ -224,7 +224,7 @@ func applyClientSettings(clientAddr string, setts *dnsfilter.RequestFilteringSet setts.FilteringEnabled = c.FilteringEnabled setts.SafeSearchEnabled = c.SafeSearchEnabled setts.SafeBrowsingEnabled = c.SafeBrowsingEnabled - setts.ParentalEnabled = c.UseOwnSettings + setts.ParentalEnabled = c.ParentalEnabled } func startDNSServer() error { diff --git a/dnsfilter/dnsfilter.go b/dnsfilter/dnsfilter.go index 415070ab..f18bd8c7 100644 --- a/dnsfilter/dnsfilter.go +++ b/dnsfilter/dnsfilter.go @@ -33,7 +33,8 @@ const defaultSafebrowsingServer = "sb.adtidy.org" const defaultSafebrowsingURL = "%s://%s/safebrowsing-lookup-hash.html?prefixes=%s" const defaultParentalServer = "pctrl.adguard.com" const defaultParentalURL = "%s://%s/check-parental-control-hash?prefixes=%s&sensitivity=%d" -const maxDialCacheSize = 2 // the number of host names for safebrowsing and parental control +const defaultParentalSensitivity = 13 // use "TEEN" by default +const maxDialCacheSize = 2 // the number of host names for safebrowsing and parental control // Custom filtering settings type RequestFilteringSettings struct { @@ -410,7 +411,11 @@ func (d *Dnsfilter) checkParental(host string) (Result, error) { if d.UsePlainHTTP { schema = "http" } - url := fmt.Sprintf(defaultParentalURL, schema, d.parentalServer, hashparam, d.ParentalSensitivity) + sensitivity := d.ParentalSensitivity + if sensitivity == 0 { + sensitivity = defaultParentalSensitivity + } + url := fmt.Sprintf(defaultParentalURL, schema, d.parentalServer, hashparam, sensitivity) return url } handleBody := func(body []byte, hashes map[string]bool) (Result, error) { diff --git a/dnsforward/querylog.go b/dnsforward/querylog.go index 5dcdb5aa..aac4b25a 100644 --- a/dnsforward/querylog.go +++ b/dnsforward/querylog.go @@ -123,7 +123,7 @@ func (l *queryLog) logRequest(question *dns.Msg, answer *dns.Msg, result *dnsfil if needFlush { // write to file // do it in separate goroutine -- we are stalling DNS response this whole time - go l.flushLogBuffer(false) + go l.flushLogBuffer(false) // nolint } return &entry