+end
+
+function action_dmesg()
+ local dmesg = luci.sys.dmesg()
+ luci.template.render("admin_status/dmesg", {dmesg=dmesg})
+end
+
+function action_iptables()
+ 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.http.redirect(
+ luci.dispatcher.build_url("admin", "status", "iptables")
+ )
+ else
+ luci.template.render("admin_status/iptables")
+ end
+end
+
+function action_bandwidth()
+ local path = luci.dispatcher.context.requestpath
+ local iface = path[#path]
+
+ local fs = require "luci.fs"
+ if fs.access("/var/lib/luci-bwc/if/%s" % iface) then
+ 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
+
+ return
+ end
+
+ luci.http.status(404, "No data available")
+end
+
+function action_load()
+ local fs = require "luci.fs"
+ if fs.access("/var/lib/luci-bwc/load") then
+ 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
+
+ return
+ end
+
+ luci.http.status(404, "No data available")
+end
+
+function action_connections()
+ local fs = require "luci.fs"
+ local sys = require "luci.sys"
+
+ luci.http.prepare_content("application/json")
+
+ luci.http.write("{ connections: ")
+ luci.http.write_json(sys.net.conntrack())
+
+ if fs.access("/var/lib/luci-bwc/connections") then
+ 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
+ end
+
+ luci.http.write(" }")
+end