mirror of
https://github.com/ntop/ntopng.git
synced 2026-04-29 15:39:33 +00:00
67 lines
1.6 KiB
Lua
67 lines
1.6 KiB
Lua
--
|
|
-- (C) 2013-25 - ntop.org
|
|
--
|
|
|
|
local dirs = ntop.getDirs()
|
|
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
|
|
|
|
require "lua_utils"
|
|
local json = require "dkjson"
|
|
local rest_utils = require "rest_utils"
|
|
|
|
--
|
|
-- Get info for a specific ASN
|
|
-- Example: curl -u admin:admin -H "Content-Type: application/json" http://localhost:3000/lua/rest/v2/get/asn/asn_info.lua
|
|
--
|
|
-- NOTE: in case of invalid login, no error is returned but redirected to login
|
|
--
|
|
|
|
local ifid = _GET["ifid"]
|
|
local asn = tonumber(_GET["asn"])
|
|
|
|
if not ifid then
|
|
rest_utils.answer(rest_utils.consts.err.invalid_interface)
|
|
return
|
|
end
|
|
|
|
local function format_asn_data(stats)
|
|
return {
|
|
id = stats["asn"],
|
|
name = stats["name"],
|
|
first_seen = stats["seen.first"],
|
|
last_seen = stats["seen.last"],
|
|
num_hosts = stats["num_hosts"],
|
|
alerted_flows = stats["alerted_flows"]["total"],
|
|
score = stats["score"],
|
|
rtt = stats["round_trip_time"],
|
|
bytes_sent = stats["bytes.sent"],
|
|
bytes_rcvd = stats["bytes.rcvd"],
|
|
packets_sent = stats["packets.sent"],
|
|
packets_rcvd = stats["packets.rcvd"],
|
|
}
|
|
end
|
|
|
|
interface.select(ifid)
|
|
|
|
local rc = rest_utils.consts.success.ok
|
|
local res = {}
|
|
|
|
if asn then
|
|
local as = interface.getASInfo(asn)
|
|
|
|
if(as) then
|
|
res[#res + 1] = format_asn_data(as)
|
|
end
|
|
else
|
|
local asn_stats = interface.getASesInfo({ detailsLevel = "high" }) or {}
|
|
local num_data = asn_stats.numASes or 0
|
|
|
|
if num_data and num_data > 0 then
|
|
for _, stats in pairs(asn_stats['ASes']) do
|
|
res[#res + 1] = format_asn_data(stats)
|
|
end
|
|
end
|
|
end
|
|
|
|
rest_utils.answer(rc, res)
|
|
|