Pull request: 2875 fix client filtering settings

Merge in DNS/adguard-home from 2875-client-filtering to master

Updates #2875.

Squashed commit of the following:

commit b3b9582b7dde826005ba79d499ed7e82af067e93
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Mon May 24 14:22:29 2021 +0300

    all: use atomic, log changes

commit 9304d8b96d0d064d7741c85165ab885f5547fd4c
Author: Eugene Burkov <e.burkov@adguard.com>
Date:   Mon May 24 13:43:22 2021 +0300

    all: fix client filtering settings
This commit is contained in:
Eugene Burkov
2021-05-24 14:48:42 +03:00
parent 52e6a63d8c
commit 14250821ab
9 changed files with 57 additions and 20 deletions

View File

@@ -134,7 +134,6 @@ func handleStatus(w http.ResponseWriter, _ *http.Request) {
}
var resp statusResponse
func() {
config.RLock()
defer config.RUnlock()

View File

@@ -351,8 +351,14 @@ func (f *Filtering) handleFilteringConfig(w http.ResponseWriter, r *http.Request
return
}
config.DNS.FilteringEnabled = req.Enabled
config.DNS.FiltersUpdateIntervalHours = req.Interval
func() {
config.Lock()
defer config.Unlock()
config.DNS.FilteringEnabled = req.Enabled
config.DNS.FiltersUpdateIntervalHours = req.Interval
}()
onConfigModified()
enableFilters(true)
}
@@ -364,7 +370,6 @@ type checkHostRespRule struct {
type checkHostResp struct {
Reason string `json:"reason"`
// FilterID is the ID of the rule's filter list.
//
// Deprecated: Use Rules[*].FilterListID.

View File

@@ -307,7 +307,6 @@ func applyAdditionalFiltering(clientAddr net.IP, clientID string, setts *filteri
setts.ClientName = c.Name
setts.ClientTags = c.Tags
if !c.UseOwnSettings {
return
}
@@ -319,14 +318,14 @@ func applyAdditionalFiltering(clientAddr net.IP, clientID string, setts *filteri
}
func startDNSServer() error {
config.Lock()
defer config.Unlock()
config.RLock()
defer config.RUnlock()
if isRunning() {
return fmt.Errorf("unable to start forwarding DNS server: Already running")
}
enableFilters(false)
enableFiltersLocked(false)
Context.clients.Start()

View File

@@ -664,6 +664,13 @@ func (filter *filter) Path() string {
}
func enableFilters(async bool) {
config.RLock()
defer config.RUnlock()
enableFiltersLocked(async)
}
func enableFiltersLocked(async bool) {
var whiteFilters []filtering.Filter
filters := []filtering.Filter{{
Data: []byte(strings.Join(config.UserRules, "\n")),
@@ -693,4 +700,6 @@ func enableFilters(async bool) {
if err := Context.dnsFilter.SetFilters(filters, whiteFilters, async); err != nil {
log.Debug("enabling filters: %s", err)
}
Context.dnsFilter.SetEnabled(config.DNS.FilteringEnabled)
}