|
|
#!/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 |