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"},
|
||||
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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue