Updates #6352. Squashed commit of the following: commit 79d24e0e44a19d05750101e2baa4129c9b62e7ac Merge: 04c2759bfc908eec5dAuthor: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Dec 12 12:26:57 2023 +0200 Merge remote-tracking branch 'origin/master' into 6352-safesearch-cname # Conflicts: # CHANGELOG.md commit 04c2759bf779d124673c9b3d5c6d95a1dc11a7d0 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Dec 12 11:14:13 2023 +0200 all: fix changelog commit 78d726e912d2066e8137f10e4057fd9179227884 Merge: 2d2c1743679d7a1ef4Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Tue Dec 12 11:12:58 2023 +0200 Merge remote-tracking branch 'origin/master' into 6352-safesearch-cname commit 2d2c17436266a82b6fadd436df33ffc0bf55e26f Merge: 2b1c1eabb7b5cce517Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Mon Dec 11 11:08:08 2023 +0200 Merge remote-tracking branch 'origin/master' into 6352-safesearch-cname # Conflicts: # CHANGELOG.md commit 2b1c1eabb274351cbaffaeb1c92eb62aeccb384e Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 15:24:02 2023 +0200 all: changelog commit 38afdbab686d2ec3c322c34ede032f313ba85ddc Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 15:21:23 2023 +0200 safesearch: imp docs commit e941f5e76efcf1872f7e24bb2378f33e56f06db9 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 14:43:39 2023 +0200 dnsforward: imp code commit 8dedb4a01db8d3f9005c602bd4c6e54637667101 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 14:26:51 2023 +0200 dnsforward: imp tests commit 8f23adeae9d10d7b2ffc30dd76d3e18192cc774e Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 13:33:50 2023 +0200 all: safesearch cnames commit 061a6deeacf801a71d1a027355d67f3fc6455eac Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 13:09:32 2023 +0200 all: changelog commit 6f7ff7f9e61f492c7ded9c79fb2499cfeeaa5883 Author: Dimitry Kolyshev <dkolyshev@adguard.com> Date: Fri Dec 8 13:07:36 2023 +0200 all: safesearch cnames
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)
}
}