From b0cfd7228eaae0719f40d37f766c541c06bfb1b0 Mon Sep 17 00:00:00 2001 From: Simon Zolin Date: Fri, 5 Jul 2019 17:35:40 +0300 Subject: [PATCH] - 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. --- dnsfilter/dnsfilter.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/dnsfilter/dnsfilter.go b/dnsfilter/dnsfilter.go index 10146558..738ee039 100644 --- a/dnsfilter/dnsfilter.go +++ b/dnsfilter/dnsfilter.go @@ -11,6 +11,7 @@ import ( "io/ioutil" "net" "net/http" + "os" "strings" "sync/atomic" "time" @@ -525,17 +526,34 @@ func (d *Dnsfilter) lookupCommon(host string, lookupstats *LookupStats, cache gc // 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 func (d *Dnsfilter) initFiltering(filters map[int]string) error { listArray := []urlfilter.RuleList{} for id, dataOrFilePath := range filters { var list urlfilter.RuleList + if id == 0 { list = &urlfilter.StringRuleList{ ID: 0, RulesText: dataOrFilePath, IgnoreCosmetic: false, } + + } else if !fileExists(dataOrFilePath) { + list = &urlfilter.StringRuleList{ + ID: id, + IgnoreCosmetic: false, + } + } else { var err error list, err = urlfilter.NewFileRuleList(id, dataOrFilePath, false)