Merge pull request #14 in DNS/adguard-dns from dnsfilter_recursion to master
* commit 'd49e3769a105f4dee639b9dec1112b123b7a23aa': dnsfilter -- do not check lookup hosts against themselves to avoid recursion Add support for serving /etc/hosts Makefile -- Fix cross-compilation
This commit is contained in:
commit
3901dda39c
4
Makefile
4
Makefile
@ -24,13 +24,13 @@ AdguardDNS: $(STATIC) *.go
|
|||||||
coredns: coredns_plugin/*.go dnsfilter/*.go
|
coredns: coredns_plugin/*.go dnsfilter/*.go
|
||||||
echo mkfile_dir = $(mkfile_dir)
|
echo mkfile_dir = $(mkfile_dir)
|
||||||
go get -v -d github.com/coredns/coredns
|
go get -v -d github.com/coredns/coredns
|
||||||
|
cd $(GOPATH)/src/github.com/prometheus/client_golang && git checkout -q v0.8.0
|
||||||
cd $(GOPATH)/src/github.com/coredns/coredns && perl -p -i.bak -e 's/^(trace|route53|federation|kubernetes|etcd):.*//' plugin.cfg
|
cd $(GOPATH)/src/github.com/coredns/coredns && perl -p -i.bak -e 's/^(trace|route53|federation|kubernetes|etcd):.*//' plugin.cfg
|
||||||
cd $(GOPATH)/src/github.com/coredns/coredns && grep -q '^dnsfilter:' plugin.cfg || perl -p -i.bak -e 's|^log:log|log:log\ndnsfilter:github.com/AdguardTeam/AdguardDNS/coredns_plugin|' plugin.cfg
|
cd $(GOPATH)/src/github.com/coredns/coredns && grep -q '^dnsfilter:' plugin.cfg || perl -p -i.bak -e 's|^log:log|log:log\ndnsfilter:github.com/AdguardTeam/AdguardDNS/coredns_plugin|' plugin.cfg
|
||||||
grep '^dnsfilter:' $(GOPATH)/src/github.com/coredns/coredns/plugin.cfg ## used to check that plugin.cfg was successfully edited by sed
|
grep '^dnsfilter:' $(GOPATH)/src/github.com/coredns/coredns/plugin.cfg ## used to check that plugin.cfg was successfully edited by sed
|
||||||
cd $(GOPATH)/src/github.com/coredns/coredns && GOOS=$(NATIVE_GOOS) GOARCH=$(NATIVE_GOARCH) go generate
|
cd $(GOPATH)/src/github.com/coredns/coredns && GOOS=$(NATIVE_GOOS) GOARCH=$(NATIVE_GOARCH) go generate
|
||||||
cd $(GOPATH)/src/github.com/coredns/coredns && go get -v -d .
|
cd $(GOPATH)/src/github.com/coredns/coredns && go get -v -d .
|
||||||
cd $(GOPATH)/src/github.com/coredns/coredns && make
|
cd $(GOPATH)/src/github.com/coredns/coredns && go build -o $(mkfile_dir)/coredns
|
||||||
cd $(GOPATH)/src/github.com/coredns/coredns && mv coredns $(mkfile_dir)/coredns
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -vf coredns AdguardDNS
|
rm -vf coredns AdguardDNS
|
||||||
|
@ -165,6 +165,9 @@ const coreDNSConfigTemplate = `. {
|
|||||||
{{if .QueryLogEnabled}}querylog{{end}}
|
{{if .QueryLogEnabled}}querylog{{end}}
|
||||||
}{{end}}
|
}{{end}}
|
||||||
{{.Pprof}}
|
{{.Pprof}}
|
||||||
|
hosts {
|
||||||
|
fallthrough
|
||||||
|
}
|
||||||
{{if .UpstreamDNS}}forward . {{range .UpstreamDNS}}{{.}} {{end}}{{end}}
|
{{if .UpstreamDNS}}forward . {{range .UpstreamDNS}}{{.}} {{end}}{{end}}
|
||||||
{{.Cache}}
|
{{.Cache}}
|
||||||
{{.Prometheus}}
|
{{.Prometheus}}
|
||||||
|
@ -28,7 +28,8 @@ const defaultHTTPMaxIdleConnections = 100
|
|||||||
|
|
||||||
const defaultSafebrowsingServer = "sb.adtidy.org"
|
const defaultSafebrowsingServer = "sb.adtidy.org"
|
||||||
const defaultSafebrowsingURL = "http://%s/safebrowsing-lookup-hash.html?prefixes=%s"
|
const defaultSafebrowsingURL = "http://%s/safebrowsing-lookup-hash.html?prefixes=%s"
|
||||||
const defaultParentalURL = "http://pctrl.adguard.com/check-parental-control-hash?prefixes=%s&sensitivity=%d"
|
const defaultParentalServer = "pctrl.adguard.com"
|
||||||
|
const defaultParentalURL = "http://%s/check-parental-control-hash?prefixes=%s&sensitivity=%d"
|
||||||
|
|
||||||
var ErrInvalidSyntax = errors.New("dnsfilter: invalid rule syntax")
|
var ErrInvalidSyntax = errors.New("dnsfilter: invalid rule syntax")
|
||||||
var ErrInvalidParental = errors.New("dnsfilter: invalid parental sensitivity, must be either 3, 10, 13 or 17")
|
var ErrInvalidParental = errors.New("dnsfilter: invalid parental sensitivity, must be either 3, 10, 13 or 17")
|
||||||
@ -43,6 +44,7 @@ type Config struct {
|
|||||||
safeBrowsingEnabled bool
|
safeBrowsingEnabled bool
|
||||||
safeBrowsingServer string
|
safeBrowsingServer string
|
||||||
parentalEnabled bool
|
parentalEnabled bool
|
||||||
|
parentalServer string
|
||||||
parentalSensitivity int // must be either 3, 10, 13 or 17
|
parentalSensitivity int // must be either 3, 10, 13 or 17
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,6 +142,7 @@ func (d *Dnsfilter) CheckHost(host string) (Result, error) {
|
|||||||
if host == "" {
|
if host == "" {
|
||||||
return Result{Reason: FilteredInvalid}, nil
|
return Result{Reason: FilteredInvalid}, nil
|
||||||
}
|
}
|
||||||
|
host = strings.ToLower(host)
|
||||||
|
|
||||||
// try filter lists first
|
// try filter lists first
|
||||||
result, err := d.matchHost(host)
|
result, err := d.matchHost(host)
|
||||||
@ -487,6 +490,10 @@ func hostnameToHashParam(host string, addslash bool) (string, map[string]bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *Dnsfilter) checkSafeBrowsing(host string) (Result, error) {
|
func (d *Dnsfilter) checkSafeBrowsing(host string) (Result, error) {
|
||||||
|
// prevent recursion -- checking the host of safebrowsing server makes no sense
|
||||||
|
if host == d.config.safeBrowsingServer {
|
||||||
|
return Result{}, nil
|
||||||
|
}
|
||||||
format := func(hashparam string) string {
|
format := func(hashparam string) string {
|
||||||
url := fmt.Sprintf(defaultSafebrowsingURL, d.config.safeBrowsingServer, hashparam)
|
url := fmt.Sprintf(defaultSafebrowsingURL, d.config.safeBrowsingServer, hashparam)
|
||||||
return url
|
return url
|
||||||
@ -521,8 +528,12 @@ func (d *Dnsfilter) checkSafeBrowsing(host string) (Result, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *Dnsfilter) checkParental(host string) (Result, error) {
|
func (d *Dnsfilter) checkParental(host string) (Result, error) {
|
||||||
|
// prevent recursion -- checking the host of parental safety server makes no sense
|
||||||
|
if host == d.config.parentalServer {
|
||||||
|
return Result{}, nil
|
||||||
|
}
|
||||||
format := func(hashparam string) string {
|
format := func(hashparam string) string {
|
||||||
url := fmt.Sprintf(defaultParentalURL, hashparam, d.config.parentalSensitivity)
|
url := fmt.Sprintf(defaultParentalURL, d.config.parentalServer, hashparam, d.config.parentalSensitivity)
|
||||||
return url
|
return url
|
||||||
}
|
}
|
||||||
handleBody := func(body []byte, hashes map[string]bool) (Result, error) {
|
handleBody := func(body []byte, hashes map[string]bool) (Result, error) {
|
||||||
@ -723,6 +734,8 @@ func New() *Dnsfilter {
|
|||||||
Timeout: defaultHTTPTimeout,
|
Timeout: defaultHTTPTimeout,
|
||||||
}
|
}
|
||||||
d.config.safeBrowsingServer = defaultSafebrowsingServer
|
d.config.safeBrowsingServer = defaultSafebrowsingServer
|
||||||
|
d.config.parentalServer = defaultParentalServer
|
||||||
|
|
||||||
return d
|
return d
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user