luci-app-shadowsocks-libev: auto update instance running state
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
parent
8f62b28948
commit
06ad394dde
3 changed files with 34 additions and 9 deletions
|
@ -19,4 +19,15 @@ function index()
|
||||||
entry({"admin", "services", "shadowsocks-libev", "rules"},
|
entry({"admin", "services", "shadowsocks-libev", "rules"},
|
||||||
cbi("shadowsocks-libev/rules"),
|
cbi("shadowsocks-libev/rules"),
|
||||||
_("Redir Rules"), 30).leaf = true
|
_("Redir Rules"), 30).leaf = true
|
||||||
|
|
||||||
|
entry({"admin", "services", "shadowsocks-libev", "status"}, call("ss_status"), nil).leaf = true
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
function ss_status()
|
||||||
|
local ut = require "luci.util"
|
||||||
|
local rv = ut.ubus("service", "list", {name = "shadowsocks-libev"})["shadowsocks-libev"] or {_=0}
|
||||||
|
|
||||||
|
luci.http.prepare_content("application/json")
|
||||||
|
luci.http.write_json(rv)
|
||||||
end
|
end
|
||||||
|
|
|
@ -15,19 +15,10 @@ m = Map("shadowsocks-libev",
|
||||||
|
|
||||||
local instances = {}
|
local instances = {}
|
||||||
local cfgtypes = { "ss_local", "ss_redir", "ss_server", "ss_tunnel" }
|
local cfgtypes = { "ss_local", "ss_redir", "ss_server", "ss_tunnel" }
|
||||||
local instances_data = ut.ubus("service", "list", {name = "shadowsocks-libev"})["shadowsocks-libev"]
|
|
||||||
if instances_data ~= nil then
|
|
||||||
instances_data = instances_data["instances"]
|
|
||||||
end
|
|
||||||
|
|
||||||
for sname, sdata in pairs(m:get()) do
|
for sname, sdata in pairs(m:get()) do
|
||||||
local key, value = ss.cfgvalue_overview(sdata)
|
local key, value = ss.cfgvalue_overview(sdata)
|
||||||
if key ~= nil then
|
if key ~= nil then
|
||||||
if instances_data and instances_data[key] and instances_data[key]["running"] then
|
|
||||||
value["running"] = "yes"
|
|
||||||
else
|
|
||||||
value["running"] = "no"
|
|
||||||
end
|
|
||||||
instances[key] = value
|
instances[key] = value
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,3 +20,26 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
<script type="text/javascript">//<![CDATA[
|
||||||
|
XHR.poll(5, '<%=url('admin/services/shadowsocks-libev/status')%>', null,
|
||||||
|
function(x, st)
|
||||||
|
{
|
||||||
|
var names = [
|
||||||
|
<%-
|
||||||
|
for _, name in ipairs(self:cfgsections()) do
|
||||||
|
write("%q," % name)
|
||||||
|
end
|
||||||
|
-%>
|
||||||
|
];
|
||||||
|
var instances = st["instances"] || {};
|
||||||
|
for (var i = 0, len = names.length; i < len; i++) {
|
||||||
|
var name = names[i];
|
||||||
|
var el = document.getElementById('cbi-table-' + name + '-running');
|
||||||
|
if (el) {
|
||||||
|
var running = instances.hasOwnProperty(name)? instances[name].running : false;
|
||||||
|
el.innerText = running ? 'yes' : 'no';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
//]]></script>
|
||||||
|
|
Loading…
Reference in a new issue