X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fadmin-full%2Fluasrc%2Fcontroller%2Fadmin%2Fstatus.lua;h=89ebda735304dfd2f28bf1c5bddcd5917f376890;hp=55bba2f3811fa4d0f359b27215534c4bad34578c;hb=7021120936575df16a3af6606399504d42e73531;hpb=f5a760168b3dba6b9b0d5d93ab6b6ed4e229cb73 diff --git a/modules/admin-full/luasrc/controller/admin/status.lua b/modules/admin-full/luasrc/controller/admin/status.lua index 55bba2f38..89ebda735 100644 --- a/modules/admin-full/luasrc/controller/admin/status.lua +++ b/modules/admin-full/luasrc/controller/admin/status.lua @@ -2,6 +2,7 @@ LuCI - Lua Configuration Interface Copyright 2008 Steven Barth +Copyright 2011 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. @@ -11,20 +12,33 @@ You may obtain a copy of the License at $Id$ ]]-- + module("luci.controller.admin.status", package.seeall) function index() - luci.i18n.loadc("base") - local i18n = luci.i18n.translate + entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true + entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1) + entry({"admin", "status", "iptables"}, call("action_iptables"), _("Firewall"), 2).leaf = true + entry({"admin", "status", "routes"}, template("admin_status/routes"), _("Routes"), 3) + entry({"admin", "status", "syslog"}, call("action_syslog"), _("System Log"), 4) + entry({"admin", "status", "dmesg"}, call("action_dmesg"), _("Kernel Log"), 5) + entry({"admin", "status", "processes"}, cbi("admin_status/processes"), _("Processes"), 6) + + entry({"admin", "status", "realtime"}, alias("admin", "status", "realtime", "load"), _("Realtime Graphs"), 7) + + entry({"admin", "status", "realtime", "load"}, template("admin_status/load"), _("Load"), 1).leaf = true + entry({"admin", "status", "realtime", "load_status"}, call("action_load")).leaf = true + + entry({"admin", "status", "realtime", "bandwidth"}, template("admin_status/bandwidth"), _("Traffic"), 2).leaf = true + entry({"admin", "status", "realtime", "bandwidth_status"}, call("action_bandwidth")).leaf = true + + entry({"admin", "status", "realtime", "wireless"}, template("admin_status/wireless"), _("Wireless"), 3).leaf = true + entry({"admin", "status", "realtime", "wireless_status"}, call("action_wireless")).leaf = true - entry({"admin", "status"}, template("admin_status/index"), i18n("Status"), 20).index = true - entry({"admin", "status", "interfaces"}, template("admin_status/interfaces"), i18n("Interfaces"), 1) - entry({"admin", "status", "iptables"}, call("action_iptables"), i18n("Firewall"), 2) - entry({"admin", "status", "conntrack"}, template("admin_status/conntrack"), i18n("Active Connections"), 3) - entry({"admin", "status", "routes"}, template("admin_status/routes"), i18n("Routes"), 4) - entry({"admin", "status", "syslog"}, call("action_syslog"), i18n("System Log"), 5) - entry({"admin", "status", "dmesg"}, call("action_dmesg"), i18n("Kernel Log"), 6) + entry({"admin", "status", "realtime", "connections"}, template("admin_status/connections"), _("Connections"), 4).leaf = true + entry({"admin", "status", "realtime", "connections_status"}, call("action_connections")).leaf = true + entry({"admin", "status", "nameinfo"}, call("action_nameinfo")).leaf = true end function action_syslog() @@ -38,13 +52,17 @@ function action_dmesg() end function action_iptables() - if luci.http.formvalue("zero") == "1" then - luci.util.exec("iptables -Z") + if luci.http.formvalue("zero") then + if luci.http.formvalue("zero") == "6" then + luci.util.exec("ip6tables -Z") + else + luci.util.exec("iptables -Z") + end luci.http.redirect( luci.dispatcher.build_url("admin", "status", "iptables") ) elseif luci.http.formvalue("restart") == "1" then - luci.util.exec("/etc/init.d/firewall restart") + luci.util.exec("/etc/init.d/firewall reload") luci.http.redirect( luci.dispatcher.build_url("admin", "status", "iptables") ) @@ -52,3 +70,95 @@ function action_iptables() luci.template.render("admin_status/iptables") end end + +function action_bandwidth(iface) + luci.http.prepare_content("application/json") + + local bwc = io.popen("luci-bwc -i %q 2>/dev/null" % iface) + if bwc then + luci.http.write("[") + + while true do + local ln = bwc:read("*l") + if not ln then break end + luci.http.write(ln) + end + + luci.http.write("]") + bwc:close() + end +end + +function action_wireless(iface) + luci.http.prepare_content("application/json") + + local bwc = io.popen("luci-bwc -r %q 2>/dev/null" % iface) + if bwc then + luci.http.write("[") + + while true do + local ln = bwc:read("*l") + if not ln then break end + luci.http.write(ln) + end + + luci.http.write("]") + bwc:close() + end +end + +function action_load() + luci.http.prepare_content("application/json") + + local bwc = io.popen("luci-bwc -l 2>/dev/null") + if bwc then + luci.http.write("[") + + while true do + local ln = bwc:read("*l") + if not ln then break end + luci.http.write(ln) + end + + luci.http.write("]") + bwc:close() + end +end + +function action_connections() + local sys = require "luci.sys" + + luci.http.prepare_content("application/json") + + luci.http.write("{ connections: ") + luci.http.write_json(sys.net.conntrack()) + + local bwc = io.popen("luci-bwc -c 2>/dev/null") + if bwc then + luci.http.write(", statistics: [") + + while true do + local ln = bwc:read("*l") + if not ln then break end + luci.http.write(ln) + end + + luci.http.write("]") + bwc:close() + end + + luci.http.write(" }") +end + +function action_nameinfo(...) + local i + local rv = { } + for i = 1, select('#', ...) do + local addr = select(i, ...) + local fqdn = nixio.getnameinfo(addr) + rv[addr] = fqdn or (addr:match(":") and "[%s]" % addr or addr) + end + + luci.http.prepare_content("application/json") + luci.http.write_json(rv) +end