---Res here is the table of the following args:
---workers: {
--- pid: {
--- data: {
--- key_id: {
--- matched:
--- scanned:
--- added:
--- removed:
--- errors:
--- last_ips: {
--- ip: {
--- matched:
--- scanned
--- added:
--- removed:
--- }
--- }
--- }
--- }
--- }
---}
---.USE "getopt"
-
local function add_data(target, src)
for k,v in pairs(src) do
if k ~= 'ips' then
end
-- Sort by checked
-local function sort_ips(tbl)
+local function sort_ips(tbl, opts)
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 function sort_order(elt)
+ local key = 'checked'
+ local res = 0
+
+ if opts['sort'] then
+ if opts['sort'] == 'matched' then
+ key = 'matched'
+ elseif opts['sort'] == 'errors' then
+ key = 'errors'
+ elseif opts['sort'] == 'ip' then
+ return elt['ip']
+ end
+ end
+
+ if elt['data'][key] then
+ res = elt['data'][key]
+ end
- local n2 = 0
- if b['data']['checked'] then n2 = b['data']['checked'] end
+ return res
+ end
- return n1 > n2
+ table.sort(res, function(a, b)
+ return sort_order(a) > sort_order(b)
end)
return res
end
+--.USE "getopt"
+
return function(args, res)
local res_keys = {}
local res_ips = {}
-
local wrk = res['workers']
+ local opts = getopt(args, '')
if wrk then
for i,pr in pairs(wrk) do
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 not opts['no-keys'] then
+ 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')
+ if st['ips'] then
print('')
+ print('\tIPs stat:')
+ local sorted_ips = sort_ips(st['ips'], opts)
+
+ for i,v in ipairs(sorted_ips) do
+ print(string.format('\t%s', v['ip']))
+ print_stat(v['data'], '\t\t')
+ print('')
+ end
end
- end
- print('')
+ print('')
+ end
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')
+ if not opts['no-ips'] then
print('')
+ print('IPs statistics:')
+
+ local sorted_ips = sort_ips(res_ips, opts)
+ for i, v in ipairs(sorted_ips) do
+ print(string.format('%s', v['ip']))
+ print_stat(v['data'], '\t')
+ print('')
+ end
end
end