From: Vsevolod Stakhov Date: Mon, 7 Oct 2019 20:20:33 +0000 (+0100) Subject: [Fix] Fix AV scan logic X-Git-Tag: 2.0~44 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0e8dbac3d41dcf47c06ea05484a0df40b393660f;p=rspamd.git [Fix] Fix AV scan logic --- diff --git a/lualib/lua_scanners/clamav.lua b/lualib/lua_scanners/clamav.lua index 90cd67cef..04856e079 100644 --- a/lualib/lua_scanners/clamav.lua +++ b/lualib/lua_scanners/clamav.lua @@ -167,7 +167,7 @@ local function clamav_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, clamav_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, clamav_check_uncached) then return else clamav_check_uncached() diff --git a/lualib/lua_scanners/common.lua b/lualib/lua_scanners/common.lua index 8f72ce76b..103fce142 100644 --- a/lualib/lua_scanners/common.lua +++ b/lualib/lua_scanners/common.lua @@ -212,10 +212,10 @@ local function need_check(task, content, rule, digest, fn) end end - local f_message_not_too_large = message_not_too_large(task, content, rule) or true - local f_message_not_too_small = message_not_too_small(task, content, rule) or true - local f_message_min_words = message_min_words(task, rule) or true - local f_dynamic_scan = dynamic_scan(task, rule) or true + local f_message_not_too_large = message_not_too_large(task, content, rule) + local f_message_not_too_small = message_not_too_small(task, content, rule) + local f_message_min_words = message_min_words(task, rule) + local f_dynamic_scan = dynamic_scan(task, rule) if uncached and f_message_not_too_large and @@ -229,7 +229,7 @@ local function need_check(task, content, rule, digest, fn) end - if rule.redis_params then + if rule.redis_params and not rule.no_cache then key = rule.prefix .. key @@ -439,7 +439,7 @@ end exports.log_clean = log_clean exports.yield_result = yield_result exports.match_patterns = match_patterns -exports.need_check = need_check +exports.condition_check_and_continue = need_check exports.save_cache = save_cache exports.create_regex_table = create_regex_table exports.check_parts_match = check_parts_match diff --git a/lualib/lua_scanners/dcc.lua b/lualib/lua_scanners/dcc.lua index db1ac4497..ac7915990 100644 --- a/lualib/lua_scanners/dcc.lua +++ b/lualib/lua_scanners/dcc.lua @@ -298,7 +298,7 @@ local function dcc_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, dcc_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, dcc_check_uncached) then return else dcc_check_uncached() diff --git a/lualib/lua_scanners/fprot.lua b/lualib/lua_scanners/fprot.lua index 4061251cb..c42618434 100644 --- a/lualib/lua_scanners/fprot.lua +++ b/lualib/lua_scanners/fprot.lua @@ -160,7 +160,7 @@ local function fprot_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, fprot_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, fprot_check_uncached) then return else fprot_check_uncached() diff --git a/lualib/lua_scanners/icap.lua b/lualib/lua_scanners/icap.lua index 1f3ada5c9..42c32134b 100644 --- a/lualib/lua_scanners/icap.lua +++ b/lualib/lua_scanners/icap.lua @@ -385,7 +385,7 @@ local function icap_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, icap_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, icap_check_uncached) then return else icap_check_uncached() diff --git a/lualib/lua_scanners/kaspersky_av.lua b/lualib/lua_scanners/kaspersky_av.lua index 767ff2a94..cb94c38da 100644 --- a/lualib/lua_scanners/kaspersky_av.lua +++ b/lualib/lua_scanners/kaspersky_av.lua @@ -178,7 +178,7 @@ local function kaspersky_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, kaspersky_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, kaspersky_check_uncached) then return else kaspersky_check_uncached() diff --git a/lualib/lua_scanners/kaspersky_se.lua b/lualib/lua_scanners/kaspersky_se.lua index a1c8992c1..ecbe6236f 100644 --- a/lualib/lua_scanners/kaspersky_se.lua +++ b/lualib/lua_scanners/kaspersky_se.lua @@ -250,9 +250,11 @@ local function kaspersky_se_check(task, content, digest, rule) http.request(request_data) end - if common.need_check(task, content, rule, digest, kaspersky_se_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, + kaspersky_se_check_uncached) then return else + kaspersky_se_check_uncached() end diff --git a/lualib/lua_scanners/oletools.lua b/lualib/lua_scanners/oletools.lua index cc973d4d5..4bdf7747d 100644 --- a/lualib/lua_scanners/oletools.lua +++ b/lualib/lua_scanners/oletools.lua @@ -304,7 +304,7 @@ local function oletools_check(task, content, digest, rule) end - if common.need_check(task, content, rule, digest, oletools_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, oletools_check_uncached) then return else oletools_check_uncached() diff --git a/lualib/lua_scanners/savapi.lua b/lualib/lua_scanners/savapi.lua index b36e6e148..a8b7b6376 100644 --- a/lualib/lua_scanners/savapi.lua +++ b/lualib/lua_scanners/savapi.lua @@ -247,7 +247,7 @@ local function savapi_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, savapi_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, savapi_check_uncached) then return else savapi_check_uncached() diff --git a/lualib/lua_scanners/sophos.lua b/lualib/lua_scanners/sophos.lua index 60a23c20b..e646daaea 100644 --- a/lualib/lua_scanners/sophos.lua +++ b/lualib/lua_scanners/sophos.lua @@ -167,7 +167,7 @@ local function sophos_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, sophos_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, sophos_check_uncached) then return else sophos_check_uncached() diff --git a/lualib/lua_scanners/spamassassin.lua b/lualib/lua_scanners/spamassassin.lua index 06fcf5791..715a5e322 100644 --- a/lualib/lua_scanners/spamassassin.lua +++ b/lualib/lua_scanners/spamassassin.lua @@ -202,7 +202,7 @@ local function spamassassin_check(task, content, digest, rule) }) end - if common.need_check(task, content, rule, digest, spamassassin_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, spamassassin_check_uncached) then return else spamassassin_check_uncached() diff --git a/lualib/lua_scanners/vadesecure.lua b/lualib/lua_scanners/vadesecure.lua index 77a9e4dee..238120286 100644 --- a/lualib/lua_scanners/vadesecure.lua +++ b/lualib/lua_scanners/vadesecure.lua @@ -310,7 +310,7 @@ local function vade_check(task, content, digest, rule) http.request(request_data) end - if common.need_check(task, content, rule, digest, vade_check_uncached) then + if common.condition_check_and_continue(task, content, rule, digest, vade_check_uncached) then return else vade_check_uncached() diff --git a/src/plugins/lua/external_services.lua b/src/plugins/lua/external_services.lua index 7b20e629c..4858979e1 100644 --- a/src/plugins/lua/external_services.lua +++ b/src/plugins/lua/external_services.lua @@ -144,8 +144,10 @@ local function add_scanner_rule(sym, opts) -- if any mime_part filter defined, do not scan all attachments if opts.mime_parts_filter_regex ~= nil - or opts.mime_parts_filter_ext ~= nil then - rule.scan_all_mime_parts = false + or opts.mime_parts_filter_ext ~= nil then + rule.scan_all_mime_parts = false + else + rule.scan_all_mime_parts = true end rule.patterns = common.create_regex_table(opts.patterns or {})