[Feature] lua_scanners: Implement dynamic scantags/1.9.3
@@ -156,6 +156,14 @@ local function clamav_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -226,6 +226,14 @@ local function dcc_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -149,6 +149,14 @@ local function fprot_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -242,6 +242,14 @@ local function icap_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -167,6 +167,14 @@ local function kaspersky_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -225,6 +225,14 @@ local function oletools_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), | |||
@@ -263,6 +271,8 @@ local function oletools_config(opts) | |||
default_score = 1, | |||
action = false, | |||
extended = false, | |||
symbol_type = 'postfilter', | |||
dynamic_scan = true, | |||
} | |||
oletools_conf = lua_util.override_defaults(oletools_conf, opts) |
@@ -237,6 +237,14 @@ local function savapi_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -41,9 +41,7 @@ local function sophos_config(opts) | |||
retransmits = 2, | |||
cache_expire = 3600, -- expire redis in one hour | |||
message = default_message, | |||
savdi_report_encrypted = false, | |||
detection_category = "virus", | |||
savdi_report_oversize = false, | |||
} | |||
sophos_conf = lua_util.override_defaults(sophos_conf, opts) | |||
@@ -159,6 +157,14 @@ local function sophos_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), |
@@ -136,6 +136,14 @@ local function spamassassin_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
tcp.request({ | |||
task = task, | |||
host = addr:to_string(), | |||
@@ -172,6 +180,8 @@ local function spamassassin_config(opts) | |||
default_score = 1, | |||
action = false, | |||
extended = false, | |||
symbol_type = 'postfilter', | |||
dynamic_scan = true, | |||
} | |||
spamassassin_conf = lua_util.override_defaults(spamassassin_conf, opts) |
@@ -24,6 +24,7 @@ local http = require "rspamd_http" | |||
local upstream_list = require "rspamd_upstream_list" | |||
local rspamd_logger = require "rspamd_logger" | |||
local ucl = require "ucl" | |||
local common = require "lua_scanners/common" | |||
local N = 'vadesecure' | |||
@@ -181,6 +182,14 @@ local function vade_check(task, content, digest, rule) | |||
end | |||
end | |||
if rule.dynamic_scan then | |||
local pre_check, pre_check_msg = common.check_metric_results(task, rule) | |||
if pre_check then | |||
rspamd_logger.infox(task, '%s: aborting: %s', rule.log_prefix, pre_check_msg) | |||
return true | |||
end | |||
end | |||
request_data.callback = vade_callback | |||
http.request(request_data) | |||
end |
@@ -149,13 +149,23 @@ if opts and type(opts) == 'table' then | |||
if not cb then | |||
rspamd_logger.errx(rspamd_config, 'cannot add rule: "' .. k .. '"') | |||
else | |||
local id = rspamd_config:register_symbol({ | |||
type = 'normal', | |||
name = m['symbol'], | |||
local t = { | |||
name = m.symbol, | |||
callback = cb, | |||
score = 0.0, | |||
group = N | |||
}) | |||
} | |||
if m.symbol_type == 'postfilter' then | |||
t.type = 'postfilter' | |||
t.priority = 3 | |||
else | |||
t.type = 'normal' | |||
end | |||
local id = rspamd_config:register_symbol(t) | |||
rspamd_config:register_symbol({ | |||
type = 'virtual', | |||
name = m['symbol_fail'], |
@@ -194,13 +194,23 @@ if opts and type(opts) == 'table' then | |||
rspamd_logger.errx(rspamd_config, 'cannot add rule: "' .. k .. '"') | |||
else | |||
m = nrule | |||
local id = rspamd_config:register_symbol({ | |||
type = 'normal', | |||
name = m['symbol'], | |||
local t = { | |||
name = m.symbol, | |||
callback = cb, | |||
score = 0.0, | |||
group = N | |||
}) | |||
} | |||
if m.symbol_type == 'postfilter' then | |||
t.type = 'postfilter' | |||
t.priority = 3 | |||
else | |||
t.type = 'normal' | |||
end | |||
local id = rspamd_config:register_symbol(t) | |||
rspamd_config:register_symbol({ | |||
type = 'virtual,nostat', | |||
name = m['symbol_fail'], |