commit 6e105da: [Feature] Elastic: Add some missing fields

Vsevolod Stakhov vsevolod at highsecure.ru
Mon Nov 2 16:14:07 UTC 2020


Author: Vsevolod Stakhov
Date: 2020-11-02 16:08:00 +0000
URL: https://github.com/rspamd/rspamd/commit/6e105da2247e85be60ff31f6046dc8e24c87d807 (HEAD -> master)

[Feature] Elastic: Add some missing fields

---
 src/plugins/lua/elastic.lua | 43 ++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/src/plugins/lua/elastic.lua b/src/plugins/lua/elastic.lua
index f0dd98f78..43c9d6b0f 100644
--- a/src/plugins/lua/elastic.lua
+++ b/src/plugins/lua/elastic.lua
@@ -22,6 +22,7 @@ local util = require "rspamd_util"
 local ucl = require "ucl"
 local rspamd_redis = require "lua_redis"
 local upstream_list = require "rspamd_upstream_list"
+local lua_settings = require "lua_settings"
 
 if confighelp then
   return
@@ -147,7 +148,7 @@ local function get_general_metadata(task)
   r.user = task:get_user() or 'unknown'
   r.qid = task:get_queue_id() or 'unknown'
   r.action = task:get_metric_action('default')
-  r.rspamd_server = HOSTNAME  
+  r.rspamd_server = HOSTNAME
   if r.user ~= 'unknown' then
       r.direction = "Outbound"
   end
@@ -160,17 +161,25 @@ local function get_general_metadata(task)
     for _, a in ipairs(rcpt) do
       table.insert(l, a['addr'])
     end
-      r.rcpt = l
+    r.rcpt = l
   else
     r.rcpt = 'unknown'
   end
-  local from = task:get_from('smtp')
+
+  local from = task:get_from{'smtp', 'orig'}
   if ((from or E)[1] or E).addr then
     r.from = from[1].addr
   else
     r.from = 'unknown'
   end
 
+  local mime_from = task:get_from{'mime', 'orig'}
+  if ((mime_from or E)[1] or E).addr then
+    r.mime_from = mime_from[1].addr
+  else
+    r.mime_from = 'unknown'
+  end
+
   local syminf = task:get_symbols_all()
   r.symbols = syminf
   r.asn = {}
@@ -200,6 +209,34 @@ local function get_general_metadata(task)
   local hname = task:get_hostname() or 'unknown'
   r.hostname = hname
 
+  local settings_id = task:get_settings_id()
+
+  if settings_id then
+    -- Convert to string
+    settings_id = lua_settings.settings_by_id(settings_id)
+
+    if settings_id then
+      settings_id = settings_id.name
+    end
+  end
+
+  if not settings_id then
+    settings_id = ''
+  end
+
+  r.settings_id = settings_id
+
+  local scan_real = task:get_scan_time()
+  scan_real = math.floor(scan_real * 1000)
+  if scan_real < 0 then
+    rspamd_logger.messagex(task,
+        'clock skew detected for message: %s ms real scan time (reset to 0)',
+        scan_real)
+    scan_real = 0
+  end
+
+  r.scan_time = scan_real
+
   return r
 end
 


More information about the Commits mailing list