From 2d00c24f85c830931cb0bdbb6a402a19d847f4c2 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Mon, 18 Nov 2019 01:29:06 +0100 Subject: [PATCH] Revert "plugin_block_name: make the blocking code reusable" This reverts commit f76e0fd8cf812631b1419b1b62f3ab9be4c727b5. --- dnscrypt-proxy/plugin_block_name.go | 80 ++++++++++++----------------- 1 file changed, 34 insertions(+), 46 deletions(-) diff --git a/dnscrypt-proxy/plugin_block_name.go b/dnscrypt-proxy/plugin_block_name.go index 4452a813..82b2c707 100644 --- a/dnscrypt-proxy/plugin_block_name.go +++ b/dnscrypt-proxy/plugin_block_name.go @@ -13,17 +13,13 @@ import ( lumberjack "gopkg.in/natefinch/lumberjack.v2" ) -type BlockedNames struct { +type PluginBlockName struct { allWeeklyRanges *map[string]WeeklyRanges patternMatcher *PatternMatcher logger *lumberjack.Logger format string } -type PluginBlockName struct { - blockedNames *BlockedNames -} - func (plugin *PluginBlockName) Name() string { return "block_name" } @@ -38,10 +34,8 @@ func (plugin *PluginBlockName) Init(proxy *Proxy) error { if err != nil { return err } - blockedNames := BlockedNames{ - allWeeklyRanges: proxy.allWeeklyRanges, - patternMatcher: NewPatternPatcher(), - } + plugin.allWeeklyRanges = proxy.allWeeklyRanges + plugin.patternMatcher = NewPatternPatcher() for lineNo, line := range strings.Split(string(bin), "\n") { line = strings.TrimFunc(line, unicode.IsSpace) if len(line) == 0 || strings.HasPrefix(line, "#") { @@ -58,14 +52,14 @@ func (plugin *PluginBlockName) Init(proxy *Proxy) error { } var weeklyRanges *WeeklyRanges if len(timeRangeName) > 0 { - weeklyRangesX, ok := (*blockedNames.allWeeklyRanges)[timeRangeName] + weeklyRangesX, ok := (*plugin.allWeeklyRanges)[timeRangeName] if !ok { dlog.Errorf("Time range [%s] not found at line %d", timeRangeName, 1+lineNo) } else { weeklyRanges = &weeklyRangesX } } - if err := blockedNames.patternMatcher.Add(line, weeklyRanges, lineNo+1); err != nil { + if err := plugin.patternMatcher.Add(line, weeklyRanges, lineNo+1); err != nil { dlog.Error(err) continue } @@ -73,9 +67,8 @@ func (plugin *PluginBlockName) Init(proxy *Proxy) error { if len(proxy.blockNameLogFile) == 0 { return nil } - blockedNames.logger = &lumberjack.Logger{LocalTime: true, MaxSize: proxy.logMaxSize, MaxAge: proxy.logMaxAge, MaxBackups: proxy.logMaxBackups, Filename: proxy.blockNameLogFile, Compress: true} - blockedNames.format = proxy.blockNameFormat - plugin.blockedNames = &blockedNames + plugin.logger = &lumberjack.Logger{LocalTime: true, MaxSize: proxy.logMaxSize, MaxAge: proxy.logMaxAge, MaxBackups: proxy.logMaxBackups, Filename: proxy.blockNameLogFile, Compress: true} + plugin.format = proxy.blockNameFormat return nil } @@ -97,11 +90,7 @@ func (plugin *PluginBlockName) Eval(pluginsState *PluginsState, msg *dns.Msg) er return nil } qName := strings.ToLower(StripTrailingDot(questions[0].Name)) - return plugin.blockedNames.check(pluginsState, qName) -} - -func (blockedNames *BlockedNames) check(pluginsState *PluginsState, qName string) error { - reject, reason, xweeklyRanges := blockedNames.patternMatcher.Eval(qName) + reject, reason, xweeklyRanges := plugin.patternMatcher.Eval(qName) var weeklyRanges *WeeklyRanges if xweeklyRanges != nil { weeklyRanges = xweeklyRanges.(*WeeklyRanges) @@ -111,34 +100,33 @@ func (blockedNames *BlockedNames) check(pluginsState *PluginsState, qName string reject = false } } - if !reject { - return nil - } - pluginsState.action = PluginsActionReject - pluginsState.returnCode = PluginsReturnCodeReject - if blockedNames.logger != nil { - var clientIPStr string - if pluginsState.clientProto == "udp" { - clientIPStr = (*pluginsState.clientAddr).(*net.UDPAddr).IP.String() - } else { - clientIPStr = (*pluginsState.clientAddr).(*net.TCPAddr).IP.String() + if reject { + pluginsState.action = PluginsActionReject + pluginsState.returnCode = PluginsReturnCodeReject + if plugin.logger != nil { + var clientIPStr string + if pluginsState.clientProto == "udp" { + clientIPStr = (*pluginsState.clientAddr).(*net.UDPAddr).IP.String() + } else { + clientIPStr = (*pluginsState.clientAddr).(*net.TCPAddr).IP.String() + } + var line string + if plugin.format == "tsv" { + now := time.Now() + year, month, day := now.Date() + hour, minute, second := now.Clock() + tsStr := fmt.Sprintf("[%d-%02d-%02d %02d:%02d:%02d]", year, int(month), day, hour, minute, second) + line = fmt.Sprintf("%s\t%s\t%s\t%s\n", tsStr, clientIPStr, StringQuote(qName), StringQuote(reason)) + } else if plugin.format == "ltsv" { + line = fmt.Sprintf("time:%d\thost:%s\tqname:%s\tmessage:%s\n", time.Now().Unix(), clientIPStr, StringQuote(qName), StringQuote(reason)) + } else { + dlog.Fatalf("Unexpected log format: [%s]", plugin.format) + } + if plugin.logger == nil { + return errors.New("Log file not initialized") + } + plugin.logger.Write([]byte(line)) } - var line string - if blockedNames.format == "tsv" { - now := time.Now() - year, month, day := now.Date() - hour, minute, second := now.Clock() - tsStr := fmt.Sprintf("[%d-%02d-%02d %02d:%02d:%02d]", year, int(month), day, hour, minute, second) - line = fmt.Sprintf("%s\t%s\t%s\t%s\n", tsStr, clientIPStr, StringQuote(qName), StringQuote(reason)) - } else if blockedNames.format == "ltsv" { - line = fmt.Sprintf("time:%d\thost:%s\tqname:%s\tmessage:%s\n", time.Now().Unix(), clientIPStr, StringQuote(qName), StringQuote(reason)) - } else { - dlog.Fatalf("Unexpected log format: [%s]", blockedNames.format) - } - if blockedNames.logger == nil { - return errors.New("Log file not initialized") - } - blockedNames.logger.Write([]byte(line)) } return nil }