1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
--
-- (C) 2014-15-15 - ntop.org
--
dirs = ntop.getDirs()
package.path = dirs.installdir .. "/scripts/lua/modules/?.lua;" .. package.path
require "lua_utils"
require "flow_utils"
require "voip_utils"
require "sqlite_utils"
sendHTTPHeader('text/json')
flow_key = _GET["flow_key"]
if(flow_key == nil) then
flow = nil
else
interface.select(ifname)
flow = interface.findFlowByKey(tonumber(flow_key))
end
if(flow == nil) then
print("{ } ")
else
key = "" -- TODO
-- ====================================
function nest2tab(level)
print('\n')
while(level > 0) do
print('\t')
level = level - 1
end
end
-- ====================================
function displayProc(nest, proc, host, host_name,
add_host, add_father, add_init, first_element, last_element, add_comma)
-- if(num > 0) then print(',') end
if(add_host) then
nest2tab(nest)
link = ntop.getHttpPrefix().."/lua/host_details.lua?host=".. host .."&page=flows"
if(add_comma) then print(',') add_comma = false end
print('{ "name": "'..host_name..'", "type": "host", "link": "'..link..'", "children": [ ')
nest = nest + 1
end
if(add_father) then
if(first_element and add_init and (proc.father_pid ~= 1)) then
nest2tab(nest)
print('{ "name": "init (pid 1)", "type": "proc", "children": [ ')
nest = nest + 1
else
if(not(first_element) and (proc.father_pid ~= 1)) then
nest2tab(nest)
print('] }')
nest = nest -1
add_comma = true
end
end
if(add_init or (proc.father_pid ~= 1)) then
-- No link for father
-- link = ntop.getHttpPrefix().."/lua/get_process_info.lua?pid="..proc.father_pid.."&name="..proc.father_name.."&host=".. host .."&page=flows"
nest2tab(nest)
if(add_comma) then print(',') add_comma = false end
print(' { "name": "'..proc.father_name..' (pid '.. proc.father_pid..')", "type": "proc", "children": [ ')
nest = nest + 1
end
end
link = ntop.getHttpPrefix().."/lua/get_process_info.lua?pid="..proc.pid.."&name="..proc.name.."&host=".. host .."&page=Flows"
nest2tab(nest)
if(add_comma) then print(',') add_comma = false end
print('{ "name": "'..proc.name..' (pid '.. proc.pid..')", "link": "'.. link ..'", "type": "proc", "children": [ ] }')
if(last_element) then
while(nest > 0) do
nest2tab(nest)
print('] }')
nest = nest -1
end
end
return(nest)
end
-- ================================================
nest = 0
if((flow.client_process ~= nil) and (flow.server_process ~= nil)) then
if(flow["cli.ip"] ~= flow["srv.ip"]) then
print('{ "name": "", "type": "root", "children": [')
last = true
else
last = false
end
-- nest = nest + 1
nest = displayProc(nest, flow.client_process,
flow["cli.ip"],
flowinfo2hostname(flow, "cli", flow["vlan"]),
true, true, true, true, last, false)
displayProc(nest, flow.server_process,
flow["srv.ip"],
flowinfo2hostname(flow, "srv", flow["vlan"]),
(flow["cli.ip"] ~= flow["srv.ip"]),
((flow.client_process.father_pid ~= flow.server_process.father_pid) or (flow["cli.ip"] ~= flow["srv.ip"])),
false,
(flow["cli.ip"] ~= flow["srv.ip"]), true, true)
if(flow["cli.ip"] ~= flow["srv.ip"]) then
print("] }\n")
end
elseif(flow.client_process ~= nil) then
nest = displayProc(nest, flow.client_process,
flow["cli.ip"], flowinfo2hostname(flow, "cli", flow["vlan"]),
true, true, true, true, true, false)
elseif(flow.server_process ~= nil) then
nest = displayProc(nest, flow.server_process,
flow["srv.ip"], flowinfo2hostname(flow, "srv", flow["vlan"]),
true, true, true, true, true, false)
end
end
|