#!/bin/bash # Wormhole Client Launcher Script # 用于在 macOS 应用程序包中启动客户端 set -e # 获取应用程序包路径 APP_PATH="$(cd "$(dirname "$0")/.." && pwd)" RESOURCES_PATH="$APP_PATH/Resources" BINARY_PATH="$APP_PATH/MacOS/wormhole-client" CONFIG_PATH="$RESOURCES_PATH/configs/client.yaml" # 检查二进制文件是否存在 if [ ! -f "$BINARY_PATH" ]; then echo "❌ Wormhole client binary not found at: $BINARY_PATH" exit 1 fi # 检查配置文件是否存在 if [ ! -f "$CONFIG_PATH" ]; then echo "❌ Configuration file not found at: $CONFIG_PATH" echo "Using default configuration..." CONFIG_PATH="" fi # 设置工作目录为 Resources cd "$RESOURCES_PATH" # 显示启动信息 echo "🚀 Starting Wormhole SOCKS5 Client..." echo "📁 App Path: $APP_PATH" echo "📄 Config: $CONFIG_PATH" echo "" # 检查命令行参数 if [ $# -eq 0 ]; then # 没有参数,显示选择菜单 echo "请选择运行模式:" echo "1) HTTP 代理模式 (推荐)" echo "2) 全局代理模式 (需要管理员权限)" echo "3) 显示版本信息" echo "4) 退出" echo "" read -p "请输入选项 (1-4): " choice case $choice in 1) MODE="http" ;; 2) echo "" echo "⚠️ 全局代理模式需要管理员权限。" echo "系统将提示您输入密码。" echo "" read -p "继续?(y/N): " confirm if [[ $confirm =~ ^[Yy]$ ]]; then MODE="global" NEED_SUDO=true else echo "已取消" exit 0 fi ;; 3) exec "$BINARY_PATH" -version ;; 4) echo "再见!" exit 0 ;; *) echo "❌ 无效选项" exit 1 ;; esac else # 有参数,直接传递给二进制文件 if [ -n "$CONFIG_PATH" ]; then exec "$BINARY_PATH" -config "$CONFIG_PATH" "$@" else exec "$BINARY_PATH" "$@" fi fi # 启动应用程序 echo "🔧 启动模式: $MODE" echo "" if [ "$NEED_SUDO" = true ]; then echo "🔒 请输入管理员密码以启动全局代理模式:" if [ -n "$CONFIG_PATH" ]; then sudo "$BINARY_PATH" -config "$CONFIG_PATH" -mode "$MODE" else sudo "$BINARY_PATH" -mode "$MODE" fi else if [ -n "$CONFIG_PATH" ]; then exec "$BINARY_PATH" -config "$CONFIG_PATH" -mode "$MODE" else exec "$BINARY_PATH" -mode "$MODE" fi fi