--
-- (C) 2013-17 - ntop.org
--
local dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
if(ntop.isPro()) then
package.path = dirs.installdir .. "/pro/scripts/lua/modules/?.lua;" .. package.path
require "snmp_utils"
end
require "lua_utils"
require "graph_utils"
require "alert_utils"
require "historical_utils"
local discover = require "discover_utils"
local host_pools_utils = require "host_pools_utils"
local page = _GET["page"]
local host_info = url2hostinfo(_GET)
local mac = host_info["host"]
local pool_id
interface.select(ifname)
local ifstats = interface.getStats()
local ifId = ifstats.id
local prefs = ntop.getPrefs()
if isAdministrator() then
if(_POST["custom_name"] ~= nil) then
setHostAltName(mac, _POST["custom_name"])
end
if(_POST["device_type"] ~=nil) then
local devtype = tonumber(_POST["device_type"])
setCustomDeviceType(mac, devtype)
interface.setMacDeviceType(mac, devtype, true --[[ overwrite ]])
end
if (_POST["pool"] ~= nil) then
pool_id = _POST["pool"]
local prev_pool = host_pools_utils.getMacPool(mac)
if pool_id ~= prev_pool then
local key = mac
if not host_pools_utils.changeMemberPool(ifId, key, pool_id) then
pool_id = nil
else
interface.reloadHostPools()
end
end
end
if (pool_id == nil) then
pool_id = host_pools_utils.getMacPool(mac)
end
end
local vlanId = host_info["vlan"]
local label = getHostAltName(mac)
if(vlanId == nil) then vlanId = 0 end
sendHTTPContentTypeHeader('text/html')
ntop.dumpFile(dirs.installdir .. "/httpdocs/inc/header.inc")
dofile(dirs.installdir .. "/scripts/lua/inc/menu.lua")
if(mac == nil) then
print("
\n")
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
if(mac_info.dhcpHost) then
print(' ')
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
print('\n')
print(" |
")
print("| "..i18n("name").." | "..label.."")
print[[ ]]
print[[ ]]
print(" | \n")
print("\n")
print[[]] print(i18n("details.host_pool")..": ")
if not ifstats.isView then
print[[]] print(host_pools_utils.getPoolName(ifId, pool_id)) print[[]]
print[[ ]]
print[[]]
else
-- no link for view interfaces
print(host_pools_utils.getPoolName(ifId, pool_id))
end
print(" |
")
print("\n")
print("")
if(mac_info.devtype ~= 0) then
-- This is a known device type
print("| ".. i18n("details.device_type") .. " | " .. discover.devtype2icon(mac_info.devtype) .. " ")
print(discover.devtype2string(mac_info.devtype) .. " | |
\n")
end
if(mac_info.fingerprint ~= "") then
print("| DHCP Fingerprint "..''
.." | "..mac_info.fingerprint.." | Operating System: "..getOperatingSystemIcon(mac_info.operatingSystem).." |
\n")
end
print("| ".. 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").."]" .. " |
\n")
if((mac_info["bytes.sent"]+mac_info["bytes.rcvd"]) > 0) then
print("| " .. i18n("details.sent_vs_received_traffic_breakdown") .. " | ")
breakdownBar(mac_info["bytes.sent"], i18n("sent"), mac_info["bytes.rcvd"], i18n("details.rcvd"), 0, 100)
print(" |
\n")
end
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"]) .. " |
\n")
print([[
| ]]) 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("
")
print('')
elseif(page == "config") then
if(not isAdministrator()) then
return
end
print[[