-- -- (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('') print("
") end dofile(dirs.installdir .. "/scripts/lua/inc/footer.lua")