You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wormhole-client/scripts/launcher.sh

103 lines
2.6 KiB

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