Allow disabling of filtering but keeping querylog, safebrowsing, safesearch and parental working.

This commit is contained in:
Eugene Bujak 2018-09-25 19:26:26 +03:00
parent 50b188a086
commit 09a39cce03
3 changed files with 36 additions and 32 deletions

View file

@ -160,16 +160,16 @@ func writeAllConfigs() error {
}
const coreDNSConfigTemplate = `. {
{{if .FilteringEnabled}}dnsfilter {{.FilterFile}} {
dnsfilter {{if .FilteringEnabled}}{{.FilterFile}}{{end}} {
{{if .SafeBrowsingEnabled}}safebrowsing{{end}}
{{if .ParentalEnabled}}parental {{.ParentalSensitivity}}{{end}}
{{if .SafeSearchEnabled}}safesearch{{end}}
{{if .QueryLogEnabled}}querylog{{end}}
}{{end}}
}
{{.Pprof}}
hosts {
fallthrough
}
hosts {
fallthrough
}
{{if .UpstreamDNS}}forward . {{range .UpstreamDNS}}{{.}} {{end}}{{end}}
{{.Cache}}
{{.Prometheus}}

View file

@ -92,14 +92,12 @@ func setupPlugin(c *caddy.Controller) (*plug, error) {
p.d = dnsfilter.New()
p.hosts = make(map[string]net.IP)
var filterFileName string
filterFileNames := []string{}
for c.Next() {
args := c.RemainingArgs()
if len(args) == 0 {
// must have at least one argument
return nil, c.ArgErr()
if len(args) > 0 {
filterFileNames = append(filterFileNames, args...)
}
filterFileName = args[0]
for c.NextBlock() {
switch c.Val() {
case "safebrowsing":
@ -139,34 +137,39 @@ func setupPlugin(c *caddy.Controller) (*plug, error) {
}
}
file, err := os.Open(filterFileName)
if err != nil {
return nil, err
}
defer file.Close()
log.Printf("filterFileNames = %+v", filterFileNames)
count := 0
scanner := bufio.NewScanner(file)
for scanner.Scan() {
text := scanner.Text()
if p.parseEtcHosts(text) {
continue
}
err = p.d.AddRule(text, 0)
if err == dnsfilter.ErrInvalidSyntax {
continue
}
for i, filterFileName := range filterFileNames {
file, err := os.Open(filterFileName)
if err != nil {
return nil, err
}
count++
}
log.Printf("Added %d rules from %s", count, filterFileName)
defer file.Close()
if err = scanner.Err(); err != nil {
return nil, err
count := 0
scanner := bufio.NewScanner(file)
for scanner.Scan() {
text := scanner.Text()
if p.parseEtcHosts(text) {
continue
}
err = p.d.AddRule(text, uint32(i))
if err == dnsfilter.ErrInvalidSyntax {
continue
}
if err != nil {
return nil, err
}
count++
}
log.Printf("Added %d rules from %s", count, filterFileName)
if err = scanner.Err(); err != nil {
return nil, err
}
}
var err error
p.upstream, err = upstream.New(nil)
if err != nil {
return nil, err

View file

@ -20,7 +20,8 @@ func TestSetup(t *testing.T) {
config string
failing bool
}{
{`dnsfilter`, true},
{`dnsfilter`, false},
{`dnsfilter /dev/nonexistent/abcdef`, true},
{`dnsfilter ../tests/dns.txt`, false},
{`dnsfilter ../tests/dns.txt { safebrowsing }`, false},
{`dnsfilter ../tests/dns.txt { parental }`, true},