Merge in DNS/adguard-home from 1163-safesearch-1-3 to master Squashed commit of the following: commit f26c5fb4f7a27dc61b10c28d6672d5307796784c Merge: e7a1b885143616caAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 23 18:45:25 2023 +0700 Merge remote-tracking branch 'origin/master' into 1163-safesearch-1-3 # Conflicts: # CHANGELOG.md commit e7a1b885d67628c187ce08327338cf3138012f03 Merge: 01b73d76 eb5d8a49 Author: Vladislav Abdulmyanov <v.abdulmyanov@adguard.com> Date: Wed Mar 22 13:55:23 2023 +0200 Merge branch '1163-safesearch-1-3' of ssh://bit.adguard.com:7999/dns/adguard-home into 1163-safesearch-1-3 commit 01b73d763c6ee76de995093cc7107f113c7785ce Author: Vladislav Abdulmyanov <v.abdulmyanov@adguard.com> Date: Wed Mar 22 13:52:02 2023 +0200 client: add safe search extended settings to clients commit eb5d8a499ac1036e5077d2b4aa84479381577e10 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Wed Mar 22 18:50:23 2023 +0700 all: docs commit 2043a8fba7f664ef365ccc5abac14a85035eb4b7 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Wed Mar 22 09:42:50 2023 +0700 all: docs commit bb1d2f6c0252891ccac3d3727eb23288a24d4bda Merge: 95f9fd3dc3edab43Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Wed Mar 22 09:42:00 2023 +0700 Merge remote-tracking branch 'origin/master' into 1163-safesearch-1-3 commit 95f9fd3dd1e8abcdf1a156e81aff8e52f320f4c3 Author: Vladislav Abdulmyanov <v.abdulmyanov@adguard.com> Date: Tue Mar 21 15:25:39 2023 +0200 client: move to new safe search api commit ac823a911f0d6ab6f1813d11a0ca082d54cc9131 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 22:40:29 2023 +0700 all: docs commit aaa287b125c7c7a775b821e0dd272199229a7538 Merge: 16fa703148431f8bAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 22:39:14 2023 +0700 Merge remote-tracking branch 'origin/master' into 1163-safesearch-1-3 commit 16fa7031ab2aec31139ace54ffa0155cde8e9135 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 22:39:03 2023 +0700 all: docs commit 498f7d3cbb842eda218b0fd06fc3bb3601b81f80 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 18:59:47 2023 +0700 filtering: imp code commit aab7b70e2355ba86577e5156c1d5569b21b4b358 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Mar 20 18:40:18 2023 +0700 filtering: imp code commit d2870a18ffdb1d293993487073912168d6b75a38 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Mar 17 21:57:58 2023 +0700 filtering: imp code commit 868f5d1ed29c3af702114079e7ffe46e136eb901 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Mar 17 19:06:36 2023 +0700 all: imp docs commit f6d70b06ed873684501ce17f647ccf07a85dd50b Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Mar 17 19:05:40 2023 +0700 filtering: imp code commit 7cd9a37dde6262a8cf4f0f13f9946e011cc0e2cf Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 16 14:56:51 2023 +0700 home: imp code commit 84d8817512e47a517ed2880ffa9dde5ffda1d288 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Mar 16 09:39:41 2023 +0700 all: safesearch http api
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package filtering
|
|
|
|
import (
|
|
"github.com/AdguardTeam/urlfilter/rules"
|
|
"github.com/miekg/dns"
|
|
)
|
|
|
|
// SafeSearch interface describes a service for search engines hosts rewrites.
|
|
type SafeSearch interface {
|
|
// SearchHost returns a replacement address for the search engine host.
|
|
SearchHost(host string, qtype uint16) (res *rules.DNSRewrite)
|
|
|
|
// CheckHost checks host with safe search engine.
|
|
CheckHost(host string, qtype uint16) (res Result, err error)
|
|
}
|
|
|
|
// SafeSearchConfig is a struct with safe search related settings.
|
|
type SafeSearchConfig struct {
|
|
// CustomResolver is the resolver used by safe search.
|
|
CustomResolver Resolver `yaml:"-" json:"-"`
|
|
|
|
// Enabled indicates if safe search is enabled entirely.
|
|
Enabled bool `yaml:"enabled" json:"enabled"`
|
|
|
|
// Services flags. Each flag indicates if the corresponding service is
|
|
// enabled or disabled.
|
|
|
|
Bing bool `yaml:"bing" json:"bing"`
|
|
DuckDuckGo bool `yaml:"duckduckgo" json:"duckduckgo"`
|
|
Google bool `yaml:"google" json:"google"`
|
|
Pixabay bool `yaml:"pixabay" json:"pixabay"`
|
|
Yandex bool `yaml:"yandex" json:"yandex"`
|
|
YouTube bool `yaml:"youtube" json:"youtube"`
|
|
}
|
|
|
|
// checkSafeSearch checks host with safe search engine. Matches
|
|
// [hostChecker.check].
|
|
func (d *DNSFilter) checkSafeSearch(
|
|
host string,
|
|
_ uint16,
|
|
setts *Settings,
|
|
) (res Result, err error) {
|
|
if !setts.ProtectionEnabled || !setts.SafeSearchEnabled {
|
|
return Result{}, nil
|
|
}
|
|
|
|
if d.safeSearch == nil {
|
|
return Result{}, nil
|
|
}
|
|
|
|
clientSafeSearch := setts.ClientSafeSearch
|
|
if clientSafeSearch != nil {
|
|
return clientSafeSearch.CheckHost(host, dns.TypeA)
|
|
}
|
|
|
|
return d.safeSearch.CheckHost(host, dns.TypeA)
|
|
}
|