ntopng/scripts/lua/get_geo_hosts.lua
Simone Mainardi 13875ec189 Adds numHosts to hosts retrieval for proper pagination
numHosts was suppressed in an earlier commit but this caused
issues with pagination of results.
2016-08-25 19:05:35 +02:00

121 lines
3 KiB
Lua

--
-- (C) 2013-16 - ntop.org
--
dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
--sendHTTPHeader('text/html; charset=iso-8859-1')
sendHTTPHeader('application/json')
host_info = url2hostinfo(_GET)
interface.select(ifname)
print [[
{"center":[0, 0],
"objects":
[]]
max_num = 100
num = 0
if (host_info["host"] == nil) then
hosts_stats = interface.getHostsInfo()
hosts_stats = hosts_stats["hosts"]
for key, value in pairs(hosts_stats) do
if(value["ip"] ~= nil) then
if(num > 0) then print(",") end
print('{\n"host": [ { ')
print('"lat": '..value["latitude"]..',\n')
print('"lng": '..value["longitude"]..',\n')
print('"html": "')
if((value["city"] ~= nil) and (value["city"] ~= "")) then
print('City: '..value["city"])
end
print(getFlag(value["country"]))
print('",\n')
print('"name": "'..key..'"\n')
print('} ] }\n')
num = num + 1
if(num > max_num) then break end
end
end
print ("\n]\n}\n")
return
end
-- Flows with trajectory
interface.select(ifname)
peers = interface.getFlowPeers(host_info["host"],host_info["vlan"])
maxval = 0
for key, values in pairs(peers) do
t = values["sent"]+values["rcvd"]
if(t > maxval) then maxval = t end
end
min_threshold = 0 -- 0.5%
for key, values in pairs(peers) do
t = values["sent"]+values["rcvd"]
pctg = (t*100)/maxval
if(not(values["client.private"])
and not(values["server.private"])
and not(isBroadMulticast(values["client"]))
and not(isBroadMulticast(values["server"]))) then
if((pctg >= min_threshold)
and (values["client.latitude"] ~= nil)
and (values["client.longitude"] ~= nil)) then
if(num > 0) then print(",") end
print('\n{\n"host":\n[ \n{\n')
print('"lat": '..values["client.latitude"]..',\n')
print('"lng": '..values["client.longitude"]..',\n')
print('"html": "')
if((values["client.city"] ~= nil) and (values["client.city"] ~= "")) then
print('City: '..values["client.city"])
end
print(getFlag(values["country"]))
print('",\n')
print('"name": "'..values["client"].."@"..values["client.vlan"]..'"\n')
print('},\n{\n')
print('"lat": '..values["server.latitude"]..',\n')
print('"lng": '..values["server.longitude"]..',\n')
print('"html": "')
if((values["server.city"] ~= nil) and (values["server.city"] ~= "")) then
print('City: '..values["server.city"])
end
print(getFlag(values["server.country"]))
print('",\n')
print('"name": "'..values["server"].."@"..values["client.vlan"]..'"\n')
print('}\n],\n"flusso": '.. pctg..',"html":"Flow '.. key .. '"\n')
print('}\n')
num = num + 1
if(num > max_num) then break end
end
end
end
print [[
]
}
]]