ntopng/scripts/lua/get_host_pools.lua
Josh Soref 78e78c018c Fixes spellings and typos
Thank goes to
Josh Soref <jsoref@users.noreply.github.com>
2017-03-06 17:54:48 +01:00

95 lines
3.1 KiB
Lua

--
-- (C) 2017 - ntop.org
--
dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
local host_pools_utils = require "host_pools_utils"
local json = require "dkjson"
sendHTTPHeader('text/html; charset=iso-8859-1')
local ifid = _GET["ifid"]
local pool_id = _GET["pool"]
local res = {data={}, sort={{"column_", "asc"}}, totalRows=0}
local curpage = tonumber(_GET["currentPage"]) or 1
local perpage = tonumber(_GET["perPage"]) or 10
local member_filter = _GET["member"]
local start_i = (curpage-1) * perpage
local stop_i = start_i + perpage - 1
local i = 0
if((ifid ~= nil) and (isAdministrator())) then
interface.select(getInterfaceName(ifid))
if pool_id ~= nil then
local active_hosts = interface.getHostsInfo(false, nil, nil, nil, nil, nil, nil, nil, nil, nil, true--[[no macs]], tonumber(pool_id)).hosts
local network_stats = interface.getNetworksStats()
for _,member in ipairs(host_pools_utils.getPoolMembers(ifid, pool_id)) do
if(isEmptyString(member_filter) or (member.key == member_filter)) then
if (i >= start_i) and (i <= stop_i) then
local host_key, is_network = host_pools_utils.getMemberKey(member.key)
local link
if active_hosts[host_key] then
link = ntop.getHttpPrefix() .. "/lua/host_details.lua?" .. hostinfo2url(active_hosts[host_key])
elseif interface.getMacInfo(host_key) ~= nil then
link = ntop.getHttpPrefix() .. "/lua/mac_details.lua?host=" .. host_key
elseif network_stats[host_key] ~= nil then
link = ntop.getHttpPrefix() .. "/lua/hosts_stats.lua?network=" .. network_stats[host_key].network_id
else
link = ""
end
local alias = ""
local icon = ""
if not is_network then
icon = getHostIconName(host_key)
alias = getHostAltName(host_key)
if alias == host_key then
alias = ""
end
end
res.data[#res.data + 1] = {
column_member = member.address,
column_alias = alias,
column_icon = icon,
column_vlan = tostring(member.vlan),
column_link = link,
column_editable = tostring(tonumber(member.residual) == nil),
column_residual = tonumber(member.residual) and secondsToTime(member.residual) or "Persistent",
}
end
i = i + 1
end
end
tablePreferences("hostPoolMembers", perpage)
else
for _,pool in ipairs(host_pools_utils.getPoolsList(ifid)) do
if (i >= start_i) and (i <= stop_i) then
local undeletable_pools = host_pools_utils.getUndeletablePools(ifid)
if pool.id ~= host_pools_utils.DEFAULT_POOL_ID then
res.data[#res.data + 1] = {
column_pool_id = pool.id,
column_pool_name = pool.name,
column_pool_undeletable = undeletable_pools[pool.id] or false,
column_pool_link = ntop.getHttpPrefix() .. "/lua/hosts_stats.lua?pool=" .. pool.id
}
end
end
i = i + 1
end
end
end
res.totalRows = i
return print(json.encode(res, nil, 1))