luci-app-shadowsocks-libev: fix setting boolean option
[project/luci.git] / applications / luci-app-shadowsocks-libev / luasrc / model / cbi / shadowsocks-libev / rules.lua
index 1a3dcb8..1f5a9d2 100644 (file)
@@ -19,7 +19,12 @@ m = Map("shadowsocks-libev",
 local sdata = m:get('ss_rules')
 if not sdata then
        m:set('ss_rules', nil, 'ss_rules')
-       m:set('ss_rules', 'disabled', true)
+       m:set('ss_rules', 'disabled', "1")
+end
+
+function src_dst_option(s, ...)
+       local o = s:taboption(...)
+       o.datatype = "or(ip4addr,cidr4)"
 end
 
 s = m:section(NamedSection, "ss_rules", "ss_rules")
@@ -39,19 +44,23 @@ ss.values_redir(o, 'udp')
 
 o = s:taboption('general', ListValue, "local_default",
        translate("Local-out default"),
-       translate("Default action for locally generated packets"))
+       translate("Default action for locally generated TCP packets"))
 ss.values_actions(o)
+o = s:taboption('general', DynamicList, "ifnames",
+       translate("Ingress interfaces"),
+       translate("Only apply rules on packets from these network interfaces"))
+ss.values_ifnames(o)
 s:taboption('general', Value, "ipt_args",
        translate("Extra arguments"),
        translate("Passes additional arguments to iptables. Use with care!"))
 
-s:taboption('srcip', DynamicList, "src_ips_bypass",
+src_dst_option(s, 'srcip', DynamicList, "src_ips_bypass",
        translate("Src ip bypass"),
        translate("Bypass redir action for packets with source addresses in this list"))
-s:taboption('srcip', DynamicList, "src_ips_forward",
+src_dst_option(s, 'srcip', DynamicList, "src_ips_forward",
        translate("Src ip forward"),
        translate("Go through redir action for packets with source addresses in this list"))
-s:taboption('srcip', DynamicList, "src_ips_checkdst",
+src_dst_option(s, 'srcip', DynamicList, "src_ips_checkdst",
        translate("Src ip checkdst"),
        translate("Continue to have dst address checked for packets with source addresses in this list"))
 o = s:taboption('srcip', ListValue, "src_default",
@@ -59,10 +68,10 @@ o = s:taboption('srcip', ListValue, "src_default",
        translate("Default action for packets whose source addresses do not match any of the source ip list"))
 ss.values_actions(o)
 
-s:taboption('dstip', DynamicList, "dst_ips_bypass",
+src_dst_option(s, 'dstip', DynamicList, "dst_ips_bypass",
        translate("Dst ip bypass"),
        translate("Bypass redir action for packets with destination addresses in this list"))
-s:taboption('dstip', DynamicList, "dst_ips_forward",
+src_dst_option(s, 'dstip', DynamicList, "dst_ips_forward",
        translate("Dst ip forward"),
        translate("Go through redir action for packets with destination addresses in this list"))
 
@@ -74,5 +83,9 @@ s:taboption('dstip', FileBrowser, "dst_ips_forward_file",
        translate("Dst ip forward file"),
        translate("File containing ip addresses for the purposes as with <em>Dst ip forward</em>"))
 o.datatype = "file"
+o = s:taboption('dstip', ListValue, "dst_default",
+       translate("Dst default"),
+       translate("Default action for packets whose destination addresses do not match any of the destination ip list"))
+ss.values_actions(o)
 
 return m