mirror of
https://github.com/wnlen/clash-for-linux.git
synced 2026-10-10 20:23:04 +08:00
Merge pull request #176 from wnlen/codex/create-bootstrap-documentation-for-codex
Unset shell proxy on off, auto-restore persisted proxy, and rename status variable to system_proxy_text
This commit is contained in:
@@ -56,6 +56,12 @@ _clash_alias_proxy_show() {
|
||||
_clashctl_real proxy show 2>/dev/null || true
|
||||
}
|
||||
|
||||
_clash_alias_unset_shell_proxy() {
|
||||
unset \
|
||||
http_proxy https_proxy HTTP_PROXY HTTPS_PROXY \
|
||||
all_proxy ALL_PROXY no_proxy NO_PROXY
|
||||
}
|
||||
|
||||
_clash_alias_status_next() {
|
||||
_clashctl_real status-next 2>/dev/null || echo "clashctl status"
|
||||
}
|
||||
@@ -97,6 +103,7 @@ _clash_alias_run_on() {
|
||||
}
|
||||
|
||||
_clash_alias_run_off() {
|
||||
_clash_alias_unset_shell_proxy
|
||||
_clash_alias_proxy_off
|
||||
_clash_alias_set_persist_enabled "false"
|
||||
_clashctl_real off "$@" || return $?
|
||||
@@ -104,6 +111,35 @@ _clash_alias_run_off() {
|
||||
}
|
||||
|
||||
_clash_alias_auto_restore_proxy() {
|
||||
local proxy_file http_url https_url all_url no_proxy
|
||||
|
||||
_clash_alias_persist_enabled || return 0
|
||||
|
||||
proxy_file="${SYSTEM_PROXY_ENV_FILE:-/etc/environment}"
|
||||
[ -f "$proxy_file" ] || return 0
|
||||
grep -Fq "# >>> clash-for-linux system proxy >>>" "$proxy_file" 2>/dev/null || return 0
|
||||
|
||||
http_url="$(sed -nE 's/^http_proxy="?([^"\r\n]+)"?$/\1/p' "$proxy_file" | tail -n 1)"
|
||||
https_url="$(sed -nE 's/^https_proxy="?([^"\r\n]+)"?$/\1/p' "$proxy_file" | tail -n 1)"
|
||||
all_url="$(sed -nE 's/^all_proxy="?([^"\r\n]+)"?$/\1/p' "$proxy_file" | tail -n 1)"
|
||||
no_proxy="$(sed -nE 's/^NO_PROXY="?([^"\r\n]+)"?$/\1/p' "$proxy_file" | tail -n 1)"
|
||||
[ -n "${no_proxy:-}" ] || no_proxy="$(sed -nE 's/^no_proxy="?([^"\r\n]+)"?$/\1/p' "$proxy_file" | tail -n 1)"
|
||||
|
||||
[ -n "${http_url:-}" ] || return 0
|
||||
[ -n "${https_url:-}" ] || https_url="$http_url"
|
||||
[ -n "${all_url:-}" ] || all_url="${http_url/http:\/\//socks5://}"
|
||||
[ -n "${no_proxy:-}" ] || no_proxy="127.0.0.1,localhost,::1"
|
||||
|
||||
export http_proxy="$http_url"
|
||||
export https_proxy="$https_url"
|
||||
export HTTP_PROXY="$http_url"
|
||||
export HTTPS_PROXY="$https_url"
|
||||
export all_proxy="$all_url"
|
||||
export ALL_PROXY="$all_url"
|
||||
export no_proxy="$no_proxy"
|
||||
export NO_PROXY="$no_proxy"
|
||||
|
||||
echo "♻️ 已恢复当前 shell 代理环境(来自持久化状态)"
|
||||
return 0
|
||||
}
|
||||
|
||||
@@ -125,6 +161,7 @@ clashctl() {
|
||||
_clash_alias_proxy_show
|
||||
;;
|
||||
off)
|
||||
_clash_alias_unset_shell_proxy
|
||||
_clash_alias_proxy_off
|
||||
_clash_alias_print_sep
|
||||
echo "🧹 系统代理已关闭"
|
||||
|
||||
+13
-12
@@ -1723,7 +1723,7 @@ status_port_adjustment_brief() {
|
||||
|
||||
print_status_summary_compact() {
|
||||
local profile mixed_port controller controller_lan controller_public
|
||||
local running_text user_connectivity user_risk current_proxy_brief next_action shell_persist_text
|
||||
local running_text user_connectivity user_risk current_proxy_brief next_action system_proxy_text
|
||||
local current_active dashboard_text dashboard_source_text dashboard_policy_text secret_text
|
||||
local tun_text
|
||||
|
||||
@@ -1748,9 +1748,9 @@ print_status_summary_compact() {
|
||||
current_proxy_brief="$(status_current_proxy_brief)"
|
||||
next_action="$(system_state_default_action 2>/dev/null || echo 'clashctl status')"
|
||||
if system_proxy_supported; then
|
||||
shell_persist_text="$(system_proxy_status 2>/dev/null || echo off)"
|
||||
system_proxy_text="$(system_proxy_status 2>/dev/null || echo off)"
|
||||
else
|
||||
shell_persist_text="unsupported"
|
||||
system_proxy_text="unsupported"
|
||||
fi
|
||||
if [ -f "$(runtime_dashboard_dir)/index.html" ]; then
|
||||
dashboard_text="已部署"
|
||||
@@ -1791,7 +1791,7 @@ print_status_summary_compact() {
|
||||
echo "⚙️ 运行后端:$(status_runtime_backend_text)"
|
||||
echo "🧪 环境模式:$(status_container_mode_text)"
|
||||
echo "🧪 Tun 状态:${tun_text:-未知}"
|
||||
echo "🧭 系统代理状态:${shell_persist_text}"
|
||||
echo "🧭 系统代理状态:${system_proxy_text}"
|
||||
echo "🧩 Dashboard:${dashboard_text}(来源:${dashboard_source_text})"
|
||||
echo "🧩 Dashboard 策略:${dashboard_policy_text}"
|
||||
echo "🔐 控制器密钥:${secret_text}"
|
||||
@@ -1831,7 +1831,7 @@ print_status_summary_verbose() {
|
||||
local config_source config_source_time build_applied build_applied_time build_applied_reason
|
||||
local install_backend_text install_container_text install_verify_text port_adjustment_text
|
||||
local tun_enabled tun_effective tun_stack tun_container_text tun_kernel_text tun_verify_result tun_verify_reason tun_verify_time
|
||||
local shell_persist_text dashboard_text dashboard_source_text dashboard_policy_text secret_text
|
||||
local system_proxy_text dashboard_text dashboard_source_text dashboard_policy_text secret_text
|
||||
|
||||
profile="$(show_active_profile 2>/dev/null || true)"
|
||||
[ -n "${profile:-}" ] || profile="default"
|
||||
@@ -1894,9 +1894,9 @@ print_status_summary_verbose() {
|
||||
tun_verify_reason="$(status_tun_last_verify_reason 2>/dev/null || true)"
|
||||
tun_verify_time="$(status_tun_last_verify_time 2>/dev/null || true)"
|
||||
if system_proxy_supported; then
|
||||
shell_persist_text="$(system_proxy_status 2>/dev/null || echo off)"
|
||||
system_proxy_text="$(system_proxy_status 2>/dev/null || echo off)"
|
||||
else
|
||||
shell_persist_text="unsupported"
|
||||
system_proxy_text="unsupported"
|
||||
fi
|
||||
if [ -f "$(runtime_dashboard_dir)/index.html" ]; then
|
||||
dashboard_text="已部署"
|
||||
@@ -1959,7 +1959,7 @@ print_status_summary_verbose() {
|
||||
echo "🧪 环境模式:${install_container_text:-unknown}"
|
||||
echo "🧩 安装验证:${install_verify_text:-unknown}"
|
||||
echo "🧭 端口裁决:${port_adjustment_text:-unknown}"
|
||||
echo "🧭 系统代理状态:${shell_persist_text}"
|
||||
echo "🧭 系统代理状态:${system_proxy_text}"
|
||||
echo "🧩 Dashboard:${dashboard_text}(来源:${dashboard_source_text})"
|
||||
echo "🧩 Dashboard 策略:${dashboard_policy_text}"
|
||||
echo "🔐 控制器密钥:${secret_text}"
|
||||
@@ -2814,7 +2814,7 @@ doctor_install_ports() {
|
||||
doctor_runtime_events() {
|
||||
local fallback_used fallback_time fallback_reason risk_level
|
||||
local config_source build_applied build_applied_time build_applied_reason
|
||||
local shell_persist_text dashboard_status dashboard_source secret_status
|
||||
local system_proxy_text dashboard_status dashboard_source secret_status
|
||||
|
||||
doctor_print_title "运行事件检查"
|
||||
|
||||
@@ -2827,9 +2827,9 @@ doctor_runtime_events() {
|
||||
build_applied_time="$(status_runtime_build_applied_time 2>/dev/null || true)"
|
||||
build_applied_reason="$(status_runtime_build_applied_reason 2>/dev/null || true)"
|
||||
if system_proxy_supported; then
|
||||
shell_persist_text="$(system_proxy_status 2>/dev/null || echo off)"
|
||||
system_proxy_text="$(system_proxy_status 2>/dev/null || echo off)"
|
||||
else
|
||||
shell_persist_text="unsupported"
|
||||
system_proxy_text="unsupported"
|
||||
fi
|
||||
if [ -f "$(runtime_dashboard_dir)/index.html" ]; then
|
||||
dashboard_status="已部署"
|
||||
@@ -2849,7 +2849,7 @@ doctor_runtime_events() {
|
||||
|
||||
doctor_ok "当前风险等级:${risk_level:-unknown}"
|
||||
doctor_ok "当前配置来源:${config_source:-unknown}"
|
||||
doctor_ok "系统代理状态:${shell_persist_text}"
|
||||
doctor_ok "系统代理状态:${system_proxy_text}"
|
||||
doctor_ok "Dashboard 运行目录:${dashboard_status}(来源:${dashboard_source})"
|
||||
doctor_ok ".env 控制器密钥:${secret_status}"
|
||||
|
||||
@@ -4850,6 +4850,7 @@ cmd_proxy() {
|
||||
echo
|
||||
echo "🧩 说明:"
|
||||
echo " on/off 开启或关闭系统代理(/etc/environment)"
|
||||
echo " 仅修改系统代理接管状态,不输出 shell export 脚本"
|
||||
echo " groups 查看可切换策略组"
|
||||
echo " current 查看当前节点"
|
||||
echo " nodes 查看某策略组候选节点"
|
||||
|
||||
Reference in New Issue
Block a user