&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"] local cmd = "" 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) if (inputTable["ping.localGw"] ~= "Default") then gwToTraceRoute = db.getAttribute("networkInterface", "logicalIfName", inputTable["ping.localGw"], "VirtualIfName") cmd = traceRouteProg .. " -i " .. gwToTraceRoute .. " " .. ipToTraceRoute .. options else cmd = traceRouteProg .. " " .. ipToTraceRoute .. options end 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) elseif (ButtonType and ButtonType == "config") then require "teamf1lualib/nimfView" local inputTable = web.cgiToLuaTable (cgi) errorFlag, statusCode = nimfView.connResetConfig (inputTable, "1", "edit") -- save db if no error if (errorFlag == "OK") then STATUS_CLASS = SUCCESS_CLASS db.save() elseif (errorFlag == "ERROR") then STATUS_CLASS = ERROR_CLASS else STATUS_CLASS = INFO_CLASS end statusMessage = db.getAttribute ("stringsMap", "stringId", statusCode, LANGUAGE) or statusCode web.goToPage (NextPage, true, true) else configRow = db.getRow ("scheduleReboot","_ROWID_", "1") or {} ?>