luci-app-shadowsocks-libev: enumerate ifnames with sys.net.devices()
[project/luci.git] / applications / luci-app-shadowsocks-libev / luasrc / model / shadowsocks-libev.lua
index 650ff63..7ba6b40 100644 (file)
@@ -3,6 +3,7 @@
 
 local _up = getfenv(3)
 local ut = require("luci.util")
+local sys = require("luci.sys")
 local ds = require("luci.dispatcher")
 local nw = require("luci.model.network")
 nw.init()
@@ -23,13 +24,16 @@ end
 
 function values_redir(o, xmode)
        o.map.uci.foreach("shadowsocks-libev", "ss_redir", function(sdata)
+               local disabled = ucival_to_bool(sdata["disabled"])
                local sname = sdata[".name"]
                local mode = sdata["mode"] or "tcp_only"
-               if mode and mode:find(xmode) then
+               if not disabled and mode:find(xmode) then
                        local desc = "%s - %s" % {sname, mode}
                        o:value(sname, desc)
                end
        end)
+       o:value("", "<unset>")
+       o.default = ""
 end
 
 function values_serverlist(o)
@@ -53,10 +57,8 @@ function values_ipaddr(o)
 end
 
 function values_ifnames(o)
-       for _, v in ipairs(nw:get_interfaces()) do
-               if v.dev then
-                       o:value(v.dev.name)
-               end
+       for _, v in ipairs(sys.net.devices()) do
+               o:value(v)
        end
 end