- dnsfilter: fix post-install error "filter file not found"

Right after installation we don't have the filter files downloaded.
While they are being downloaded, we replace them with an empty filter.
This commit is contained in:
Simon Zolin 2019-07-05 17:35:40 +03:00
parent e03efbcdd1
commit b0cfd7228e
1 changed files with 18 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import (
"io/ioutil" "io/ioutil"
"net" "net"
"net/http" "net/http"
"os"
"strings" "strings"
"sync/atomic" "sync/atomic"
"time" "time"
@ -525,17 +526,34 @@ func (d *Dnsfilter) lookupCommon(host string, lookupstats *LookupStats, cache gc
// Adding rule and matching against the rules // Adding rule and matching against the rules
// //
// Return TRUE if file exists
func fileExists(fn string) bool {
_, err := os.Stat(fn)
if err != nil {
return false
}
return true
}
// Initialize urlfilter objects // Initialize urlfilter objects
func (d *Dnsfilter) initFiltering(filters map[int]string) error { func (d *Dnsfilter) initFiltering(filters map[int]string) error {
listArray := []urlfilter.RuleList{} listArray := []urlfilter.RuleList{}
for id, dataOrFilePath := range filters { for id, dataOrFilePath := range filters {
var list urlfilter.RuleList var list urlfilter.RuleList
if id == 0 { if id == 0 {
list = &urlfilter.StringRuleList{ list = &urlfilter.StringRuleList{
ID: 0, ID: 0,
RulesText: dataOrFilePath, RulesText: dataOrFilePath,
IgnoreCosmetic: false, IgnoreCosmetic: false,
} }
} else if !fileExists(dataOrFilePath) {
list = &urlfilter.StringRuleList{
ID: id,
IgnoreCosmetic: false,
}
} else { } else {
var err error var err error
list, err = urlfilter.NewFileRuleList(id, dataOrFilePath, false) list, err = urlfilter.NewFileRuleList(id, dataOrFilePath, false)