&1") -- redirect stderr to stdout local cmdOutput = pipe:read("*a") pipe:close() return cmdOutput end local ipMode = db.getAttribute ("networkInfo", "_ROWID_", "1", "netWorkMode") or '' local clasName = "floatRight toggletext" local dis_status = "" if (ipMode == "1") then clasName = "floatRight toggletext_dis" dis_status = "disabled" end if (ButtonType and ButtonType == "ping") then require "teamf1lualib/ping" local inputTable = web.cgiToLuaTable(cgi) if (inputTable["ping.throughVpn"] == nil) then inputTable["ping.throughVpn"] = 0 end inputTable["ping.pingAddress"] = inputTable["ping.ip"] if(string.find (inputTable["ping.pingAddress"],"[^%w.-:]")) then NextPage = "diagnostics_ipv6" statusMessage = "Ping failed for " .. inputTable["ping.pingAddress"] web.goToPage(NextPage, true, true) else errorFlag, statusCode = ping.pingAddress (inputTable) if (errorFlag ~= "OK") then NextPage = "diagnostics_ipv6" end statusMessage = db.getAttribute ("stringsMap", "stringId", statusCode, LANGUAGE) or statusCode web.goToPage(NextPage, true, true) end elseif (ButtonType and ButtonType == "traceroute") then local inputTable = web.cgiToLuaTable(cgi) local options = " 2>&1 | grep -v argc" globalCmd = "2" -- join fields local ipToTraceRoute = inputTable["ping.ip"] if(string.find (ipToTraceRoute,"[^%w.-:]")) then NextPage = "diagnostics_ipv6" statusMessage = "traceroute failed for " .. ipToTraceRoute web.goToPage(NextPage, true, true) else -- trace route local traceRouteProg = "" if(ipToTraceRoute:find(".")) then traceRouteProg = db.getAttribute("environment", "name", "TRACEROUTE_PROGRAM", "value") elseif(ipToTraceRoute:find(":")) then traceRouteProg = db.getAttribute("environment", "name", "TRACEROUTE6_PROGRAM", "value") end if (traceRouteProg ~= "") then util.appendDebugOut(traceRouteProg .. ipToTraceRoute) local cmd = traceRouteProg .. " " .. ipToTraceRoute .. options globalCmdOutput = runShellCmd(cmd) end statusMessage = "Traceroute To " .. ipToTraceRoute .. "..." web.goToPage(NextPage, true, true) end elseif (ButtonType and ButtonType == "dnslookup") then local internetNameToNsLookup = cgi.nslookup if(string.find (internetNameToNsLookup,"[^%w.-:]")) then NextPage = "diagnostics_ipv6" statusMessage = "DNS Lookup failed for " .. internetNameToNsLookup web.goToPage(NextPage, true, true) else -- dnslookup local nsLookupProg = db.getAttribute("environment", "name", "NSLOOKUP_PROGRAM", "value") local nsLookupFile = db.getAttribute("environment", "name", "PING_FILE_NAME", "value") util.appendDebugOut("Exec = " .. os.execute(nsLookupProg .. " " .. internetNameToNsLookup .. " > " .. nsLookupFile)) statusMessage = "DNS Lookup for " .. internetNameToNsLookup web.goToPage(NextPage, true, true) end elseif (ButtonType and ButtonType == "ipv4RouteDisplay") then -- ipv4 routing Display local routeProg = db.getAttribute("environment", "name", "ROUTE_PROGRAM", "value") local routeFile = db.getAttribute("environment", "name", "PING_FILE_NAME", "value") util.appendDebugOut("Exec = " .. os.execute(routeProg .. " > " .. routeFile)) statusMessage = "Route Display..." web.goToPage(NextPage, true, true) elseif (ButtonType and ButtonType == "ipv6RouteDisplay") then -- ipv6 routing Display local routeFile = db.getAttribute("environment", "name", "PING_FILE_NAME", "value") local route6Prog = db.getAttribute("environment", "name", "ROUTE6_PROGRAM", "value") util.appendDebugOut("Exec = " .. os.execute(route6Prog .. " > " .. routeFile)) statusMessage = "Route Display..." web.goToPage(NextPage, true, true) elseif (ButtonType and ButtonType == "reboot") then -- if not allowed to edit if (ACCESS_LEVEL ~= 0) then errorFlag, statusCode = -1, "ADMIN_REQD" NextPage = "diagnostics_ipv6" statusMessage = db.getAttribute("stringsMap", "stringId", statusCode, LANGUAGE) or statusCode end web.goToPage(NextPage, true, true) else ?>