-- -- (C) 2013-24 - ntop.org -- local dirs = ntop.getDirs() package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path package.path = dirs.installdir .. "/scripts/lua/modules/pools/?.lua;" .. package.path local snmp_utils local snmp_location if(ntop.isPro()) then package.path = dirs.installdir .. "/pro/scripts/lua/modules/?.lua;" .. package.path snmp_utils = require "snmp_utils" snmp_location = require "snmp_location" end require "lua_utils" local graph_utils = require "graph_utils" local alert_utils = require "alert_utils" require "discover_utils" require "mac_utils" local page_utils = require("page_utils") local have_nedge = ntop.isnEdge() local info = ntop.getInfo() local os_utils = require "os_utils" local discover = require "discover_utils" local host_pools = require "host_pools" local template = require "template_utils" local page = _GET["page"] local host_info = url2hostinfo(_GET) local mac = host_info["host"] local pool_id interface.select(ifname) -- Instantiate host pools local host_pools_instance = host_pools:create() local ifstats = interface.getStats() local ifId = ifstats.id local prefs = ntop.getPrefs() if isAdministrator() then if (_SERVER["REQUEST_METHOD"] == "POST") and (page == "config") then setHostAltName(mac, _POST["custom_name"]) local devtype = tonumber(_POST["device_type"]) setCustomDeviceType(mac, devtype) ntop.setMacDeviceType(mac, devtype, true --[[ overwrite ]]) pool_id = _POST["pool"] if pool_id then host_pools_instance:bind_member(mac, tonumber(pool_id)) end end end if (pool_id == nil) then local cur_pool = host_pools_instance:get_pool_by_member(mac) if cur_pool then pool_id = cur_pool["pool_id"] else pool_id = host_pools_instance.DEFAULT_POOL_ID end end local vlanId = host_info["vlan"] local label = mac2label(mac) local devicekey = hostinfo2hostkey(host_info) if(vlanId == nil) then vlanId = 0 end sendHTTPContentTypeHeader('text/html') page_utils.print_header_and_set_active_menu_entry(page_utils.menu_entries.devices) dofile(dirs.installdir .. "/scripts/lua/inc/menu.lua") if(mac == nil) then print("
| "..i18n("mac_address").." | "..mac)
local s = get_symbolic_mac(mac, true)
if(s ~= mac) then
print(" ("..s..")")
end
if mac_info["num_hosts"] > 0 then
print(" [ "..i18n("details.show_hosts").." ]") end print(" | ")
print("") print(discover.devtype2icon(mac_info.devtype) .. " ") if mac_info.devtype ~= 0 then print(discover.devtype2string(mac_info.devtype) .. " ") else print(i18n("host_details.unknown_device_type") .. " ") end if isAdministrator() then print('\n') end if(not isEmptyString(mac_info.model)) then local _model = discover.apple_products[mac_info.model] or mac_info.model print(" [ "..i18n("model")..": ".. _model .." ]") end print(" |
|---|---|---|
| "..i18n("ip_address").." | "..printMacHosts(mac).." | ") print("|
| "..i18n("name").." | "..label.."") if isAdministrator() then print[[ ]] print[[ ]] end print(" | \n") print("\n") print[[]] print(i18n(ternary(have_nedge, "nedge.user", "details.host_pool"))..": ") if not ifstats.isView then print[[]] print(host_pools_instance:get_pool_name(pool_id)) print[[]] if isAdministrator() then print[[ ]] print[[]] end else -- no link for view interfaces print(host_pools_instance:get_pool_name(pool_id)) end print(" |
| ".. i18n("details.device_type") .. " | " .. discover.devtype2icon(mac_info.devtype) .. " ") print(discover.devtype2string(mac_info.devtype)) if(mac_info.ssid ~= nil) then print(' ( '..mac_info.ssid..' )') end print(" | |
| DHCP Fingerprint "..'' .." | "..mac_info.dhcp_fingerprint) print_copy_button('dhcp_fingerprint', mac_info.dhcp_fingerprint) print(" | |
| " .. i18n("hosts_stats.location") .. " | ".. string.upper(mac_info.location) .." | |
| ".. i18n("details.first_last_seen") .. " | " .. formatEpoch(mac_info["seen.first"]) .. " [" .. secondsToTime(os.time()-mac_info["seen.first"]) .. " " .. i18n("details.ago").."]" .. " | \n") print("" .. formatEpoch(mac_info["seen.last"]) .. " [" .. secondsToTime(os.time()-mac_info["seen.last"]) .. " " .. i18n("details.ago").."]" .. " |
| " .. i18n("details.sent_vs_received_traffic_breakdown") .. " | ") graph_utils.breakdownBar(mac_info["bytes.sent"], i18n("sent"), mac_info["bytes.rcvd"], i18n("details.rcvd"), 0, 100) print(" | |
| " .. i18n("details.first_observed_on") .. " | ") print(formatEpoch(first_observed)) print(" | |
| "..i18n("details.flows_dropped_by_bridge").." | ") print("" .. formatValue((mac_info["flows.dropped"] or 0)) .. "") print(" | |
| " .. i18n("details.traffic_sent_received") .. " | " .. formatPackets(mac_info["packets.sent"]) .. " / ".. bytesToSize(mac_info["bytes.sent"]) .. " | " .. formatPackets(mac_info["packets.rcvd"]) .. " / ".. bytesToSize(mac_info["bytes.rcvd"]) .. " |
| " .. i18n("details.dhcp_sent_received") .. " | " .. formatPackets(mac_info["dhcp.sent"]) .. " | " .. formatPackets(mac_info["dhcp.rcvd"]) .. " |
| ]]) print(i18n("details.address_resolution_protocol")) print[[ | ]] print(i18n("details.arp_requests")) print[[ | ]] print(i18n("details.arp_replies")) print([[ |
| ]]..formatValue(mac_info["arp_requests.sent"])..[[ ]]..i18n("sent")..[[ / ]]..formatValue(mac_info["arp_requests.rcvd"])..[[ ]]..i18n("received")..[[ | ]]..formatValue(mac_info["arp_replies.sent"])..[[ ]]..i18n("sent")..[[ / ]]..formatValue(mac_info["arp_replies.rcvd"])..[[ ]]..i18n("received")..[[ | |
| ]] print(i18n("mac_details.reset_mac_stats")) print[[ | ||
| " .. i18n("packets_page.ip_version_distribution") .. ' |
|---|