Updates #6020. Squashed commit of the following: commit fedb9415fb40d103261ca9b966c3d634692f899d Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Aug 11 12:45:06 2023 +0300 filtering: imp tests commit d85d193ca7808e9089fa8ac3b26652f9c88c44ad Merge: f1c1eddc194cf50a53Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Aug 11 11:07:39 2023 +0300 Merge remote-tracking branch 'origin/master' into 6020-rulelist-name commit f1c1eddc113d2659adb666d7849ce0830eaf71f0 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Aug 11 10:59:07 2023 +0300 filtering: imp tests commit 39e9d546dc2438409607ffebe414e9d656275504 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Aug 11 10:02:48 2023 +0300 filtering: imp code commit 230f15ddad95c670e93c58db6d9928c3d0e0b79b Merge: 1940fb397111005b8dAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Aug 10 15:03:08 2023 +0300 Merge remote-tracking branch 'origin/master' into 6020-rulelist-name commit 1940fb3973344a7d1ab8acfdc9401ed41fe0e666 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Aug 10 15:01:57 2023 +0300 all: docs commit 810f6d17968873ce489b2e24f496d31179675e37 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Aug 10 15:00:59 2023 +0300 filtering: imp code commit f310dd2281dc81cd816701696cf1bb289b4fb708 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Aug 10 12:19:55 2023 +0300 client: flt name commit 9494771c57c464dbe5117315efdb3104b977bac4 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Thu Aug 10 12:18:57 2023 +0300 filtering: flt name
AdGuard Home's DNS filtering go library
Example use:
[ -z "$GOPATH" ] && export GOPATH=$HOME/go
go get -d github.com/AdguardTeam/AdGuardHome/filtering
Create file filter.go
package main
import (
"github.com/AdguardTeam/AdGuardHome/filtering"
"log"
)
func main() {
filter := filtering.New()
filter.AddRule("||dou*ck.net^")
host := "www.doubleclick.net"
res, err := filter.CheckHost(host)
if err != nil {
// temporary failure
log.Fatalf("Failed to check host %q: %s", host, err)
}
if res.IsFiltered {
log.Printf("Host %s is filtered, reason - %q, matched rule: %q", host, res.Reason, res.Rule)
} else {
log.Printf("Host %s is not filtered, reason - %q", host, res.Reason)
}
}
And then run it:
go run filter.go
You will get:
2000/01/01 00:00:00 Host www.doubleclick.net is filtered, reason - 'FilteredBlackList', matched rule: '||dou*ck.net^'
You can also enable checking against AdGuard's SafeBrowsing:
package main
import (
"github.com/AdguardTeam/AdGuardHome/filtering"
"log"
)
func main() {
filter := filtering.New()
filter.EnableSafeBrowsing()
host := "wmconvirus.narod.ru" // hostname for testing safebrowsing
res, err := filter.CheckHost(host)
if err != nil {
// temporary failure
log.Fatalf("Failed to check host %q: %s", host, err)
}
if res.IsFiltered {
log.Printf("Host %s is filtered, reason - %q, matched rule: %q", host, res.Reason, res.Rule)
} else {
log.Printf("Host %s is not filtered, reason - %q", host, res.Reason)
}
}