mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-29 23:49:33 +00:00
70 lines
2 KiB
Lua
70 lines
2 KiB
Lua
--
|
|
-- (C) 2013-24 - ntop.org
|
|
--
|
|
|
|
dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
|
|
|
-- Imports
|
|
require "lua_utils"
|
|
local rest_utils = require "rest_utils"
|
|
|
|
-- Local variables
|
|
local host_ip = _GET["host"]
|
|
local vlan = _GET["vlan"]
|
|
local view = _GET["view"]
|
|
local host = interface.getHostInfo(host_ip, vlan) or {}
|
|
local total_bytes = 0
|
|
local rsp = {}
|
|
|
|
-- Applications
|
|
if view == 'applications' and host then
|
|
local host_applications = host["ndpi"] or {}
|
|
|
|
-- Calculate the total bytes sent and received, to calculate the percentages
|
|
for _, v in pairs(host_applications) do
|
|
total_bytes = total_bytes + (v["bytes.rcvd"] or 0) + (v["bytes.sent"] or 0)
|
|
end
|
|
|
|
-- Now format the values
|
|
for k, v in pairs(host_applications) do
|
|
local tot_l7_bytes = (v["bytes.sent"] or 0) + (v["bytes.rcvd"] or 0)
|
|
|
|
rsp[#rsp + 1] = {
|
|
application = {
|
|
id = interface.getnDPIProtoId(k),
|
|
label = k,
|
|
},
|
|
duration = (v["duration"] or 0),
|
|
bytes_sent = (v["bytes.sent"] or 0),
|
|
bytes_rcvd = (v["bytes.rcvd"] or 0),
|
|
tot_bytes = tot_l7_bytes,
|
|
percentage = (tot_l7_bytes * 100) / total_bytes,
|
|
}
|
|
end
|
|
elseif host then
|
|
-- Categories
|
|
local categories_utils = require "categories_utils"
|
|
local host_categories = host["ndpi_categories"] or {}
|
|
|
|
-- Calculate the total bytes sent and received, to calculate the percentages
|
|
for _, v in pairs(host_categories) do
|
|
total_bytes = total_bytes + (v["bytes"] or 0)
|
|
end
|
|
|
|
-- Now format the values
|
|
for k, v in pairs(host_categories) do
|
|
rsp[#rsp + 1] = {
|
|
category = {
|
|
id = interface.getnDPICategoryId(k),
|
|
label = getCategoryLabel(k, v.category),
|
|
},
|
|
applications = categories_utils.get_category_protocols_list(v.category, true),
|
|
duration = (v["duration"] or 0),
|
|
tot_bytes = (v["bytes"] or 0),
|
|
percentage = ((v["bytes"] or 0) * 100) / total_bytes,
|
|
}
|
|
end
|
|
end
|
|
|
|
rest_utils.answer(rest_utils.consts.success.ok, rsp)
|