diff options
author | Yousong Zhou <yszhou4tech@gmail.com> | 2017-07-24 13:00:37 +0800 |
---|---|---|
committer | Yousong Zhou <yszhou4tech@gmail.com> | 2017-07-24 14:53:36 +0800 |
commit | 06ad394dde572878c2a573e8ef81b94ae706b5d5 (patch) | |
tree | 23f9e8570e2eae2b608b8a6fc691656ef910dfd6 /applications/luci-app-shadowsocks-libev/luasrc | |
parent | 8f62b28948f8b24f1eb8239074a19d868a02cad6 (diff) |
luci-app-shadowsocks-libev: auto update instance running state
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
Diffstat (limited to 'applications/luci-app-shadowsocks-libev/luasrc')
3 files changed, 34 insertions, 9 deletions
diff --git a/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua b/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua index e191e59bb..05d12e38b 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua +++ b/applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua @@ -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 diff --git a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua index 15e57df6b..62a90fb41 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua +++ b/applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua @@ -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 diff --git a/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm index 67e1c4f72..219d89b07 100644 --- a/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm +++ b/applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm @@ -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> |