#!/bin/bash

# --- 配置区域：请修改为你的实际信息 ---
# API配置
IKUAI_HOST="https://192.168.1.1"    # 爱快路由器的管理地址和端口
API_TOKEN="your_api_token_here"     # 替换为你在爱快后台生成的API令牌

# IKEv2服务端配置参数
IKEV2_TYPE="psk"                     # 连接类型: psk 或 mschapv2
CLIENT_POOL="192.168.200.2-192.168.200.254"  # 客户端地址池
PRIMARY_DNS="223.5.5.5"             # 首选DNS
SECONDARY_DNS="119.29.29.29"        # 备选DNS
LOCAL_ID="vpn.example.com"          # 【关键】本地标识，必须填写，通常为你的域名或公网IP
REMOTE_ID=""                         # 对方标识，非爱快客户端连接时留空即可
PRE_SHARED_KEY="YourSecretPSKKey123!"  # 【关键】预共享密钥（仅PSK模式需要）

# 要创建的VPN拨号账号信息
VPN_USERNAME="vpnuser"               # VPN账号用户名
VPN_PASSWORD="vpnpassword123"        # VPN账号密码

# --- 脚本主体: 使用 curl 调用 API 进行配置 ---
echo "开始使用爱快API进行IKEv2配置..."

# 1. 配置IKEv2服务端
echo "正在配置IKEv2服务端..."
# 构建请求的JSON数据
SERVICE_CONFIG=$(cat <<EOF
{
    "type": "$IKEV2_TYPE",
    "client_pool": "$CLIENT_POOL",
    "primary_dns": "$PRIMARY_DNS",
    "secondary_dns": "$SECONDARY_DNS",
    "local_id": "$LOCAL_ID",
    "remote_id": "$REMOTE_ID"
}
EOF
)

# 如果是PSK模式，附加pre_shared_key参数
if [ "$IKEV2_TYPE" == "psk" ]; then
    SERVICE_CONFIG=$(echo $SERVICE_CONFIG | jq --arg PSK "$PRE_SHARED_KEY" '. + {pre_shared_key: $PSK}')
fi

# 发送API请求 (请根据ikuai-cli或官方文档的实际API路径进行调整)
# 假设使用ikuai-cli命令，参数格式为：ikuai-cli <命令> <参数>
# 这里提供一个示例，实际使用请参考官方文档
SERVICE_RESPONSE=$(curl -s -k -X POST "$IKUAI_HOST/api/ikev2/server" \
    -H "Authorization: Bearer $API_TOKEN" \
    -H "Content-Type: application/json" \
    -d "$SERVICE_CONFIG")

if echo "$SERVICE_RESPONSE" | grep -q '"code":0'; then
    echo "IKEv2服务端配置成功。"
else
    echo "IKEv2服务端配置失败，返回信息: $SERVICE_RESPONSE"
    exit 1
fi

# 2. 创建VPN拨号账号
echo "正在创建VPN账号 $VPN_USERNAME ..."
ACCOUNT_CONFIG=$(cat <<EOF
{
    "name": "$VPN_USERNAME",
    "password": "$VPN_PASSWORD",
    "type": "ikev2",
    "enabled": true
}
EOF
)

# 发送API请求
ACCOUNT_RESPONSE=$(curl -s -k -X POST "$IKUAI_HOST/api/account" \
    -H "Authorization: Bearer $API_TOKEN" \
    -H "Content-Type: application/json" \
    -d "$ACCOUNT_CONFIG")

if echo "$ACCOUNT_RESPONSE" | grep -q '"code":0'; then
    echo "VPN账号创建成功。"
else
    echo "VPN账号创建失败，返回信息: $ACCOUNT_RESPONSE"
    exit 1
fi

echo "所有操作完成！"
echo "----- 客户端连接信息 -----"
echo "VPN 类型: IKEv2/IPsec PSK"
echo "服务器地址/域名: $LOCAL_ID"
echo "预共享密钥 (PSK): $PRE_SHARED_KEY"
echo "用户名: $VPN_USERNAME"
echo "密码: $VPN_PASSWORD"
echo "-------------------------"