diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua index 518806724..2378a999a 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl.lua @@ -4,6 +4,7 @@ local sys = api.sys local has_chnlist = api.fs.access("/usr/share/passwall/rules/chnlist") m = Map(appname) +api.set_apply_on_parse(m) s = m:section(TypedSection, "global", translate("ACLs"), "" .. translate("ACLs is a tools which used to designate specific IP proxy mode.") .. "") s.anonymous = true diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua index 54ab9f44d..215543a09 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/acl_config.lua @@ -6,6 +6,7 @@ local has_xray = api.finded_com("xray") local has_chnlist = api.fs.access("/usr/share/passwall/rules/chnlist") m = Map(appname) +api.set_apply_on_parse(m) local nodes_table = {} for k, e in ipairs(api.get_valid_nodes()) do diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua index 4fb6863d2..0e1d89df8 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/app_update.lua @@ -2,6 +2,7 @@ local api = require "luci.passwall.api" local appname = api.appname m = Map(appname) +api.set_apply_on_parse(m) -- [[ App Settings ]]-- s = m:section(TypedSection, "global_app", translate("App Update"), diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua index e697ba833..23df38fd6 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/global.lua @@ -7,6 +7,7 @@ local has_xray = api.finded_com("xray") local has_chnlist = api.fs.access("/usr/share/passwall/rules/chnlist") m = Map(appname) +api.set_apply_on_parse(m) local nodes_table = {} for k, e in ipairs(api.get_valid_nodes()) do diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua index 416fbd53a..9c72fd0de 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/haproxy.lua @@ -16,6 +16,7 @@ for k, e in ipairs(api.get_valid_nodes()) do end m = Map(appname) +api.set_apply_on_parse(m) -- [[ Haproxy Settings ]]-- s = m:section(TypedSection, "global_haproxy") diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua index 0ff297abb..17f7cf4a7 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_config.lua @@ -10,6 +10,7 @@ end m = Map(appname, translate("Node Config")) m.redirect = api.url() +api.set_apply_on_parse(m) s = m:section(NamedSection, arg[1], "nodes", "") s.addremove = false diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua index be71197e4..fca2f5cf1 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_list.lua @@ -4,6 +4,7 @@ local sys = api.sys local datatypes = api.datatypes m = Map(appname) +api.set_apply_on_parse(m) -- [[ Other Settings ]]-- s = m:section(TypedSection, "global_other") diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua index 0838d86b9..5024e871c 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe.lua @@ -30,6 +30,7 @@ if has_trojan_go then end m = Map(appname) +api.set_apply_on_parse(m) -- [[ Subscribe Settings ]]-- s = m:section(TypedSection, "global_subscribe", "") diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua index 62fd2ee8f..203f2e5ea 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/node_subscribe_config.lua @@ -32,6 +32,7 @@ end m = Map(appname) m.redirect = api.url("node_subscribe") +api.set_apply_on_parse(m) s = m:section(NamedSection, arg[1]) s.addremove = false diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua index 752bcba6b..24475f309 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/other.lua @@ -7,6 +7,7 @@ local has_fw3 = api.is_finded("fw3") local has_fw4 = api.is_finded("fw4") m = Map(appname) +api.set_apply_on_parse(m) -- [[ Delay Settings ]]-- s = m:section(TypedSection, "global_delay", translate("Delay Settings")) diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua index f15133574..a90495ccc 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/rule.lua @@ -3,6 +3,8 @@ local appname = api.appname local has_xray = api.finded_com("xray") m = Map(appname) +api.set_apply_on_parse(m) + -- [[ Rule Settings ]]-- s = m:section(TypedSection, "global_rules", translate("Rule status")) s.anonymous = true diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua index 452d9bb35..6eff890d4 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/rule_list.lua @@ -7,6 +7,7 @@ local path = string.format("/usr/share/%s/rules/", appname) local route_hosts_path = "/etc/" m = Map(appname) +api.set_apply_on_parse(m) -- [[ Rule List Settings ]]-- s = m:section(TypedSection, "global_rules") diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua index 2e84e907b..a4c0be587 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/shunt_rules.lua @@ -4,6 +4,7 @@ local datatypes = api.datatypes m = Map(appname, "Xray " .. translate("Shunt Rule")) m.redirect = api.url() +api.set_apply_on_parse(m) s = m:section(NamedSection, arg[1], "shunt_rules", "") s.addremove = false diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua b/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua index 784b4e11c..14b096619 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/client/socks_config.lua @@ -4,6 +4,7 @@ local uci = api.uci local has_xray = api.finded_com("xray") m = Map(appname) +api.set_apply_on_parse(m) local nodes_table = {} for k, e in ipairs(api.get_valid_nodes()) do diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua index d18b75444..5491e4249 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/index.lua @@ -1,6 +1,7 @@ local api = require "luci.passwall.api" m = Map("passwall_server", translate("Server-Side")) +api.set_apply_on_parse(m) t = m:section(NamedSection, "global", "global") t.anonymous = true diff --git a/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua b/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua index b4371db33..7c462591b 100644 --- a/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua +++ b/luci-app-passwall/luasrc/model/cbi/passwall/server/user.lua @@ -4,6 +4,7 @@ local types_dir = "/usr/lib/lua/luci/model/cbi/passwall/server/type/" m = Map("passwall_server", translate("Server Config")) m.redirect = api.url("server") +api.set_apply_on_parse(m) s = m:section(NamedSection, arg[1], "user", "") s.addremove = false diff --git a/luci-app-passwall/luasrc/passwall/api.lua b/luci-app-passwall/luasrc/passwall/api.lua index 309bc6ef3..61ded7613 100644 --- a/luci-app-passwall/luasrc/passwall/api.lua +++ b/luci-app-passwall/luasrc/passwall/api.lua @@ -973,6 +973,22 @@ function to_check_self() } end +function is_js_luci() + return sys.call('[ -f "/www/luci-static/resources/uci.js" ]') == 0 +end + +function set_apply_on_parse(map) + if is_js_luci() == true then + map.apply_on_parse = false + map.on_after_apply = function(self) + if self.redirect then + os.execute("sleep 1") + luci.http.redirect(self.redirect) + end + end + end +end + function luci_types(id, m, s, type_name, option_prefix) local rewrite_option_table = {} for key, value in pairs(s.fields) do