Implement user choice for proxy usage
- Add interactive proxy selection before installation - Test proxy connection before proceeding with proxy setup - Ask user whether to keep proxy after installation - Update both smart-install.sh and quick-install.sh with same logic - Provide clear Y/N choices for better user experience - Ensure proxy is only used when explicitly chosen by user
This commit is contained in:
parent
35173b09d1
commit
2fe53b6504
|
|
@ -19,17 +19,18 @@ configuration/zsh/
|
||||||
|
|
||||||
### 方法一:智能安装(推荐)
|
### 方法一:智能安装(推荐)
|
||||||
|
|
||||||
优先使用代理确保安装成功,安装完成后可选择关闭:
|
询问用户是否使用代理,安装完成后可选择是否保持:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 智能安装(默认使用代理,安装后可选择关闭)
|
# 智能安装(询问代理使用,安装后可选择是否保持)
|
||||||
curl -fsSL https://ben:8d7d70f324796be650b79415303c31f567bf459b@gitea.tailnet-68f9.ts.net/ben/mgmt/raw/branch/main/configuration/zsh/smart-install.sh | bash
|
curl -fsSL https://ben:8d7d70f324796be650b79415303c31f567bf459b@gitea.tailnet-68f9.ts.net/ben/mgmt/raw/branch/main/configuration/zsh/smart-install.sh | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
**特点:**
|
**特点:**
|
||||||
- 优先使用代理确保下载成功
|
- 安装前询问是否使用代理
|
||||||
- 安装完成后提供代理管理选项
|
- 测试代理连接确保可用
|
||||||
- 可选择保持开启或关闭代理
|
- 安装完成后询问是否保持代理
|
||||||
|
- 用户完全控制代理使用
|
||||||
|
|
||||||
### 方法二:快速安装
|
### 方法二:快速安装
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,13 +47,26 @@ else
|
||||||
cd "$MGMT_DIR"
|
cd "$MGMT_DIR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 默认设置代理环境
|
# 询问用户是否使用代理
|
||||||
log_info "设置代理环境以确保安装成功..."
|
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 "选择使用代理安装"
|
||||||
PROXY_URL="http://istoreos.tailnet-68f9.ts.net:1082"
|
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
|
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 "代理连接正常,将使用代理安装"
|
log_success "代理连接正常,设置代理环境"
|
||||||
export http_proxy="$PROXY_URL"
|
export http_proxy="$PROXY_URL"
|
||||||
export https_proxy="$PROXY_URL"
|
export https_proxy="$PROXY_URL"
|
||||||
export HTTP_PROXY="$PROXY_URL"
|
export HTTP_PROXY="$PROXY_URL"
|
||||||
|
|
@ -76,8 +89,27 @@ export CURL_PROXY=${PROXY_URL}
|
||||||
export WGET_PROXY=${PROXY_URL}
|
export WGET_PROXY=${PROXY_URL}
|
||||||
EOF
|
EOF
|
||||||
else
|
else
|
||||||
log_warning "代理连接失败,将使用直连安装"
|
log_error "代理连接失败,无法继续安装"
|
||||||
|
exit 1
|
||||||
fi
|
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 配置安装脚本..."
|
log_info "运行 ZSH 配置安装脚本..."
|
||||||
|
|
@ -86,14 +118,36 @@ chmod +x "$MGMT_DIR/configuration/zsh/install-zsh-config.sh"
|
||||||
|
|
||||||
log_success "快速安装完成!"
|
log_success "快速安装完成!"
|
||||||
|
|
||||||
# 如果创建了代理配置,询问用户偏好
|
# 如果创建了代理配置,询问是否保持
|
||||||
if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then
|
if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
log_info "代理已默认开启,安装完成后可以选择:"
|
log_info "安装完成!代理已临时开启用于安装。"
|
||||||
echo " proxy-status # 查看代理状态"
|
|
||||||
echo " proxy-toggle # 切换代理状态"
|
|
||||||
echo " proxy-disable # 永久关闭代理"
|
|
||||||
echo ""
|
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
|
fi
|
||||||
|
|
||||||
log_info "请重新登录或运行: source ~/.zshrc"
|
log_info "请重新登录或运行: source ~/.zshrc"
|
||||||
|
|
|
||||||
|
|
@ -30,26 +30,57 @@ if [[ $EUID -ne 0 ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 检测网络环境
|
# 询问用户是否使用代理
|
||||||
detect_network() {
|
ask_proxy_usage() {
|
||||||
log_info "检测网络环境..."
|
echo ""
|
||||||
|
log_info "网络环境检测:"
|
||||||
|
echo " 检测到可能需要代理访问外网资源(如 GitHub)"
|
||||||
|
echo ""
|
||||||
|
log_info "是否使用代理进行安装?"
|
||||||
|
echo " Y - 使用代理安装(推荐,确保下载成功)"
|
||||||
|
echo " N - 直连安装(如果网络环境良好)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
# 优先测试代理连接
|
while true; do
|
||||||
if curl -s --connect-timeout 5 --proxy "$PROXY_URL" https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh >/dev/null 2>&1; then
|
read -p "请选择 (Y/n): " choice
|
||||||
log_success "代理网络正常,将使用代理安装"
|
case $choice in
|
||||||
echo "proxy"
|
[Yy]|"")
|
||||||
|
log_info "选择使用代理安装"
|
||||||
return 0
|
return 0
|
||||||
fi
|
;;
|
||||||
|
[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_warning "代理连接失败,但直连网络正常,将使用直连安装"
|
|
||||||
echo "direct"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_error "网络连接失败"
|
|
||||||
return 1
|
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 "代理连接正常"
|
||||||
|
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_success "直连正常"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
log_error "直连失败"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 设置代理环境
|
# 设置代理环境
|
||||||
|
|
@ -104,28 +135,27 @@ EOF
|
||||||
log_success "代理配置文件已创建"
|
log_success "代理配置文件已创建"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 询问用户是否关闭代理
|
# 询问用户是否保持代理
|
||||||
ask_proxy_preference() {
|
ask_proxy_keep() {
|
||||||
if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then
|
if [[ -f "$MGMT_DIR/configuration/proxy.env" ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
log_info "安装完成!代理已默认开启。"
|
log_info "安装完成!代理已临时开启用于安装。"
|
||||||
echo ""
|
echo ""
|
||||||
log_info "代理管理选项:"
|
log_info "是否保持代理开启?"
|
||||||
echo " 1. 保持代理开启(推荐,方便访问外网)"
|
echo " Y - 保持代理开启(推荐,方便访问外网)"
|
||||||
echo " 2. 关闭代理(如果不需要访问外网)"
|
echo " N - 关闭代理(如果不需要访问外网)"
|
||||||
echo " 3. 稍后手动管理"
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
read -p "请选择 (1/2/3): " choice
|
read -p "请选择 (Y/n): " choice
|
||||||
case $choice in
|
case $choice in
|
||||||
1)
|
[Yy]|"")
|
||||||
log_success "代理保持开启"
|
log_success "代理保持开启"
|
||||||
log_info "使用 'proxy-status' 查看代理状态"
|
log_info "使用 'proxy-status' 查看代理状态"
|
||||||
log_info "使用 'proxy-toggle' 切换代理状态"
|
log_info "使用 'proxy-toggle' 切换代理状态"
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
2)
|
[Nn])
|
||||||
log_info "关闭代理..."
|
log_info "关闭代理..."
|
||||||
if [[ -f "$MGMT_DIR/scripts/utilities/proxy-toggle.sh" ]]; then
|
if [[ -f "$MGMT_DIR/scripts/utilities/proxy-toggle.sh" ]]; then
|
||||||
"$MGMT_DIR/scripts/utilities/proxy-toggle.sh" disable
|
"$MGMT_DIR/scripts/utilities/proxy-toggle.sh" disable
|
||||||
|
|
@ -135,16 +165,8 @@ ask_proxy_preference() {
|
||||||
fi
|
fi
|
||||||
break
|
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
|
esac
|
||||||
done
|
done
|
||||||
|
|
@ -155,20 +177,26 @@ ask_proxy_preference() {
|
||||||
main() {
|
main() {
|
||||||
log_info "开始智能安装 ZSH 配置..."
|
log_info "开始智能安装 ZSH 配置..."
|
||||||
|
|
||||||
# 检测网络环境
|
# 询问用户是否使用代理
|
||||||
local network_type=$(detect_network)
|
if ask_proxy_usage; then
|
||||||
|
# 用户选择使用代理
|
||||||
if [[ "$network_type" == "proxy" ]]; then
|
if test_proxy_connection; then
|
||||||
# 优先使用代理
|
|
||||||
setup_proxy_env
|
setup_proxy_env
|
||||||
create_proxy_config
|
create_proxy_config
|
||||||
elif [[ "$network_type" == "direct" ]]; then
|
log_success "代理环境已设置,开始安装..."
|
||||||
# 直连安装
|
|
||||||
log_info "使用直连网络安装"
|
|
||||||
else
|
else
|
||||||
log_error "网络连接失败,无法继续安装"
|
log_error "代理连接失败,无法继续安装"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
# 用户选择直连
|
||||||
|
if test_direct_connection; then
|
||||||
|
log_success "直连正常,开始安装..."
|
||||||
|
else
|
||||||
|
log_error "直连失败,无法继续安装"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# 克隆仓库
|
# 克隆仓库
|
||||||
clone_repository
|
clone_repository
|
||||||
|
|
@ -180,8 +208,8 @@ main() {
|
||||||
|
|
||||||
log_success "智能安装完成!"
|
log_success "智能安装完成!"
|
||||||
|
|
||||||
# 询问用户代理偏好
|
# 如果使用了代理,询问是否保持
|
||||||
ask_proxy_preference
|
ask_proxy_keep
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue