mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-29 15:39:33 +00:00
74 lines
1.8 KiB
Lua
74 lines
1.8 KiB
Lua
--
|
|
-- (C) 2013-18 - ntop.org
|
|
--
|
|
|
|
local dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
|
require "lua_utils"
|
|
|
|
local json = require("dkjson")
|
|
local top_talkers_utils = require("top_talkers_utils")
|
|
local direction = _GET["senders_receivers"] or "senders"
|
|
sendHTTPContentTypeHeader('text/html')
|
|
|
|
local top_type = _GET["module"]
|
|
local data = {}
|
|
|
|
local json_res = top_talkers_utils.makeTopJson(ifname, false --[[ do not save checkpoint as we are not in minute.lua ]])
|
|
|
|
if json_res ~= nil then
|
|
local res = json.decode(json_res)
|
|
|
|
if res and res.vlan[1] then
|
|
res = res.vlan[1]
|
|
|
|
if top_type == "top_asn" then
|
|
res = res.asn[1]
|
|
else
|
|
res = res.hosts[1]
|
|
end
|
|
|
|
if res ~= nil then
|
|
data = res[direction]
|
|
|
|
local min_percentage = 0.08
|
|
local tot = 0
|
|
local other_value = 0
|
|
|
|
for _, item in pairs(data) do
|
|
tot = tot + item.value
|
|
end
|
|
|
|
local final_data = {}
|
|
|
|
for _, item in pairs(data) do
|
|
local perc = item.value / tot
|
|
|
|
if (perc >= min_percentage) and (item.address ~= "Other") then
|
|
if isEmptyString(item.label) then item.label = item.address end
|
|
|
|
if top_type == "top_talkers" then
|
|
item.url = ntop.getHttpPrefix() .. "/lua/host_details.lua?host=" .. item.address
|
|
elseif top_type == "top_asn" then
|
|
item.url = ntop.getHttpPrefix() .. "/lua/hosts_stats.lua?asn=" .. item.address
|
|
end
|
|
|
|
final_data[#final_data + 1] = item
|
|
else
|
|
other_value = other_value + item.value
|
|
end
|
|
end
|
|
|
|
if other_value > 0 then
|
|
final_data[#final_data + 1] = {
|
|
label = i18n("other"),
|
|
value = other_value,
|
|
}
|
|
end
|
|
|
|
data = final_data
|
|
end
|
|
end
|
|
end
|
|
|
|
print(json.encode(data))
|