mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-10-10 20:23:04 +08:00
This commit is contained in:
@@ -196,6 +196,7 @@ print_on_feedback() {
|
||||
cmd_on() {
|
||||
local relay_switch
|
||||
local relay_switch_file relay_err_file relay_rc
|
||||
local service_action=""
|
||||
local system_proxy_rc system_proxy_degraded="false"
|
||||
|
||||
trap 'rc=$?; ui_error "开启代理失败:cmd_on 在第 ${LINENO} 行执行失败:${BASH_COMMAND}(返回码:${rc})"; ui_next "clashctl logs service"; exit "$rc"' ERR
|
||||
@@ -225,17 +226,24 @@ cmd_on() {
|
||||
|
||||
if status_is_running 2>/dev/null && ! proxy_controller_reachable 2>/dev/null; then
|
||||
ui_warn "检测到内核已运行但控制器不可访问,正在重启以加载当前配置"
|
||||
service_action="restart"
|
||||
service_restart || die_state "控制器启动失败:内核重启未完成" "clashctl logs mihomo"
|
||||
else
|
||||
service_action="start"
|
||||
service_start || die_state "控制器启动失败:内核启动未完成" "clashctl logs mihomo"
|
||||
fi
|
||||
|
||||
if ! wait_runtime_controller_ready 8; then
|
||||
ui_warn "控制器未在预期时间内可访问,正在重启内核重试"
|
||||
service_restart || die_state "控制器启动失败:内核重启未完成" "clashctl logs mihomo"
|
||||
if ! wait_runtime_controller_ready 8; then
|
||||
if [ "$service_action" = "restart" ] && [ "$(runtime_backend 2>/dev/null || true)" = "script" ]; then
|
||||
status_is_running 2>/dev/null || die_state "控制器启动失败:内核未运行" "clashctl logs mihomo"
|
||||
ui_warn "控制器暂不可访问,继续开启本地代理;请稍后执行 clashctl doctor"
|
||||
else
|
||||
ui_warn "控制器未在预期时间内可访问,正在重启内核重试"
|
||||
service_restart || die_state "控制器启动失败:内核重启未完成" "clashctl logs mihomo"
|
||||
if ! wait_runtime_controller_ready 8; then
|
||||
status_is_running 2>/dev/null || die_state "控制器启动失败:内核未运行" "clashctl logs mihomo"
|
||||
ui_warn "控制器暂不可访问,继续开启本地代理;请稍后执行 clashctl doctor"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
+13
-3
@@ -236,25 +236,35 @@ controller_curl() {
|
||||
local path="$2"
|
||||
local data="${3:-}"
|
||||
local base secret
|
||||
local curl_args=()
|
||||
|
||||
base="$(controller_api_base)"
|
||||
secret="$(controller_secret)"
|
||||
|
||||
if [ -n "${CLASH_CONTROLLER_CURL_CONNECT_TIMEOUT:-}" ]; then
|
||||
curl_args+=(--connect-timeout "$CLASH_CONTROLLER_CURL_CONNECT_TIMEOUT")
|
||||
fi
|
||||
if [ -n "${CLASH_CONTROLLER_CURL_MAX_TIME:-}" ]; then
|
||||
curl_args+=(--max-time "$CLASH_CONTROLLER_CURL_MAX_TIME")
|
||||
fi
|
||||
|
||||
if [ -n "${data:-}" ]; then
|
||||
curl -fsSL -X "$method" \
|
||||
curl "${curl_args[@]}" -fsSL -X "$method" \
|
||||
-H "Content-Type: application/json" \
|
||||
${secret:+-H "Authorization: Bearer $secret"} \
|
||||
--data "$data" \
|
||||
"$base$path"
|
||||
else
|
||||
curl -fsSL -X "$method" \
|
||||
curl "${curl_args[@]}" -fsSL -X "$method" \
|
||||
${secret:+-H "Authorization: Bearer $secret"} \
|
||||
"$base$path"
|
||||
fi
|
||||
}
|
||||
|
||||
proxy_controller_reachable() {
|
||||
controller_curl GET "/version" >/dev/null 2>&1
|
||||
CLASH_CONTROLLER_CURL_CONNECT_TIMEOUT="${CLASH_CONTROLLER_REACHABLE_CONNECT_TIMEOUT:-1}" \
|
||||
CLASH_CONTROLLER_CURL_MAX_TIME="${CLASH_CONTROLLER_REACHABLE_MAX_TIME:-2}" \
|
||||
controller_curl GET "/version" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
proxy_groups_json() {
|
||||
|
||||
Reference in New Issue
Block a user