From: Jo-Philipp Wich Date: Wed, 24 Nov 2010 20:09:37 +0000 (+0000) Subject: modules/admin-full: add diagnostics page with ping / traceroute / nslookup X-Git-Tag: 0.10.0~372 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=23da14d3031ff796adedfd8bf122b4dae48fcdbc;p=oweals%2Fluci.git modules/admin-full: add diagnostics page with ping / traceroute / nslookup --- diff --git a/modules/admin-full/luasrc/controller/admin/network.lua b/modules/admin-full/luasrc/controller/admin/network.lua index f28f6077c..f2f629b6d 100644 --- a/modules/admin-full/luasrc/controller/admin/network.lua +++ b/modules/admin-full/luasrc/controller/admin/network.lua @@ -111,6 +111,19 @@ function index() page.title = i18n("Static Routes") page.order = 50 + page = node("admin", "network", "diagnostics") + page.target = template("admin_network/diagnostics") + page.title = i18n("Diagnostics") + page.order = 60 + + page = entry({"admin", "network", "diag_ping"}, call("diag_ping"), nil) + page.leaf = true + + page = entry({"admin", "network", "diag_nslookup"}, call("diag_nslookup"), nil) + page.leaf = true + + page = entry({"admin", "network", "diag_traceroute"}, call("diag_traceroute"), nil) + page.leaf = true end function wifi_join() @@ -371,3 +384,40 @@ function lease_status() luci.http.prepare_content("application/json") luci.http.write_json(rv) end + +function diag_command(cmd) + local path = luci.dispatcher.context.requestpath + local addr = path[#path] + + if addr and addr:match("^[a-zA-Z0-9%-%.:_]+$") then + luci.http.prepare_content("text/plain") + + local util = io.popen(cmd % addr) + if util then + while true do + local ln = util:read("*l") + if not ln then break end + luci.http.write(ln) + luci.http.write("\n") + end + + util:close() + end + + return + end + + luci.http.status(500, "Bad address") +end + +function diag_ping() + diag_command("ping -c 5 -W 1 %q 2>&1") +end + +function diag_traceroute() + diag_command("traceroute -q 1 -w 1 -n %q 2>&1") +end + +function diag_nslookup() + diag_command("nslookup %q 2>&1") +end diff --git a/modules/admin-full/luasrc/view/admin_network/diagnostics.htm b/modules/admin-full/luasrc/view/admin_network/diagnostics.htm new file mode 100644 index 000000000..304e71741 --- /dev/null +++ b/modules/admin-full/luasrc/view/admin_network/diagnostics.htm @@ -0,0 +1,93 @@ +<%# +LuCI - Lua Configuration Interface +Copyright 2010 Jo-Philipp Wich + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +$Id$ + +-%> + +<%+header%> + + + + +
"> +
+

<%:Diagnostics%>

+ +
+ <%:Network Utilities%> + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +

+ +
+
+ + +
+ +<%+footer%>