luci-app-passwall: sync upstream

last commit: 04f1a33a41
This commit is contained in:
gitea-action 2025-01-11 15:30:20 +08:00
parent 1990f5d33b
commit 152220f327
5 changed files with 56 additions and 7 deletions

View File

@ -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 "<br>" .. 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("<span title='%s' style='color:red'>%s</span>", 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

View File

@ -1021,6 +1021,9 @@ msgstr "节点订阅"
msgid "Subscribe Remark"
msgstr "订阅备注(机场)"
msgid "Subscribe Info"
msgstr "订阅信息"
msgid "Subscribe URL"
msgstr "订阅网址"

View File

@ -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群'

View File

@ -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

View File

@ -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