]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Allow to register metric symbols from multimap
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 29 Jul 2016 11:29:37 +0000 (12:29 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 29 Jul 2016 11:29:37 +0000 (12:29 +0100)
src/plugins/lua/multimap.lua

index b197402319e7f449a0e188940959475f4a3969e9..e684025728fa9186e6e7a3e552d834375855799d 100644 (file)
@@ -586,11 +586,40 @@ if opts and type(opts) == 'table' then
   -- add fake symbol to check all maps inside a single callback
   if any(function(r) return not r['prefilter'] end, rules) then
     for i,rule in ipairs(rules) do
-      rspamd_config:register_symbol({
+      local id = rspamd_config:register_symbol({
         type = 'normal',
         name = rule['symbol'],
         callback = gen_multimap_callback(rule),
       })
+      if rule['symbols'] then
+        -- Find allowed symbols by this map
+        rule['symbols_set'] = {}
+        each(function(s)
+          rspamd_config:register_symbol({
+            type = 'virtual',
+            name = s,
+            parent = id
+          })
+          rule['symbols_set'][s] = 1
+        end, rule['symbols'])
+      end
+      if rule['score'] then
+        -- Register metric symbol
+        local description = 'multimap symbol'
+        local group = 'multimap'
+        if rule['description'] then
+          description = rule['description']
+        end
+        if rule['group'] then
+          group = rule['group']
+        end
+        rspamd_config:set_metric_symbol({
+            name = rule['symbol'],
+            score = rule['score'],
+            description = description,
+            group = group
+        })
+      end
     end
   end