From 64c4be01551d970c281c0e79c54ea16b972348d7 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 2 Aug 2017 18:22:23 +0100 Subject: [PATCH] [Feature] Add ability to match score in force_actions module --- src/plugins/lua/force_actions.lua | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/lua/force_actions.lua b/src/plugins/lua/force_actions.lua index 88b09dfad..d2806d1f7 100644 --- a/src/plugins/lua/force_actions.lua +++ b/src/plugins/lua/force_actions.lua @@ -29,7 +29,7 @@ local rspamd_cryptobox_hash = require "rspamd_cryptobox_hash" local rspamd_expression = require "rspamd_expression" local rspamd_logger = require "rspamd_logger" -local function gen_cb(expr, act, pool, message, subject, raction, honor) +local function gen_cb(expr, act, pool, message, subject, raction, honor, limit) local function parse_atom(str) local atom = table.concat(fun.totable(fun.take_while(function(c) @@ -44,7 +44,8 @@ local function gen_cb(expr, act, pool, message, subject, raction, honor) local function process_atom(atom, task) local f_ret = task:has_symbol(atom) if f_ret then - return 1 + f_ret = task:get_symbol(atom)[1].score + return f_ret end return 0 end @@ -67,7 +68,8 @@ local function gen_cb(expr, act, pool, message, subject, raction, honor) return false end - if e:process(task) == 1 then + local ret = e:process(task) + if ret > limit then if subject then task:set_metric_subject(subject) end @@ -146,9 +148,11 @@ local function configure_module() if action and expr then local subject = sett.subject local message = sett.message + local lim = sett.limit or 0 local raction = list_to_hash(sett.require_action) local honor = list_to_hash(sett.honor_action) - local cb, atoms = gen_cb(expr, action, rspamd_config:get_mempool(), message, subject, raction, honor) + local cb, atoms = gen_cb(expr, action, rspamd_config:get_mempool(), + message, subject, raction, honor, lim) if cb and atoms then local t = {} if (raction or honor) then -- 2.39.5