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