1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
--[[
LuCI - Lua Configuration Interface
Copyright 2008 Steven Barth <steven@midlink.org>
Copyright 2011 Jo-Philipp Wich <xm@subsignal.org>
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$
]]--
module("luci.controller.admin.status", package.seeall)
function index()
luci.i18n.loadc("base")
local i18n = luci.i18n.translate
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).leaf = true
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", "load"}, template("admin_status/load"), i18n("Realtime Load"), 7).leaf = true
entry({"admin", "status", "load_status"}, call("action_load")).leaf = true
entry({"admin", "status", "bandwidth"}, template("admin_status/bandwidth"), i18n("Realtime Traffic"), 8).leaf = true
entry({"admin", "status", "bandwidth_status"}, call("action_bandwidth")).leaf = true
entry({"admin", "status", "connections"}, template("admin_status/connections"), i18n("Realtime Connections"), 9).leaf = true
entry({"admin", "status", "connections_status"}, call("action_connections")).leaf = true
end
function action_syslog()
local syslog = luci.sys.syslog()
luci.template.render("admin_status/syslog", {syslog=syslog})
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"
if fs.access("/var/lib/luci-bwc/connections") then
luci.http.prepare_content("application/json")
local bwc = io.popen("luci-bwc -c 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
|