From 152220f3276aab37b1f09e47420152b5bcc2d5ec Mon Sep 17 00:00:00 2001 From: gitea-action Date: Sat, 11 Jan 2025 15:30:20 +0800 Subject: [PATCH] luci-app-passwall: sync upstream last commit: https://github.com/xiaorouji/openwrt-passwall/commit/04f1a33a4173208503eb986fa2eb67c816aaa690 --- .../cbi/passwall/client/node_subscribe.lua | 19 ++++++++-- luci-app-passwall/po/zh-cn/passwall.po | 3 ++ .../root/usr/share/passwall/0_default_config | 2 + .../root/usr/share/passwall/subscribe.lua | 37 +++++++++++++++++-- patch-luci-app-passwall.patch | 2 +- 5 files changed, 56 insertions(+), 7 deletions(-) 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 dbc5634d0..79da4f05f 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 @@ -50,6 +50,9 @@ s = m:section(TypedSection, "global_subscribe", "") s.anonymous = true function m.commit_handler(self) + if self.no_commit then + return + end self.uci:foreach(appname, "subscribe_list", function(e) self:del(e[".name"], "md5") end) @@ -122,13 +125,15 @@ o:value("ipv6_only", translate("IPv6 Only")) o = s:option(Button, "_stop", translate("Delete All Subscribe Node")) o.inputstyle = "remove" function o.write(e, e) - luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate > /dev/null 2>&1") + luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate all-node > /dev/null 2>&1") + m.no_commit = true end o = s:option(Button, "_update", translate("Manual subscription All")) o.inputstyle = "apply" function o.write(t, n) luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start > /dev/null 2>&1 &") + m.no_commit = true luci.http.redirect(api.url("log")) end @@ -161,17 +166,23 @@ o.validate = function(self, value, t) end end -o = s:option(DummyValue, "_node_count") +o = s:option(DummyValue, "_node_count", translate("Subscribe Info")) o.rawhtml = true o.cfgvalue = function(t, n) local remark = m:get(n, "remark") or "" + local str = m:get(n, "rem_traffic") or "" + local expired_date = m:get(n, "expired_date") or "" + if expired_date ~= "" then + str = str .. (str ~= "" and "/" or "") .. expired_date + end + str = str ~= "" and "
" .. str or "" local num = 0 m.uci:foreach(appname, "nodes", function(s) if s["add_from"] ~= "" and s["add_from"] == remark then num = num + 1 end end) - return string.format("%s", remark .. " " .. translate("Node num") .. ": " .. num, num) + return string.format("%s%s", translate("Node num") .. ": " .. num, str) end o = s:option(Value, "url", translate("Subscribe URL")) @@ -183,12 +194,14 @@ o.inputstyle = "remove" function o.write(t, n) local remark = m:get(n, "remark") or "" luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua truncate " .. remark .. " > /dev/null 2>&1") + m.no_commit = true end o = s:option(Button, "_update", translate("Manual subscription")) o.inputstyle = "apply" function o.write(t, n) luci.sys.call("lua /usr/share/" .. appname .. "/subscribe.lua start " .. n .. " > /dev/null 2>&1 &") + m.no_commit = true luci.http.redirect(api.url("log")) end diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po index 92144fb22..cdf1237bf 100644 --- a/luci-app-passwall/po/zh-cn/passwall.po +++ b/luci-app-passwall/po/zh-cn/passwall.po @@ -1021,6 +1021,9 @@ msgstr "节点订阅" msgid "Subscribe Remark" msgstr "订阅备注(机场)" +msgid "Subscribe Info" +msgstr "订阅信息" + msgid "Subscribe URL" msgstr "订阅网址" diff --git a/luci-app-passwall/root/usr/share/passwall/0_default_config b/luci-app-passwall/root/usr/share/passwall/0_default_config index 427dc3a80..0bb5ea790 100644 --- a/luci-app-passwall/root/usr/share/passwall/0_default_config +++ b/luci-app-passwall/root/usr/share/passwall/0_default_config @@ -85,6 +85,8 @@ config global_app config global_subscribe option filter_keyword_mode '1' + list filter_discard_list '距离下次重置剩余' + list filter_discard_list '套餐到期' list filter_discard_list '过期时间' list filter_discard_list '剩余流量' list filter_discard_list 'QQ群' diff --git a/luci-app-passwall/root/usr/share/passwall/subscribe.lua b/luci-app-passwall/root/usr/share/passwall/subscribe.lua index f8ad658ce..931222e5e 100755 --- a/luci-app-passwall/root/usr/share/passwall/subscribe.lua +++ b/luci-app-passwall/root/usr/share/passwall/subscribe.lua @@ -394,6 +394,24 @@ local function trim(text) return (sgsub(text, "^%s*(.-)%s*$", "%1")) end +-- 取机场信息(剩余流量、到期时间) +local subscribe_info = {} +local function get_subscribe_info(cfgid, value) + if type(cfgid) ~= "string" or cfgid == "" or type(value) ~= "string" then + return + end + value = value:gsub("%s+", "") + local expired_date = value:match("套餐到期:(.+)") + local rem_traffic = value:match("剩余流量:(.+)") + subscribe_info[cfgid] = subscribe_info[cfgid] or {expired_date = "", rem_traffic = ""} + if expired_date then + subscribe_info[cfgid]["expired_date"] = expired_date + end + if rem_traffic then + subscribe_info[cfgid]["rem_traffic"] = rem_traffic + end +end + -- 处理数据 local function processData(szType, content, add_mode, add_from) --log(content, add_mode, add_from) @@ -1310,7 +1328,7 @@ local function truncate_nodes(add_from) end) if add_from then uci:foreach(appname, "subscribe_list", function(o) - if o.remark == add_from then + if add_from == "all-node" or add_from == o.remark then uci:delete(appname, o['.name'], "md5") end end) @@ -1469,6 +1487,16 @@ local function update_node(manual) end end end + -- 更新机场信息 + for cfgid, info in pairs(subscribe_info) do + for key, value in pairs(info) do + if value ~= "" then + uci:set(appname, cfgid, key, value) + else + uci:delete(appname, cfgid, key) + end + end + end api.uci_save(uci, appname, true) if next(CONFIG) then @@ -1500,7 +1528,7 @@ local function update_node(manual) luci.sys.call("/etc/init.d/" .. appname .. " restart > /dev/null 2>&1 &") end -local function parse_link(raw, add_mode, add_from) +local function parse_link(raw, add_mode, add_from, cfgid) if raw and #raw > 0 then local nodes, szType local node_list = {} @@ -1562,6 +1590,9 @@ local function parse_link(raw, add_mode, add_from) else tinsert(node_list, result) end + if add_mode == "2" then + get_subscribe_info(cfgid, result.remarks) + end end end, function (err) --log(err) @@ -1665,7 +1696,7 @@ local execute = function() log('订阅:【' .. remark .. '】没有变化,无需更新。') else os.remove("/tmp/" .. cfgid) - parse_link(raw, "2", remark) + parse_link(raw, "2", remark, cfgid) uci:set(appname, cfgid, "md5", new_md5) end else diff --git a/patch-luci-app-passwall.patch b/patch-luci-app-passwall.patch index 5c90f0be6..e168d604f 100644 --- a/patch-luci-app-passwall.patch +++ b/patch-luci-app-passwall.patch @@ -93,7 +93,7 @@ index eb5527e..133c295 100644 cursor: pointer; } diff --git a/luci-app-passwall/root/usr/share/passwall/0_default_config b/luci-app-passwall/root/usr/share/passwall/0_default_config -index acacfed..427dc3a 100644 +index 44e540d..0bb5ea7 100644 --- a/luci-app-passwall/root/usr/share/passwall/0_default_config +++ b/luci-app-passwall/root/usr/share/passwall/0_default_config @@ -32,7 +32,7 @@ config global_haproxy