From: Vsevolod Stakhov Date: Tue, 15 Dec 2015 00:49:44 +0000 (+0000) Subject: Add lua formatter for fuzzy stat X-Git-Tag: 1.1.0~297 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0f2deded022025953f1cc97012811c2c761e0cc7;p=rspamd.git Add lua formatter for fuzzy stat --- diff --git a/src/rspamadm/fuzzy_stat.lua b/src/rspamadm/fuzzy_stat.lua index 5bc49d114..c835ba29a 100644 --- a/src/rspamadm/fuzzy_stat.lua +++ b/src/rspamadm/fuzzy_stat.lua @@ -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