diff --git a/configuration/zsh/README.md b/configuration/zsh/README.md index 9f23337..c7f67cb 100644 --- a/configuration/zsh/README.md +++ b/configuration/zsh/README.md @@ -19,13 +19,18 @@ configuration/zsh/ ### 方法一:智能安装(推荐) -自动检测网络环境,智能选择直连或代理: +优先使用代理确保安装成功,安装完成后可选择关闭: ```bash -# 智能安装(自动检测网络环境) +# 智能安装(默认使用代理,安装后可选择关闭) curl -fsSL https://ben:8d7d70f324796be650b79415303c31f567bf459b@gitea.tailnet-68f9.ts.net/ben/mgmt/raw/branch/main/configuration/zsh/smart-install.sh | bash ``` +**特点:** +- 优先使用代理确保下载成功 +- 安装完成后提供代理管理选项 +- 可选择保持开启或关闭代理 + ### 方法二:快速安装 在新 VPS 上运行: diff --git a/configuration/zsh/quick-install.sh b/configuration/zsh/quick-install.sh index 228bb75..ed1ff84 100755 --- a/configuration/zsh/quick-install.sh +++ b/configuration/zsh/quick-install.sh @@ -47,18 +47,36 @@ else cd "$MGMT_DIR" fi -# 检查并设置代理(如果需要) -if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then - log_info "发现代理配置,先设置代理..." - source "$MGMT_DIR/configuration/proxy.env" +# 默认设置代理环境 +log_info "设置代理环境以确保安装成功..." +PROXY_URL="http://istoreos.tailnet-68f9.ts.net:1082" + +# 测试代理连接 +if curl -s --connect-timeout 5 --proxy "$PROXY_URL" https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then + log_success "代理连接正常,将使用代理安装" + export http_proxy="$PROXY_URL" + export https_proxy="$PROXY_URL" + export HTTP_PROXY="$PROXY_URL" + export HTTPS_PROXY="$PROXY_URL" - # 测试代理连接 - if curl -s --connect-timeout 5 --proxy "$http_proxy" https://httpbin.org/ip >/dev/null 2>&1; then - log_success "代理连接正常,将使用代理安装" - else - log_warning "代理连接失败,将使用直连安装" - unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY - fi + # 创建代理配置文件 + cat > "$MGMT_DIR/configuration/proxy.env" << EOF +# Proxy Configuration for istoreos.tailnet-68f9.ts.net:1082 +export http_proxy=${PROXY_URL} +export https_proxy=${PROXY_URL} +export HTTP_PROXY=${PROXY_URL} +export HTTPS_PROXY=${PROXY_URL} +export no_proxy=localhost,127.0.0.1,::1,.local,.tailnet-68f9.ts.net +export NO_PROXY=localhost,127.0.0.1,::1,.local,.tailnet-68f9.ts.net +export ALL_PROXY=${PROXY_URL} +export all_proxy=${PROXY_URL} +export GIT_HTTP_PROXY=${PROXY_URL} +export GIT_HTTPS_PROXY=${PROXY_URL} +export CURL_PROXY=${PROXY_URL} +export WGET_PROXY=${PROXY_URL} +EOF +else + log_warning "代理连接失败,将使用直连安装" fi # 运行安装脚本 @@ -67,4 +85,15 @@ chmod +x "$MGMT_DIR/configuration/zsh/install-zsh-config.sh" "$MGMT_DIR/configuration/zsh/install-zsh-config.sh" log_success "快速安装完成!" + +# 如果创建了代理配置,询问用户偏好 +if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then + echo "" + log_info "代理已默认开启,安装完成后可以选择:" + echo " proxy-status # 查看代理状态" + echo " proxy-toggle # 切换代理状态" + echo " proxy-disable # 永久关闭代理" + echo "" +fi + log_info "请重新登录或运行: source ~/.zshrc" diff --git a/configuration/zsh/smart-install.sh b/configuration/zsh/smart-install.sh index d79539c..380e538 100755 --- a/configuration/zsh/smart-install.sh +++ b/configuration/zsh/smart-install.sh @@ -34,17 +34,17 @@ fi detect_network() { log_info "检测网络环境..." - # 测试直连 GitHub - if curl -s --connect-timeout 5 https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then - log_success "直连网络正常" - echo "direct" + # 优先测试代理连接 + if curl -s --connect-timeout 5 --proxy "$PROXY_URL" https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then + log_success "代理网络正常,将使用代理安装" + echo "proxy" return 0 fi - # 测试代理连接 - if curl -s --connect-timeout 5 --proxy "$PROXY_URL" https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then - log_success "代理网络正常" - echo "proxy" + # 如果代理失败,测试直连 + if curl -s --connect-timeout 5 https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then + log_warning "代理连接失败,但直连网络正常,将使用直连安装" + echo "direct" return 0 fi @@ -104,6 +104,53 @@ EOF log_success "代理配置文件已创建" } +# 询问用户是否关闭代理 +ask_proxy_preference() { + if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then + echo "" + log_info "安装完成!代理已默认开启。" + echo "" + log_info "代理管理选项:" + echo " 1. 保持代理开启(推荐,方便访问外网)" + echo " 2. 关闭代理(如果不需要访问外网)" + echo " 3. 稍后手动管理" + echo "" + + while true; do + read -p "请选择 (1/2/3): " choice + case $choice in + 1) + log_success "代理保持开启" + log_info "使用 'proxy-status' 查看代理状态" + log_info "使用 'proxy-toggle' 切换代理状态" + break + ;; + 2) + log_info "关闭代理..." + if [[ -f "$MGMT_DIR/scripts/utilities/proxy-toggle.sh" ]]; then + "$MGMT_DIR/scripts/utilities/proxy-toggle.sh" disable + else + rm -f "$MGMT_DIR/configuration/proxy.env" + log_success "代理已关闭" + fi + break + ;; + 3) + log_info "稍后可以使用以下命令管理代理:" + echo " proxy-status # 查看代理状态" + echo " proxy-toggle # 切换代理状态" + echo " proxy-enable # 永久开启代理" + echo " proxy-disable # 永久关闭代理" + break + ;; + *) + log_warning "无效选择,请输入 1、2 或 3" + ;; + esac + done + fi +} + # 主安装流程 main() { log_info "开始智能安装 ZSH 配置..." @@ -112,11 +159,11 @@ main() { local network_type=$(detect_network) if [[ "$network_type" == "proxy" ]]; then - # 需要代理 + # 优先使用代理 setup_proxy_env create_proxy_config elif [[ "$network_type" == "direct" ]]; then - # 直连即可 + # 直连安装 log_info "使用直连网络安装" else log_error "网络连接失败,无法继续安装" @@ -133,11 +180,8 @@ main() { log_success "智能安装完成!" - if [[ "$network_type" == "proxy" ]]; then - log_info "代理配置已保存,重启后仍然有效" - log_info "使用 'proxy-status' 查看代理状态" - log_info "使用 'proxy-toggle' 切换代理状态" - fi + # 询问用户代理偏好 + ask_proxy_preference } main "$@"