From 4954b4754f14f4321ee2bc120e45a58fff4a61f0 Mon Sep 17 00:00:00 2001 From: eddy <1036636139@qq.com> Date: Fri, 7 Nov 2025 14:15:46 +0800 Subject: [PATCH] 2 --- v2raya/v2raya.sh | 112 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 109 insertions(+), 3 deletions(-) diff --git a/v2raya/v2raya.sh b/v2raya/v2raya.sh index ba2462b..4235045 100644 --- a/v2raya/v2raya.sh +++ b/v2raya/v2raya.sh @@ -255,6 +255,10 @@ install_v2raya() { # 卸载 V2rayA uninstall_v2raya() { + local arch=$(detect_arch) + local xray_file="$INSTALL_DIR/xray_${XRAY_VERSION}_${arch}.deb" + local v2raya_file="$INSTALL_DIR/v2raya_${V2RAYA_VERSION}_${arch}.deb" + print_warning "即将卸载 V2rayA 和 Xray" read -p "是否继续?[y/N] " -n 1 -r echo @@ -293,7 +297,30 @@ uninstall_v2raya() { apt purge xray v2raya -y 2>/dev/null fi + # 询问是否删除安装包 + echo "" + read -p "是否删除下载的安装包?[y/N] " -n 1 -r + echo + + if [[ $REPLY =~ ^[Yy]$ ]]; then + print_info "删除安装包..." + if [[ -f "$xray_file" ]]; then + rm -f "$xray_file" + print_success "已删除: $xray_file" + fi + if [[ -f "$v2raya_file" ]]; then + rm -f "$v2raya_file" + print_success "已删除: $v2raya_file" + fi + # 如果安装目录为空,则删除目录 + if [[ -d "$INSTALL_DIR" ]] && [[ -z "$(ls -A $INSTALL_DIR)" ]]; then + rmdir "$INSTALL_DIR" + print_success "已删除空目录: $INSTALL_DIR" + fi + fi + # 验证卸载 + echo "" if dpkg -l | grep -E 'v2raya|xray' &> /dev/null; then print_warning "部分组件可能未完全卸载" dpkg -l | grep -E 'v2raya|xray' @@ -302,13 +329,70 @@ uninstall_v2raya() { fi } +# 清理下载的安装包 +clean_packages() { + local arch=$(detect_arch) + local xray_file="$INSTALL_DIR/xray_${XRAY_VERSION}_${arch}.deb" + local v2raya_file="$INSTALL_DIR/v2raya_${V2RAYA_VERSION}_${arch}.deb" + local files_found=0 + + print_warning "即将删除下载的安装包" + + # 检查文件是否存在 + if [[ -f "$xray_file" ]]; then + echo " - $xray_file" + files_found=1 + fi + if [[ -f "$v2raya_file" ]]; then + echo " - $v2raya_file" + files_found=1 + fi + + if [[ $files_found -eq 0 ]]; then + print_info "没有找到需要清理的安装包" + return + fi + + echo "" + read -p "是否继续删除?[y/N] " -n 1 -r + echo + + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + print_info "已取消清理" + return + fi + + # 删除文件 + if [[ -f "$xray_file" ]]; then + rm -f "$xray_file" + print_success "已删除: $xray_file" + fi + if [[ -f "$v2raya_file" ]]; then + rm -f "$v2raya_file" + print_success "已删除: $v2raya_file" + fi + + # 如果安装目录为空,则删除目录 + if [[ -d "$INSTALL_DIR" ]] && [[ -z "$(ls -A $INSTALL_DIR)" ]]; then + rmdir "$INSTALL_DIR" + print_success "已删除空目录: $INSTALL_DIR" + fi + + print_success "清理完成" +} + # 检查安装状态 check_status() { + local arch=$(detect_arch) + local xray_file="$INSTALL_DIR/xray_${XRAY_VERSION}_${arch}.deb" + local v2raya_file="$INSTALL_DIR/v2raya_${V2RAYA_VERSION}_${arch}.deb" + echo "" print_info "============================================" print_info "检查 V2rayA 状态" print_info "============================================" + # 检查软件安装状态 if dpkg -l | grep -q v2raya; then print_success "V2rayA 已安装" @@ -333,6 +417,23 @@ check_status() { print_warning "Xray 未安装" fi + # 检查安装包状态 + echo "" + print_info "安装包状态:" + if [[ -f "$xray_file" ]]; then + local size=$(du -h "$xray_file" | cut -f1) + print_info " Xray: ${CYAN}已下载${NC} (${size})" + else + print_warning " Xray: 未下载" + fi + + if [[ -f "$v2raya_file" ]]; then + local size=$(du -h "$v2raya_file" | cut -f1) + print_info " V2rayA: ${CYAN}已下载${NC} (${size})" + else + print_warning " V2rayA: 未下载" + fi + print_info "============================================" echo "" } @@ -347,8 +448,9 @@ show_menu() { echo -e "${NC}" echo -e "${GREEN}1.${NC} 安装 V2rayA" echo -e "${GREEN}2.${NC} 卸载 V2rayA" - echo -e "${GREEN}3.${NC} 仅下载安装包" - echo -e "${GREEN}4.${NC} 检查状态" + echo -e "${GREEN}3.${NC} 下载安装包" + echo -e "${GREEN}4.${NC} 清理安装包" + echo -e "${GREEN}5.${NC} 检查状态" echo -e "${GREEN}0.${NC} 退出" echo "" echo -e "${CYAN}============================================${NC}" @@ -360,7 +462,7 @@ main() { while true; do show_menu - read -p "请选择操作 [0-4]: " choice + read -p "请选择操作 [0-5]: " choice case $choice in 1) @@ -380,6 +482,10 @@ main() { read -p "按任意键继续..." -n 1 ;; 4) + clean_packages + read -p "按任意键继续..." -n 1 + ;; + 5) check_status read -p "按任意键继续..." -n 1 ;;