mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-31 03:35:13 +08:00
🏅 Sync 2026-08-09 09:19:32
This commit is contained in:
1 parent
ee62266d6b
commit
40a4a808cd
32 files changed
+313
-221
No files matched your search
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-passwall2
|
||||
PKG_VERSION:=26.8.7
|
||||
PKG_RELEASE:=69
|
||||
PKG_RELEASE:=70
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)
|
||||
|
||||
PKG_CONFIG_DEPENDS:= \
|
||||
|
||||
@@ -329,7 +329,7 @@ end
|
||||
|
||||
function get_acl_log()
|
||||
local id = http.formvalue("id")
|
||||
local path = "/tmp/log/passwall2_acl_" .. id .. ".log"
|
||||
local path = api.TMP_PATH .. "/acl/" .. id .. "/node.log"
|
||||
if nixio.fs.access(path) then
|
||||
local content = luci.sys.exec("tail -n 5000 '" .. path .. "'")
|
||||
content = content:gsub("\n", "<br />")
|
||||
|
||||
@@ -46,6 +46,15 @@ sys.net.mac_hints(function(e, t)
|
||||
}
|
||||
end)
|
||||
|
||||
i = s:option(DummyValue, "interface", translate("Source Interface"))
|
||||
i.cfgvalue = function(t, n)
|
||||
local v = Value.cfgvalue(t, n) or ''
|
||||
if v == "" then
|
||||
return translate("All")
|
||||
end
|
||||
return v
|
||||
end
|
||||
|
||||
o = s:option(DummyValue, "sources", translate("Source"))
|
||||
o.rawhtml = true
|
||||
o.cfgvalue = function(t, n)
|
||||
@@ -64,10 +73,13 @@ o.cfgvalue = function(t, n)
|
||||
return e
|
||||
end
|
||||
|
||||
i = s:option(DummyValue, "interface", translate("Source Interface"))
|
||||
i = s:option(DummyValue, "mode", translate("Mode"))
|
||||
i.cfgvalue = function(t, n)
|
||||
local v = Value.cfgvalue(t, n) or '-'
|
||||
return v
|
||||
local v = Value.cfgvalue(t, n) or '0'
|
||||
if v == "1" then
|
||||
return translate("Proxy")
|
||||
end
|
||||
return translate("No Proxy")
|
||||
end
|
||||
|
||||
local sortable = Template(appname .. "/cbi/sortable")
|
||||
|
||||
@@ -78,33 +78,6 @@ o = s:option(Value, "remarks", translate("Remarks"))
|
||||
o.default = arg[1]
|
||||
o.rmempty = false
|
||||
|
||||
---- Log
|
||||
o = s:option(Flag, "log", translate("Enable Log"))
|
||||
o.default = 0
|
||||
o.rmempty = false
|
||||
|
||||
o = s:option(ListValue, "loglevel", translate("Log Level"))
|
||||
o.default = "warn"
|
||||
o:value("debug", "Debug")
|
||||
o:value("info", "Info")
|
||||
o:value("warn", "Warning")
|
||||
o:value("error", "Error")
|
||||
o:depends("log", "1")
|
||||
|
||||
o = s:option(DummyValue, "_acl_log", translate("Log File"))
|
||||
o.rawhtml = true
|
||||
o.cfgvalue = function(t, n)
|
||||
local log_path = "/tmp/log/passwall2_acl_" .. arg[1] .. ".log"
|
||||
local log_url = api.url("get_acl_log") .. "?id=" .. arg[1]
|
||||
return string.format(
|
||||
'<code>%s</code> <input class="btn cbi-button cbi-button-apply" type="button" value="%s" onclick="window.open(\'%s\', \'_blank\')" />',
|
||||
log_path,
|
||||
translate("View Log"),
|
||||
log_url
|
||||
)
|
||||
end
|
||||
o:depends("log", "1")
|
||||
|
||||
o = s:option(Value, "interface", translate("Source Interface"))
|
||||
o:value("", translate("All"))
|
||||
local iface = api.get_network_devices()
|
||||
@@ -205,28 +178,32 @@ sources.validate = function(self, value, t)
|
||||
end
|
||||
sources.write = dynamicList_write
|
||||
|
||||
o = s:option(ListValue, "mode", translate("Mode"))
|
||||
o:value("0", translate("No Proxy"))
|
||||
o:value("1", translate("Proxy"))
|
||||
|
||||
---- TCP No Redir Ports
|
||||
local TCP_NO_REDIR_PORTS = m:get("@global_forwarding[0]", "tcp_no_redir_ports")
|
||||
o = s:option(Value, "tcp_no_redir_ports", translate("TCP No Redir Ports"))
|
||||
o:value("", translate("Use global config") .. "(" .. TCP_NO_REDIR_PORTS .. ")")
|
||||
o:value("disable", translate("No patterns are used"))
|
||||
o:value("1:65535", translate("All"))
|
||||
o:depends("mode", "1")
|
||||
o.validate = port_validate
|
||||
|
||||
---- UDP No Redir Ports
|
||||
local UDP_NO_REDIR_PORTS = m:get("@global_forwarding[0]", "udp_no_redir_ports")
|
||||
o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"),
|
||||
"<font color='red'>" ..
|
||||
translate("If you don't want to let the device in the list to go proxy, please choose all.") ..
|
||||
"</font>")
|
||||
o = s:option(Value, "udp_no_redir_ports", translate("UDP No Redir Ports"))
|
||||
o:value("", translate("Use global config") .. "(" .. UDP_NO_REDIR_PORTS .. ")")
|
||||
o:value("disable", translate("No patterns are used"))
|
||||
o:value("1:65535", translate("All"))
|
||||
o:depends("mode", "1")
|
||||
o.validate = port_validate
|
||||
|
||||
o = s:option(DummyValue, "_hide_node_option", "")
|
||||
o.template = "passwall2/cbi/hidevalue"
|
||||
o.value = "1"
|
||||
o:depends("mode", "0")
|
||||
o:depends({ tcp_no_redir_ports = "1:65535", udp_no_redir_ports = "1:65535" })
|
||||
if TCP_NO_REDIR_PORTS == "1:65535" and UDP_NO_REDIR_PORTS == "1:65535" then
|
||||
o:depends({ tcp_no_redir_ports = "", udp_no_redir_ports = "" })
|
||||
@@ -250,13 +227,30 @@ if not current_node_id then
|
||||
end
|
||||
current_node = current_node_id and m.uci:get_all(appname, current_node_id) or {}
|
||||
|
||||
o = s:option(DummyValue, "_hide_dns_option", "")
|
||||
o.template = "passwall2/cbi/hidevalue"
|
||||
o.value = "1"
|
||||
o:depends({ node = "" })
|
||||
if GLOBAL_ENABLED == "1" and NODE then
|
||||
o:depends({ node = NODE })
|
||||
o = s:option(Flag, "log", translate("Enable Node Log"))
|
||||
o:depends({ _hide_node_option = "1", ['!reverse'] = true })
|
||||
|
||||
o = s:option(ListValue, "loglevel", translate("Log Level"))
|
||||
o.default = "warn"
|
||||
o:value("debug", "Debug")
|
||||
o:value("info", "Info")
|
||||
o:value("warn", "Warning")
|
||||
o:value("error", "Error")
|
||||
o:depends("log", "1")
|
||||
|
||||
o = s:option(DummyValue, "_acl_log", translate("Log File"))
|
||||
o.rawhtml = true
|
||||
o.cfgvalue = function(t, n)
|
||||
local log_path = api.TMP_PATH .. "/acl/" .. arg[1] .. "/node.log"
|
||||
local log_url = api.url("get_acl_log") .. "?id=" .. arg[1]
|
||||
return string.format(
|
||||
'<code>%s</code> <input class="btn cbi-button cbi-button-apply" type="button" value="%s" onclick="window.open(\'%s\', \'_blank\')" />',
|
||||
log_path,
|
||||
translate("View Log"),
|
||||
log_url
|
||||
)
|
||||
end
|
||||
o:depends("log", "1")
|
||||
|
||||
---- TCP Redir Ports
|
||||
local TCP_REDIR_PORTS = m:get("@global_forwarding[0]", "tcp_redir_ports")
|
||||
@@ -282,6 +276,15 @@ o.cfgvalue = function(t, n)
|
||||
return string.format('<font color="red">%s</font>',
|
||||
translate("The port settings support single ports and ranges.<br>Separate multiple ports with commas (,).<br>Example: 21,80,443,1000:2000."))
|
||||
end
|
||||
o:depends({ _hide_node_option = "1", ['!reverse'] = true })
|
||||
|
||||
o = s:option(DummyValue, "_hide_dns_option", "")
|
||||
o.template = "passwall2/cbi/hidevalue"
|
||||
o.value = "1"
|
||||
o:depends({ node = "" })
|
||||
if GLOBAL_ENABLED == "1" and NODE then
|
||||
o:depends({ node = NODE })
|
||||
end
|
||||
|
||||
o = s:option(ListValue, "direct_dns_query_strategy", translate("Direct Query Strategy"))
|
||||
o.default = "UseIP"
|
||||
@@ -377,6 +380,7 @@ o = s:option(ListValue, "dns_hosts_mode", translate("Domain Override"))
|
||||
o:value("default", translate("Use global config"))
|
||||
o:value("disable", translate("No patterns are used"))
|
||||
o:value("custom", translate("-- custom --"))
|
||||
o:depends({ _hide_dns_option = "1", ['!reverse'] = true })
|
||||
|
||||
o = s:option(TextValue, "dns_hosts", translate("Domain Override"))
|
||||
o.rows = 5
|
||||
|
||||
@@ -287,12 +287,26 @@ o.default = "1"
|
||||
o.rmempty = false
|
||||
|
||||
loglevel = s:taboption("log", ListValue, "loglevel", translate("Log Level"))
|
||||
loglevel.default = "warning"
|
||||
loglevel.default = "warn"
|
||||
loglevel:value("debug")
|
||||
loglevel:value("info")
|
||||
loglevel:value("warning")
|
||||
loglevel:value("warn")
|
||||
loglevel:value("error")
|
||||
|
||||
o = s:taboption("log", DummyValue, "_log", translate("Log File"))
|
||||
o.rawhtml = true
|
||||
o.cfgvalue = function(t, n)
|
||||
local log_path = api.TMP_PATH .. "/acl/default/global.log"
|
||||
local log_url = api.url("get_redir_log") .. "?id=default&name=global"
|
||||
return string.format(
|
||||
'<code>%s</code> <input class="btn cbi-button cbi-button-apply" type="button" value="%s" onclick="window.open(\'%s\', \'_blank\')" />',
|
||||
log_path,
|
||||
translate("View Log"),
|
||||
log_url
|
||||
)
|
||||
end
|
||||
o:depends("log_node", "1")
|
||||
|
||||
s:tab("faq", "FAQ")
|
||||
|
||||
o = s:taboption("faq", DummyValue, "")
|
||||
|
||||
@@ -574,6 +574,9 @@ o.validate = function(self, value)
|
||||
return value
|
||||
end
|
||||
|
||||
o = s:option(Value, _n("cipherSuites"), translate("Cipher Suites"), '<a href="https://go.dev/src/crypto/tls/cipher_suites.go#L44" target="_blank">***</a>' .. " " .. translate("Configures the list of supported cipher suites, separated by :"))
|
||||
o:depends({ [_n("tls")] = true })
|
||||
|
||||
o = s:option(Flag, _n("ech"), translate("ECH"))
|
||||
o.default = "0"
|
||||
o:depends({ [_n("tls")] = true, [_n("flow")] = "", [_n("reality")] = false })
|
||||
|
||||
@@ -91,6 +91,11 @@ local function convert_geofile()
|
||||
convert(GEO_VAR.IP_PATH, "geoip", GEO_VAR.IP_TAGS)
|
||||
end
|
||||
|
||||
local function get_log_level(s)
|
||||
if s == "warning" then s = "warn" end
|
||||
return s
|
||||
end
|
||||
|
||||
function parseDNS(str)
|
||||
local result_dns_server
|
||||
-- [proto]://[ip]
|
||||
@@ -256,6 +261,7 @@ function gen_outbound(flag, node, tag, proxy_table)
|
||||
fragment = fragment,
|
||||
record_fragment = record_fragment,
|
||||
certificate = (node.tls_certificate == "1" and node.tls_certificate_pem ~= "") and split(node.tls_certificate_pem, "\n") or nil,
|
||||
cipher_suites = node.cipherSuites or nil,
|
||||
ech = (node.ech == "1") and (function()
|
||||
local function get_ech_domain(s) --兼容xray "域名+DNS" 格式ech
|
||||
local domain, dns = s:match("^([^+]+)%+(.+)$")
|
||||
@@ -1072,7 +1078,7 @@ function gen_config_server(node)
|
||||
local config = {
|
||||
log = {
|
||||
disabled = (not node or node.log == "0") and true or false,
|
||||
level = node.loglevel or "info",
|
||||
level = get_log_level(node.loglevel) or "info",
|
||||
timestamp = true,
|
||||
--output = logfile,
|
||||
},
|
||||
@@ -2160,7 +2166,7 @@ function gen_config(var)
|
||||
local config = {
|
||||
log = {
|
||||
disabled = log == "0" and true or false,
|
||||
level = loglevel,
|
||||
level = get_log_level(loglevel),
|
||||
timestamp = true,
|
||||
output = logfile,
|
||||
},
|
||||
|
||||
@@ -31,6 +31,11 @@ local function get_domain_excluded()
|
||||
return hosts
|
||||
end
|
||||
|
||||
local function get_log_level(s)
|
||||
if s == "warn" then s = "warning" end
|
||||
return s
|
||||
end
|
||||
|
||||
function parseDNS(str)
|
||||
local result_dns_server
|
||||
-- [proto]://[ip]
|
||||
@@ -657,7 +662,7 @@ function gen_config_server(node)
|
||||
|
||||
local config = {
|
||||
log = {
|
||||
loglevel = ("1" == node.log) and node.loglevel or "none"
|
||||
loglevel = ("1" == node.log) and get_log_level(node.loglevel) or "none"
|
||||
},
|
||||
inbounds = {
|
||||
{
|
||||
@@ -1981,7 +1986,7 @@ function gen_config(var)
|
||||
--access = string.format("/tmp/etc/%s/%s_access.log", appname, "global"),
|
||||
--error = string.format("/tmp/etc/%s/%s_error.log", appname, "global"),
|
||||
--dnsLog = true,
|
||||
loglevel = loglevel
|
||||
loglevel = get_log_level(loglevel)
|
||||
},
|
||||
dns = dns,
|
||||
fakedns = fakedns,
|
||||
|
||||
@@ -1507,6 +1507,12 @@ msgstr "فعالسازی گزارش گره"
|
||||
msgid "Log Level"
|
||||
msgstr "سطح گزارش"
|
||||
|
||||
msgid "Log File"
|
||||
msgstr "فایل لاگ"
|
||||
|
||||
msgid "View Log"
|
||||
msgstr "مشاهده گزارش"
|
||||
|
||||
msgid "Not enabled log"
|
||||
msgstr "گزارش فعال نیست"
|
||||
|
||||
@@ -2381,6 +2387,9 @@ msgstr "گره [%s] با موفقیت حل شد، تعداد: %s"
|
||||
msgid "Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!"
|
||||
msgstr "دریافت محتوای اشتراک برای [%s] خالی است. این ممکن است به دلیل آدرس اشتراک نامعتبر یا مشکل شبکه باشد. لطفاً مشکل را بررسی کنید!"
|
||||
|
||||
msgid "No Proxy"
|
||||
msgstr "بدون پروکسی"
|
||||
|
||||
msgid "Proxy"
|
||||
msgstr "پروکسی"
|
||||
|
||||
|
||||
@@ -1508,6 +1508,12 @@ msgstr "Запись журнала"
|
||||
msgid "Log Level"
|
||||
msgstr "Уровень записи журнала"
|
||||
|
||||
msgid "Log File"
|
||||
msgstr "Файл журнала"
|
||||
|
||||
msgid "View Log"
|
||||
msgstr "Просмотреть журнал"
|
||||
|
||||
msgid "Not enabled log"
|
||||
msgstr "Запись журнала отключена"
|
||||
|
||||
@@ -2379,6 +2385,9 @@ msgstr "Успешно разобран [%s], количество узлов: %
|
||||
msgid "Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!"
|
||||
msgstr "Содержимое подписки [%s] пусто. Возможно, адрес подписки неверен или есть проблема с сетью. Пожалуйста, проведите диагностику!"
|
||||
|
||||
msgid "No Proxy"
|
||||
msgstr "Без прокси"
|
||||
|
||||
msgid "Proxy"
|
||||
msgstr "Прокси"
|
||||
|
||||
|
||||
@@ -1499,6 +1499,12 @@ msgstr "启用节点日志"
|
||||
msgid "Log Level"
|
||||
msgstr "日志等级"
|
||||
|
||||
msgid "Log File"
|
||||
msgstr "日志文件"
|
||||
|
||||
msgid "View Log"
|
||||
msgstr "查看日志"
|
||||
|
||||
msgid "Not enabled log"
|
||||
msgstr "未启用日志"
|
||||
|
||||
@@ -2367,6 +2373,9 @@ msgstr "成功解析【%s】节点,数量:%s"
|
||||
msgid "Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!"
|
||||
msgstr "获取到的【%s】订阅内容为空,可能是订阅地址无效,或是网络问题,请诊断!"
|
||||
|
||||
msgid "No Proxy"
|
||||
msgstr "不代理"
|
||||
|
||||
msgid "Proxy"
|
||||
msgstr "代理"
|
||||
|
||||
|
||||
@@ -1499,6 +1499,12 @@ msgstr "啟用節點日誌"
|
||||
msgid "Log Level"
|
||||
msgstr "日誌等級"
|
||||
|
||||
msgid "Log File"
|
||||
msgstr "日誌檔案"
|
||||
|
||||
msgid "View Log"
|
||||
msgstr "查看日誌"
|
||||
|
||||
msgid "Not enabled log"
|
||||
msgstr "未啟用日誌"
|
||||
|
||||
@@ -2373,6 +2379,9 @@ msgstr "成功解析【%s】節點,數量:%s"
|
||||
msgid "Get subscription content for [%s] is empty. This may be due to an invalid subscription address or a network problem. Please diagnose the issue!"
|
||||
msgstr "獲取到的【%s】訂閱內容為空,可能是訂閱地址無效,或是網絡問題,請診斷!"
|
||||
|
||||
msgid "No Proxy"
|
||||
msgstr "不代理"
|
||||
|
||||
msgid "Proxy"
|
||||
msgstr "代理"
|
||||
|
||||
|
||||
@@ -209,7 +209,6 @@ run_singbox() {
|
||||
node_protocol=$(config_n_get $node protocol)
|
||||
[ -n "$log_file" ] || local log_file="/dev/null"
|
||||
[ -z "$loglevel" ] && local loglevel=$(config_t_get global loglevel "warn")
|
||||
[ "$loglevel" = "warning" ] && loglevel="warn"
|
||||
local singbox_tag=$($SINGBOX_BIN version | grep 'Tags:' | awk '{print $2}')
|
||||
|
||||
json_init
|
||||
@@ -413,7 +412,6 @@ run_socks() {
|
||||
}
|
||||
[ "${log_file}" != "/dev/null" ] && {
|
||||
local loglevel=$(config_t_get global loglevel "warn")
|
||||
[ "$loglevel" = "warning" ] && loglevel="warn"
|
||||
json_add_string "log" "1"
|
||||
json_add_string "loglevel" "${loglevel}"
|
||||
json_add_string "logfile" "${log_file}"
|
||||
@@ -440,6 +438,11 @@ run_socks() {
|
||||
json_add_null "server_host"
|
||||
json_add_null "server_port"
|
||||
}
|
||||
[ "${log_file}" != "/dev/null" ] && {
|
||||
local loglevel=$(config_t_get global loglevel "warn")
|
||||
json_add_string "log" "1"
|
||||
json_add_string "loglevel" "${loglevel}"
|
||||
}
|
||||
[ -n "$no_run" ] && json_add_string "no_run" "1"
|
||||
json_add_string "flag" "${flag}"
|
||||
json_add_string "local_socks_address" "${bind}"
|
||||
@@ -1029,10 +1032,6 @@ acl_app() {
|
||||
[ "$(config_n_get $sid enabled)" = "1" ] || continue
|
||||
has_enabled=1
|
||||
eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-)
|
||||
log=${log:-0}
|
||||
loglevel=${loglevel:-warn}
|
||||
log_file="/dev/null"
|
||||
[ "${log}" = "1" ] && log_file="/tmp/log/passwall2_acl_${sid}.log"
|
||||
|
||||
if [ -n "${sources}" ]; then
|
||||
for s in $sources; do
|
||||
@@ -1061,6 +1060,11 @@ acl_app() {
|
||||
mkdir -p ${acl_path}
|
||||
[ -n "${source_list}" ] && echo -e "${source_list}" | sed '/^$/d' > ${acl_path}/source_list
|
||||
|
||||
log=${log:-0}
|
||||
loglevel=${loglevel:-warn}
|
||||
log_file="/dev/null"
|
||||
[ "${log}" = "1" ] && log_file="${acl_path}/node.log"
|
||||
|
||||
node=${node:-default}
|
||||
tcp_no_redir_ports=${tcp_no_redir_ports:-default}
|
||||
udp_no_redir_ports=${udp_no_redir_ports:-default}
|
||||
|
||||
@@ -261,6 +261,7 @@ load_acl() {
|
||||
for sid in $(ls -F ${TMP_ACL_PATH} | grep '/$' | awk -F '/' '{print $1}' | grep -v 'default'); do
|
||||
eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-)
|
||||
|
||||
mode=${mode:-0}
|
||||
tcp_no_redir_ports=${tcp_no_redir_ports:-default}
|
||||
udp_no_redir_ports=${udp_no_redir_ports:-default}
|
||||
tcp_proxy_mode="global"
|
||||
@@ -268,6 +269,10 @@ load_acl() {
|
||||
tcp_redir_ports=${tcp_redir_ports:-default}
|
||||
udp_redir_ports=${udp_redir_ports:-default}
|
||||
node=${node:-default}
|
||||
[ "$mode" = "0" ] && {
|
||||
tcp_no_redir_ports="1:65535"
|
||||
udp_no_redir_ports="1:65535"
|
||||
}
|
||||
[ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS
|
||||
[ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS
|
||||
[ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS
|
||||
|
||||
@@ -299,6 +299,7 @@ load_acl() {
|
||||
for sid in $(ls -F ${TMP_ACL_PATH} | grep '/$' | awk -F '/' '{print $1}' | grep -v 'default'); do
|
||||
eval $(uci -q show "${CONFIG}.${sid}" | cut -d'.' -sf 3-)
|
||||
|
||||
mode=${mode:-0}
|
||||
tcp_no_redir_ports=${tcp_no_redir_ports:-default}
|
||||
udp_no_redir_ports=${udp_no_redir_ports:-default}
|
||||
tcp_proxy_mode="global"
|
||||
@@ -306,6 +307,10 @@ load_acl() {
|
||||
tcp_redir_ports=${tcp_redir_ports:-default}
|
||||
udp_redir_ports=${udp_redir_ports:-default}
|
||||
node=${node:-default}
|
||||
[ "$mode" = "0" ] && {
|
||||
tcp_no_redir_ports="1:65535"
|
||||
udp_no_redir_ports="1:65535"
|
||||
}
|
||||
[ "$tcp_no_redir_ports" = "default" ] && tcp_no_redir_ports=$TCP_NO_REDIR_PORTS
|
||||
[ "$udp_no_redir_ports" = "default" ] && udp_no_redir_ports=$UDP_NO_REDIR_PORTS
|
||||
[ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS
|
||||
|
||||
@@ -168,9 +168,9 @@ do
|
||||
local flag = i18n.translatef("Socks node list [%s]", i) .. " " .. i18n.translatef("Backup node list")
|
||||
local currentNodes = {}
|
||||
local newNodes = {}
|
||||
for k, asb_node in ipairs(t.autoswitch_backup_node) do
|
||||
if asb_node then
|
||||
local currentNode = uci:get_all(appname, asb_node) or {}
|
||||
for k, asb_node_id in ipairs(t.autoswitch_backup_node) do
|
||||
if asb_node_id then
|
||||
local currentNode = uci:get_all(appname, asb_node_id) or {}
|
||||
if currentNode[".type"] == "nodes" then
|
||||
currentNodes[#currentNodes + 1] = {
|
||||
log = true,
|
||||
@@ -277,7 +277,7 @@ do
|
||||
for k, e in pairs(rules) do
|
||||
local _node_id = node[e[".name"]] or nil
|
||||
if _node_id then
|
||||
local section = uci:get_all(appname, node_id) or {}
|
||||
local section = uci:get_all(appname, _node_id) or {}
|
||||
if section[".type"] == "nodes" then
|
||||
CONFIG[#CONFIG + 1] = {
|
||||
log = false,
|
||||
|
||||
Reference in new issue
Block a user