]> source.dussan.org Git - rspamd.git/commitdiff
Add lua formatter for fuzzy stat
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Dec 2015 00:49:44 +0000 (00:49 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 15 Dec 2015 00:49:44 +0000 (00:49 +0000)
src/rspamadm/fuzzy_stat.lua

index 5bc49d1149cd8d4460d1139168d7c5d5cff29f8b..c835ba29aa0e7f6714d0a8237c4379bad872b62f 100644 (file)
@@ -40,6 +40,44 @@ local function add_data(target, src)
   end
 end
 
+local function print_stat(st, tabs)
+  if st['checked'] then
+    print(string.format('%sChecked: %8d', tabs, tonumber(st['checked'])))
+  end
+  if st['matched'] then
+    print(string.format('%sMatched: %8d', tabs, tonumber(st['matched'])))
+  end
+  if st['errors'] then
+    print(string.format('%sErrors: %9d', tabs, tonumber(st['errors'])))
+  end
+  if st['added'] then
+    print(string.format('%sAdded: %10d', tabs, tonumber(st['added'])))
+  end
+  if st['deleted'] then
+    print(string.format('%sAdded: %10d', tabs, tonumber(st['deleted'])))
+  end
+end
+
+-- Sort by checked
+local function sort_ips(tbl)
+  local res = {}
+  for k,v in pairs(tbl) do
+    table.insert(res, {ip = k, data = v})
+  end
+
+  table.sort(res, function(a, b)
+    local n1 = 0
+    if a['data']['checked'] then n1 = a['data']['checked'] end
+
+    local n2 = 0
+    if b['data']['checked'] then n2 = b['data']['checked'] end
+
+    return n1 > n2
+  end)
+
+  return res
+end
+
 return function(args, res)
   local res_keys = {}
   local res_ips = {}
@@ -70,6 +108,34 @@ return function(args, res)
     end
   end
 
+  print('Keys statistics:')
+  for k,st in pairs(res_keys) do
+    print(string.format('Key id: %s', k))
+    print_stat(st, '\t')
 
+    if st['ips'] then
+      print('')
+      print('\tIPs stat:')
+      local sorted_ips = sort_ips(st['ips'])
+
+      for i,v in ipairs(sorted_ips) do
+        print(string.format('\t%s', v['ip']))
+        print_stat(v['data'], '\t\t')
+        print('')
+      end
+    end
+
+    print('')
+  end
+
+  print('')
+  print('IPs statistics:')
+
+  local sorted_ips = sort_ips(res_ips)
+  for i, v in ipairs(sorted_ips) do
+    print(string.format('%s', v['ip']))
+    print_stat(v['data'], '\t')
+    print('')
+  end
 end