From b175eb2d1e57d5102cef2b24e02d19a21f6ad725 Mon Sep 17 00:00:00 2001 From: gitea-action Date: Wed, 8 Jan 2025 21:00:24 +0800 Subject: [PATCH] luci-app-passwall: sync upstream last commit: https://github.com/xiaorouji/openwrt-passwall/commit/761cc35f53ee03d6c7db47b9e530a2c8fc676f58 --- luci-app-passwall/luasrc/controller/passwall.lua | 4 ++-- luci-app-passwall/luasrc/passwall/api.lua | 2 +- .../root/usr/share/passwall/test.sh | 16 ++++++++++++++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/luci-app-passwall/luasrc/controller/passwall.lua b/luci-app-passwall/luasrc/controller/passwall.lua index 7dfd444ef..3a83fcca3 100644 --- a/luci-app-passwall/luasrc/controller/passwall.lua +++ b/luci-app-passwall/luasrc/controller/passwall.lua @@ -289,7 +289,7 @@ function connect_status() local socks_server = api.get_cache_var("GLOBAL_TCP_SOCKS_server") -- 兼容 curl 8.6 time_starttransfer 错误 - local curl_ver = luci.sys.exec("curl -V 2>/dev/null | head -n 1 | awk '{print $2}' | cut -d. -f1,2 | tr -d ' \n'") or "0" + local curl_ver = api.get_bin_version_cache("/usr/bin/curl", "-V 2>/dev/null | head -n 1 | awk '{print $2}' | cut -d. -f1,2 | tr -d ' \n'") or "0" url = (curl_ver == "8.6") and "-w %{http_code}:%{time_appconnect} https://" .. url or "-w %{http_code}:%{time_starttransfer} http://" .. url @@ -302,7 +302,7 @@ function connect_status() url = "-x socks5h://" .. socks_server .. " " .. url end end - local result = luci.sys.exec('curl --connect-timeout 3 -o /dev/null -I -sk ' .. url) + local result = luci.sys.exec('/usr/bin/curl --connect-timeout 3 -o /dev/null -I -sk ' .. url) local code = tonumber(luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $1}'") or "0") if code ~= 0 then local use_time = luci.sys.exec("echo -n '" .. result .. "' | awk -F ':' '{print $2}'") diff --git a/luci-app-passwall/luasrc/passwall/api.lua b/luci-app-passwall/luasrc/passwall/api.lua index 3d9ac3882..48f0dd402 100644 --- a/luci-app-passwall/luasrc/passwall/api.lua +++ b/luci-app-passwall/luasrc/passwall/api.lua @@ -580,7 +580,7 @@ function clone(org) return res end -local function get_bin_version_cache(file, cmd) +function get_bin_version_cache(file, cmd) sys.call("mkdir -p /tmp/etc/passwall_tmp") if fs.access(file) then chmod_755(file) diff --git a/luci-app-passwall/root/usr/share/passwall/test.sh b/luci-app-passwall/root/usr/share/passwall/test.sh index 3c54f9805..015f4f358 100755 --- a/luci-app-passwall/root/usr/share/passwall/test.sh +++ b/luci-app-passwall/root/usr/share/passwall/test.sh @@ -14,6 +14,15 @@ config_n_get() { echo "${ret:=$3}" } +lua_api() { + local func=${1} + [ -z "${func}" ] && { + echo "nil" + return + } + echo $(lua -e "local api = require 'luci.passwall.api' print(api.${func})") +} + test_url() { local url=$1 local try=1 @@ -74,14 +83,17 @@ url_test_node() { fi sleep 1s # 兼容 curl 8.6 time_starttransfer 错误 - local curl_ver=$(curl -V 2>/dev/null | head -n 1 | awk '{print $2}' | cut -d. -f1,2 | tr -d ' \n') + local _cmd="-V 2>/dev/null | head -n 1 | awk '{print \$2}' | cut -d. -f1,2 | tr -d ' \\n'" + local _curl="/usr/bin/curl" + local curl_ver=$(lua_api "get_bin_version_cache(\"${_curl}\", \"${_cmd}\")") + local curl_arg="-w %{http_code}:%{time_starttransfer} http://" [ "${curl_ver}" = "8.6" ] && curl_arg="-w %{http_code}:%{time_appconnect} https://" local chn_list=$(config_n_get @global[0] chn_list direct) local probeUrl="www.google.com/generate_204" [ "${chn_list}" = "proxy" ] && probeUrl="www.baidu.com" - result=$(curl --connect-timeout 3 -o /dev/null -I -skL -x $curlx ${curl_arg}${probeUrl}) + result=$(${_curl} --connect-timeout 3 -o /dev/null -I -skL -x ${curlx} ${curl_arg}${probeUrl}) pgrep -af "url_test_${node_id}" | awk '! /test\.sh/{print $1}' | xargs kill -9 >/dev/null 2>&1 rm -rf "/tmp/etc/${CONFIG}/url_test_${node_id}.json" }