--
-- (C) 2013-21 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
local discover = require "discover_utils"
local page_utils = require("page_utils")
local ifId = getInterfaceId(ifname)
local refresh_button = ''
if _GET["request_discovery"] == "true" then
refresh_button = ""
discover.requestNetworkDiscovery(ifId)
end
local os_filter = _GET["operating_system"]
local manuf_filter = _GET["manufacturer"]
local devtype_filter = _GET["device_type"]
local base_url = ntop.getHttpPrefix() .. "/lua/discover.lua"
local page_params = {}
local title = {operating_system = '', manufacturer = '', device_type = ''}
if(not isEmptyString(os_filter)) then
page_params.operating_system = os_filter
title.operating_system = discover.getOsName(tonumber(os_filter))
end
if(not isEmptyString(manuf_filter)) then
page_params.manufacturer = manuf_filter
title.manufacturer = manuf_filter
end
if(not isEmptyString(devtype_filter)) then
page_params.device_type = devtype_filter
title.device_type = discover.devtype2string(devtype_filter)
end
local discovery_requested = discover.networkDiscoveryRequested(ifId)
if discovery_requested then
refresh_button = ""
end
sendHTTPContentTypeHeader('text/html')
page_utils.set_active_menu_entry(page_utils.menu_entries.network_discovery)
dofile(dirs.installdir .. "/scripts/lua/inc/menu.lua")
-- print('
'..i18n("discover.network_discovery")..'
')
page_utils.print_page_title(i18n("discover.discovered_devices", {sys = title.operating_system, manuf = title.manufacturer, dev = title.device_type})..' '..refresh_button)
local discovered = discover.discover2table(ifname)
local manufactures = {}
local operating_systems = {}
local device_types = {}
for _, device in pairs(discovered["devices"] or {}) do
local manuf = (device["manufacturer"] or get_manufacturer_mac(device["mac"]))
if(manuf ~= nil) then
manufactures[manuf] = manufactures[manuf] or 0
manufactures[manuf] = manufactures[manuf] + 1
end
local dev_os = device["os_type"]
if(dev_os ~= nil) then
operating_systems[dev_os] = operating_systems[dev_os] or 0
operating_systems[dev_os] = operating_systems[dev_os] + 1
end
local dev_type = discover.devtype2id(device["device_type"])
if(dev_type ~= nil) then
device_types[dev_type] = device_types[dev_type] or 0
device_types[dev_type] = device_types[dev_type] + 1
end
end
if discovery_requested then
print(''..' '..i18n('discover.network_discovery_not_enabled', {url=ntop.getHttpPrefix().."/lua/admin/prefs.lua?tab=discovery", flask_icon=""})..'.
')
print[[
]]
elseif discovered["status"]["code"] == "NOCACHE" then
-- nothing to show and nothing has been requested
print(' '..discovered["status"]["message"]..'
')
end
if discovered["status"]["code"] == "ERROR" then
print(' '..discovered["status"]["message"]..'
')
elseif discovered["status"]["code"] == "OK" then -- everything is ok
print[[]]
print[[]]
print(""..i18n("discover.network_discovery_datetime")..": "..formatEpoch(discovered["discovery_timestamp"]).."
")
end
if discovered["ghost_found"] or discovered["too_many_devices_discovered"] then
print("")
print('
' .. i18n("notes") .. ' ')
print('
')
if discovered["ghost_found"] then
print('- ' .. i18n("discover.ghost_icon_descr", {ghost_icon=''..discover.ghost_icon..''}) .. '.
')
end
if discovered["too_many_devices_discovered"] then
print('- ' .. i18n("discover.too_many_devices_descr", {max_devices = discover.MAX_DISCOVERED_DEVICES}) .. '.
')
end
print('
')
print("
")
end
dofile(dirs.installdir .. "/scripts/lua/inc/footer.lua")