diff --git a/configuration/zsh/README.md b/configuration/zsh/README.md index c7f67cb..84b4e36 100644 --- a/configuration/zsh/README.md +++ b/configuration/zsh/README.md @@ -19,17 +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 ``` **特点:** -- 优先使用代理确保下载成功 -- 安装完成后提供代理管理选项 -- 可选择保持开启或关闭代理 +- 安装前询问是否使用代理 +- 测试代理连接确保可用 +- 安装完成后询问是否保持代理 +- 用户完全控制代理使用 ### 方法二:快速安装 diff --git a/configuration/zsh/quick-install.sh b/configuration/zsh/quick-install.sh index ed1ff84..361fc47 100755 --- a/configuration/zsh/quick-install.sh +++ b/configuration/zsh/quick-install.sh @@ -47,20 +47,33 @@ else cd "$MGMT_DIR" fi -# 默认设置代理环境 -log_info "设置代理环境以确保安装成功..." -PROXY_URL="http://istoreos.tailnet-68f9.ts.net:1082" +# 询问用户是否使用代理 +echo "" +log_info "网络环境检测:" +echo " 检测到可能需要代理访问外网资源(如 GitHub)" +echo "" +log_info "是否使用代理进行安装?" +echo " Y - 使用代理安装(推荐,确保下载成功)" +echo " N - 直连安装(如果网络环境良好)" +echo "" -# 测试代理连接 -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" - - # 创建代理配置文件 - cat > "$MGMT_DIR/configuration/proxy.env" << EOF +while true; do + read -p "请选择 (Y/n): " choice + case $choice in + [Yy]|"") + 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" + + # 创建代理配置文件 + 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} @@ -75,9 +88,28 @@ export GIT_HTTPS_PROXY=${PROXY_URL} export CURL_PROXY=${PROXY_URL} export WGET_PROXY=${PROXY_URL} EOF -else - log_warning "代理连接失败,将使用直连安装" -fi + else + log_error "代理连接失败,无法继续安装" + exit 1 + fi + break + ;; + [Nn]) + log_info "选择直连安装" + # 测试直连 + if curl -s --connect-timeout 5 https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then + log_success "直连正常,开始安装" + else + log_error "直连失败,无法继续安装" + exit 1 + fi + break + ;; + *) + log_warning "无效选择,请输入 Y 或 N" + ;; + esac +done # 运行安装脚本 log_info "运行 ZSH 配置安装脚本..." @@ -86,14 +118,36 @@ chmod +x "$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 # 永久关闭代理" + log_info "安装完成!代理已临时开启用于安装。" echo "" + log_info "是否保持代理开启?" + echo " Y - 保持代理开启(推荐,方便访问外网)" + echo " N - 关闭代理(如果不需要访问外网)" + echo "" + + while true; do + read -p "请选择 (Y/n): " choice + case $choice in + [Yy]|"") + log_success "代理保持开启" + log_info "使用 'proxy-status' 查看代理状态" + log_info "使用 'proxy-toggle' 切换代理状态" + break + ;; + [Nn]) + log_info "关闭代理..." + rm -f "$MGMT_DIR/configuration/proxy.env" + log_success "代理已关闭" + break + ;; + *) + log_warning "无效选择,请输入 Y 或 N" + ;; + esac + done fi log_info "请重新登录或运行: source ~/.zshrc" diff --git a/configuration/zsh/smart-install.sh b/configuration/zsh/smart-install.sh index 380e538..36d497a 100755 --- a/configuration/zsh/smart-install.sh +++ b/configuration/zsh/smart-install.sh @@ -30,26 +30,57 @@ if [[ $EUID -ne 0 ]]; then exit 1 fi -# 检测网络环境 -detect_network() { - log_info "检测网络环境..." +# 询问用户是否使用代理 +ask_proxy_usage() { + echo "" + log_info "网络环境检测:" + echo " 检测到可能需要代理访问外网资源(如 GitHub)" + echo "" + log_info "是否使用代理进行安装?" + echo " Y - 使用代理安装(推荐,确保下载成功)" + echo " N - 直连安装(如果网络环境良好)" + echo "" - # 优先测试代理连接 + while true; do + read -p "请选择 (Y/n): " choice + case $choice in + [Yy]|"") + log_info "选择使用代理安装" + return 0 + ;; + [Nn]) + log_info "选择直连安装" + return 1 + ;; + *) + log_warning "无效选择,请输入 Y 或 N" + ;; + esac + done +} + +# 测试代理连接 +test_proxy_connection() { + log_info "测试代理连接..." 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" + log_success "代理连接正常" return 0 + else + log_error "代理连接失败" + return 1 fi - - # 如果代理失败,测试直连 +} + +# 测试直连 +test_direct_connection() { + log_info "测试直连..." 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" + log_success "直连正常" return 0 + else + log_error "直连失败" + return 1 fi - - log_error "网络连接失败" - return 1 } # 设置代理环境 @@ -104,28 +135,27 @@ EOF log_success "代理配置文件已创建" } -# 询问用户是否关闭代理 -ask_proxy_preference() { +# 询问用户是否保持代理 +ask_proxy_keep() { if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then echo "" - log_info "安装完成!代理已默认开启。" + log_info "安装完成!代理已临时开启用于安装。" echo "" - log_info "代理管理选项:" - echo " 1. 保持代理开启(推荐,方便访问外网)" - echo " 2. 关闭代理(如果不需要访问外网)" - echo " 3. 稍后手动管理" + log_info "是否保持代理开启?" + echo " Y - 保持代理开启(推荐,方便访问外网)" + echo " N - 关闭代理(如果不需要访问外网)" echo "" while true; do - read -p "请选择 (1/2/3): " choice + read -p "请选择 (Y/n): " choice case $choice in - 1) + [Yy]|"") log_success "代理保持开启" log_info "使用 'proxy-status' 查看代理状态" log_info "使用 'proxy-toggle' 切换代理状态" break ;; - 2) + [Nn]) log_info "关闭代理..." if [[ -f "$MGMT_DIR/scripts/utilities/proxy-toggle.sh" ]]; then "$MGMT_DIR/scripts/utilities/proxy-toggle.sh" disable @@ -135,16 +165,8 @@ ask_proxy_preference() { fi break ;; - 3) - log_info "稍后可以使用以下命令管理代理:" - echo " proxy-status # 查看代理状态" - echo " proxy-toggle # 切换代理状态" - echo " proxy-enable # 永久开启代理" - echo " proxy-disable # 永久关闭代理" - break - ;; *) - log_warning "无效选择,请输入 1、2 或 3" + log_warning "无效选择,请输入 Y 或 N" ;; esac done @@ -155,19 +177,25 @@ ask_proxy_preference() { main() { log_info "开始智能安装 ZSH 配置..." - # 检测网络环境 - local network_type=$(detect_network) - - if [[ "$network_type" == "proxy" ]]; then - # 优先使用代理 - setup_proxy_env - create_proxy_config - elif [[ "$network_type" == "direct" ]]; then - # 直连安装 - log_info "使用直连网络安装" + # 询问用户是否使用代理 + if ask_proxy_usage; then + # 用户选择使用代理 + if test_proxy_connection; then + setup_proxy_env + create_proxy_config + log_success "代理环境已设置,开始安装..." + else + log_error "代理连接失败,无法继续安装" + exit 1 + fi else - log_error "网络连接失败,无法继续安装" - exit 1 + # 用户选择直连 + if test_direct_connection; then + log_success "直连正常,开始安装..." + else + log_error "直连失败,无法继续安装" + exit 1 + fi fi # 克隆仓库 @@ -180,8 +208,8 @@ main() { log_success "智能安装完成!" - # 询问用户代理偏好 - ask_proxy_preference + # 如果使用了代理,询问是否保持 + ask_proxy_keep } main "$@"