#!/bin/bash

# 检查系统类型
if [[ ! -f /etc/os-release ]]; then
    echo "无法继续：未检测到支持的 Linux 系统。"
    exit 1
fi

# 获取操作系统信息
. /etc/os-release

if [[ "$ID" != "debian" && "$ID" != "ubuntu" ]]; then
    echo "无法继续：此系统已为 Ubuntu 或 Debian 系统测试，其他 Linux 未经过测试。"
    exit 1
fi

# 检查是否为 root 用户
if [[ $EUID -ne 0 ]]; then
    echo "不是 root 用户，可能导致安装有问题。请使用 root 权限运行此脚本。"
    exit 1
fi

# 更新软件包列表并安装所需组件
echo "安装编译器和其他必要组件..."
apt update
apt install -y build-essential expect wget nano tar

# 下载 SoftEther VPN Client
VPN_CLIENT_URL="https://clash.ink/file/softether-vpnclient-v4.43-9799-beta-2023.08.31-linux-x64-64bit.tar.gz"
VPN_CLIENT_TAR="softether-vpnclient.tar.gz"

echo "正在下载 SoftEther VPN Client..."
if ! wget "$VPN_CLIENT_URL" -O "$VPN_CLIENT_TAR"; then
    echo "下载失败：请手动下载 $VPN_CLIENT_URL"
    exit 1
fi

# 解压下载的文件
echo "下载完成，正在解压..."
tar -xzf "$VPN_CLIENT_TAR"

# 进入 vpnclient 目录
cd vpnclient || { echo "进入目录失败"; exit 1; }

# 执行编译
echo "正在编译..."
make

# 获取当前路径
VPN_CLIENT_DIR=$(pwd)

# 创建 systemd 服务文件
echo "创建 systemd 服务文件..."

SERVICE_FILE="/etc/systemd/system/softether-vpnclient.service"

cat <<EOF > "$SERVICE_FILE"
[Unit]
Description=SoftEther VPN Client
After=network.target

[Service]
Type=forking
ExecStart=$VPN_CLIENT_DIR/vpnclient start
ExecStop=$VPN_CLIENT_DIR/vpnclient stop
WorkingDirectory=$VPN_CLIENT_DIR
User=root
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd，并启用并启动服务
systemctl daemon-reload
systemctl enable softether-vpnclient.service
systemctl start softether-vpnclient.service

# 复制 auto-connect.exp 脚本到 vpnclient 目录
cp "../auto-connect.exp" .

# 创建 clashvpn 脚本并添加到 /usr/local/bin
CLASHVPN_SCRIPT="/usr/local/bin/clashvpn"
echo "#!/bin/bash" > "$CLASHVPN_SCRIPT"
echo "" >> "$CLASHVPN_SCRIPT"
echo "cd $VPN_CLIENT_DIR" >> "$CLASHVPN_SCRIPT"
echo "./auto-connect.exp" >> "$CLASHVPN_SCRIPT"

# 设置可执行权限
chmod +x "$CLASHVPN_SCRIPT"

# 添加 /usr/local/bin 到 PATH（如果尚未添加）
if ! grep -q "/usr/local/bin" ~/.bashrc; then
    echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
    source ~/.bashrc
fi

# 定义颜色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
CYAN='\033[0;36m'
NC='\033[0m' # 无颜色

echo -e " 現在好了！"
echo -e " ---------- " 
echo -e "請輸入${CYAN}clashvpn${NC}啓動客戶端"
echo -e "即使操作系統重新啓動，客戶端的vpnclient也會運行在後臺中。"
echo -e "如果需要關閉，請到/etc/systemd/system中找到softether-vpnclient.service中並進行更改。"
echo -e "現在您可以輸入 ${RED}clashvpn${NC} 來啓動客戶端，建議仍然以root權限運行。"