summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHannu Nyman <hannu.nyman@iki.fi>2017-07-24 14:57:07 +0300
committerGitHub <noreply@github.com>2017-07-24 14:57:07 +0300
commit844a741e7ea29dc460249774c35c34b20c463877 (patch)
treec59926b38796b9b85e5ea060fd358b65fa81531f
parent3f0aead2eab34254e6688d49c69d6b9c63dcfecd (diff)
parent06ad394dde572878c2a573e8ef81b94ae706b5d5 (diff)
Merge pull request #1249 from yousong/shadowsocks-libev
luci-app-shadowsocks-libev: auto update instance running state
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/controller/shadowsocks-libev.lua11
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/instances.lua9
-rw-r--r--applications/luci-app-shadowsocks-libev/luasrc/view/shadowsocks-libev/add_instance.htm23
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>