diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
index a3b132b43..83cbafc53 100644
--- a/luci-app-passwall/luasrc/controller/passwall.lua
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
@@ -77,6 +77,11 @@ function index()
entry({"admin", "services", appname, "delete_select_nodes"}, call("delete_select_nodes")).leaf = true
entry({"admin", "services", appname, "update_rules"}, call("update_rules")).leaf = true
+ --[[rule_list]]
+ entry({"admin", "services", appname, "read_gfwlist"}, call("read_rulelist", "gfw")).leaf = true
+ entry({"admin", "services", appname, "read_chnlist"}, call("read_rulelist", "chn")).leaf = true
+ entry({"admin", "services", appname, "read_chnroute"}, call("read_rulelist", "chnroute")).leaf = true
+
--[[Components update]]
entry({"admin", "services", appname, "check_passwall"}, call("app_check")).leaf = true
local coms = require "luci.passwall.com"
@@ -475,3 +480,19 @@ function com_update(comname)
http_write_json(json)
end
+
+function read_rulelist(list)
+ local rule_path
+ if list == "gfw" then
+ rule_path = "/usr/share/passwall/rules/gfwlist"
+ elseif list == "chn" then
+ rule_path = "/usr/share/passwall/rules/chnlist"
+ else
+ rule_path = "/usr/share/passwall/rules/chnroute"
+ end
+ if api.fs.access(rule_path) then
+ luci.http.prepare_content("text/plain")
+ luci.http.write(api.fs.readfile(rule_path))
+ end
+end
+
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 27e863a15..5c9abb15b 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
@@ -273,71 +273,41 @@ end
if api.fs.access(gfwlist_path) then
s:tab("gfw_list", translate("GFW List"))
- o = s:taboption("gfw_list", TextValue, "gfw_list", "")
- o.readonly = true
- o.rows = 45
- o.wrap = "off"
- o.cfgvalue = function(self, section)
- local limit = 100 -- 限制行数
- local cmd = string.format("head -n %d %s", limit, gfwlist_path)
- return api.sys.exec(cmd) or ""
- -- return fs.readfile(gfwlist_path) or ""
- end
- local total_lines_cmd = string.format("wc -l < %s", gfwlist_path)
- local total_lines = tonumber(api.sys.exec(total_lines_cmd)) or 0
- local displayed_lines = 100
-
- local total_lines_label = s:taboption("gfw_list", DummyValue, "total_lines", translate("Total Lines"))
- total_lines_label.value = translatef("%d lines", total_lines)
-
- local displayed_lines_label = s:taboption("gfw_list", DummyValue, "displayed_lines", translate("Displayed Lines"))
- displayed_lines_label.value = translatef("%d lines", displayed_lines)
+ o = s:taboption("gfw_list", DummyValue, "_gfw_fieldset")
+ o.rawhtml = true
+ o.default = string.format([[
+
+
+
+
+
+ ]], translate("Read List"))
end
if api.fs.access(chnlist_path) then
s:tab("chn_list", translate("China List") .. "(" .. translate("Domain") .. ")")
- o = s:taboption("chn_list", TextValue, "chn_list", "")
- o.readonly = true
- o.rows = 45
- o.wrap = "off"
- o.cfgvalue = function(self, section)
- local limit = 100 -- 限制行数
- local cmd = string.format("head -n %d %s", limit, chnlist_path)
- return api.sys.exec(cmd) or ""
- -- return fs.readfile(chnlist_path) or ""
- end
- local total_lines_cmd = string.format("wc -l < %s", chnlist_path)
- local total_lines = tonumber(api.sys.exec(total_lines_cmd)) or 0
- local displayed_lines = 100
-
- local total_lines_label = s:taboption("chn_list", DummyValue, "total_lines", translate("Total Lines"))
- total_lines_label.value = translatef("%d lines", total_lines)
-
- local displayed_lines_label = s:taboption("chn_list", DummyValue, "displayed_lines", translate("Displayed Lines"))
- displayed_lines_label.value = translatef("%d lines", displayed_lines)
+ o = s:taboption("chn_list", DummyValue, "_chn_fieldset")
+ o.rawhtml = true
+ o.default = string.format([[
+
+
+
+
+
+ ]], translate("Read List"))
end
if api.fs.access(chnroute_path) then
s:tab("chnroute_list", translate("China List") .. "(IP)")
- o = s:taboption("chnroute_list", TextValue, "chnroute_list", "")
- o.readonly = true
- o.rows = 45
- o.wrap = "off"
- o.cfgvalue = function(self, section)
- local limit = 100 -- 限制行数
- local cmd = string.format("head -n %d %s", limit, chnroute_path)
- return api.sys.exec(cmd) or ""
- -- return fs.readfile(chnroute_path) or ""
- end
- local total_lines_cmd = string.format("wc -l < %s", chnroute_path)
- local total_lines = tonumber(api.sys.exec(total_lines_cmd)) or 0
- local displayed_lines = 100
-
- local total_lines_label = s:taboption("chnroute_list", DummyValue, "total_lines", translate("Total Lines"))
- total_lines_label.value = translatef("%d lines", total_lines)
-
- local displayed_lines_label = s:taboption("chnroute_list", DummyValue, "displayed_lines", translate("Displayed Lines"))
- displayed_lines_label.value = translatef("%d lines", displayed_lines)
+ o = s:taboption("chnroute_list", DummyValue, "_chnroute_fieldset")
+ o.rawhtml = true
+ o.default = string.format([[
+
+
+
+
+
+ ]], translate("Read List"))
end
m:append(Template(appname .. "/rule_list/js"))
diff --git a/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm b/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm
index 096fe8635..0797d8d5d 100644
--- a/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm
+++ b/luci-app-passwall/luasrc/view/passwall/rule_list/js.htm
@@ -1,18 +1,47 @@
<%
local api = require "luci.passwall.api"
+local translate = luci.i18n.translate
+local total_lines_text = translate("Total Lines")
-%>
diff --git a/luci-app-passwall/po/zh-cn/passwall.po b/luci-app-passwall/po/zh-cn/passwall.po
index fa15bafc9..28fbc6854 100644
--- a/luci-app-passwall/po/zh-cn/passwall.po
+++ b/luci-app-passwall/po/zh-cn/passwall.po
@@ -1729,8 +1729,5 @@ msgstr "为 sing-box 节点设置默认的域名解析策略。"
msgid "Total Lines"
msgstr "总行数:"
-msgid "Displayed Lines"
-msgstr "展示行数:"
-
-msgid "%d lines"
-msgstr "%d 行"
+msgid "Read List"
+msgstr "读取列表"
diff --git a/patch-luci-app-passwall.patch b/patch-luci-app-passwall.patch
index 0f213ef21..95566b64a 100644
--- a/patch-luci-app-passwall.patch
+++ b/patch-luci-app-passwall.patch
@@ -20,10 +20,10 @@ index fa1cd41..eac8656 100644
define Package/$(PKG_NAME)/postrm
diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua
-index ce89a37..a3b132b 100644
+index 02ce26c..83cbafc 100644
--- a/luci-app-passwall/luasrc/controller/passwall.lua
+++ b/luci-app-passwall/luasrc/controller/passwall.lua
-@@ -274,7 +274,7 @@ function connect_status()
+@@ -279,7 +279,7 @@ function connect_status()
url = "-x socks5h://" .. socks_server .. " " .. url
end
end