luci-app-shadowsocks-libev: auto update instance running state

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
This commit is contained in:
Yousong Zhou 2017-07-24 13:00:37 +08:00
parent 8f62b28948
commit 06ad394dde
3 changed files with 34 additions and 9 deletions

View file

@ -19,4 +19,15 @@ function index()
entry({"admin", "services", "shadowsocks-libev", "rules"},
cbi("shadowsocks-libev/rules"),
_("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

View file

@ -15,19 +15,10 @@ m = Map("shadowsocks-libev",
local instances = {}
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
local key, value = ss.cfgvalue_overview(sdata)
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
end
end

View file

@ -20,3 +20,26 @@
</tr>
</table>
</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>