From cc7c38bd4361ae99e4b0a82cb07d56cb87cd764b Mon Sep 17 00:00:00 2001 From: Carsten Rosenberg Date: Fri, 15 Jan 2021 17:49:25 +0100 Subject: [PATCH] [Minor] lua_scanners - fix symbol registration --- src/plugins/lua/antivirus.lua | 32 ++++++++++++++++++++++ src/plugins/lua/external_services.lua | 38 ++++++++++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/plugins/lua/antivirus.lua b/src/plugins/lua/antivirus.lua index 5d7268b06e..0dad933b94 100644 --- a/src/plugins/lua/antivirus.lua +++ b/src/plugins/lua/antivirus.lua @@ -231,6 +231,38 @@ if opts and type(opts) == 'table' then end end end + if type(m['patterns_fail']) == 'table' then + if m['patterns_fail'][1] then + for _, p in ipairs(m['patterns_fail']) do + if type(p) == 'table' then + for sym in pairs(p) do + rspamd_logger.debugm(N, rspamd_config, 'registering: %1', { + type = 'virtual', + name = sym, + parent = m['symbol'], + parent_id = id, + group = N + }) + rspamd_config:register_symbol({ + type = 'virtual', + name = sym, + parent = id, + group = N + }) + end + end + end + else + for sym in pairs(m['patterns_fail']) do + rspamd_config:register_symbol({ + type = 'virtual', + name = sym, + parent = id, + group = N + }) + end + end + end if m['score'] then -- Register metric symbol local description = 'antivirus symbol' diff --git a/src/plugins/lua/external_services.lua b/src/plugins/lua/external_services.lua index 37665378cd..2dd55e3605 100644 --- a/src/plugins/lua/external_services.lua +++ b/src/plugins/lua/external_services.lua @@ -142,6 +142,12 @@ local function add_scanner_rule(sym, opts) if not rule.symbol_fail then rule.symbol_fail = rule.symbol .. '_FAIL' end + if not rule.symbol_encrypted then + rule.symbol_encrypted = rule.symbol .. '_ENCRYPTED' + end + if not rule.symbol_macro then + rule.symbol_macro = rule.symbol .. '_MACRO' + end rule.redis_params = redis_params @@ -283,7 +289,37 @@ if opts and type(opts) == 'table' then end end end - + if type(m['patterns_fail']) == 'table' then + if m['patterns_fail'][1] then + for _, p in ipairs(m['patterns_fail']) do + if type(p) == 'table' then + for sym in pairs(p) do + rspamd_logger.debugm(N, rspamd_config, 'registering: %1', { + type = 'virtual', + name = sym, + parent = m['symbol'], + parent_id = id, + }) + rspamd_config:register_symbol({ + type = 'virtual', + name = sym, + parent = id, + group = N + }) + end + end + end + else + for sym in pairs(m['patterns_fail']) do + rspamd_config:register_symbol({ + type = 'virtual', + name = sym, + parent = id, + group = N + }) + end + end + end if m.symbols then local function reg_symbols(tbl) for _,sym in pairs(tbl) do -- 2.47.3