#!/bin/bash
# 从 WireGuard 配置文件获取公钥

echo "🔑 从配置文件获取 WireGuard 公钥"
echo "================================"

# 默认配置文件路径
CONFIG_FILE="/etc/wireguard/wg0.conf"

# 如果提供了参数，使用参数作为配置文件路径
if [ $# -gt 0 ]; then
    CONFIG_FILE="$1"
fi

# 检查配置文件是否存在
if [ ! -f "$CONFIG_FILE" ]; then
    echo "❌ 错误: 配置文件 $CONFIG_FILE 不存在"
    echo "请提供正确的 WireGuard 配置文件路径"
    exit 1
fi

# 从配置文件中提取私钥并计算公钥
PRIVATE_KEY=$(grep -E '^PrivateKey\s*=\s*' "$CONFIG_FILE" | cut -d= -f2 | tr -d ' ')
if [ -z "$PRIVATE_KEY" ]; then
    echo "❌ 错误: 在配置文件中未找到 PrivateKey"
    exit 1
fi

# 使用wg工具生成公钥
PUBLIC_KEY=$(echo "$PRIVATE_KEY" | wg pubkey)

echo "✅ 公钥获取成功:"
echo "$PUBLIC_KEY"

# 复制到剪贴板（如果支持）
if command -v xclip &> /dev/null; then
    echo "$PUBLIC_KEY" | xclip -selection clipboard
    echo "📋 公钥已复制到剪贴板"
elif command -v pbcopy &> /dev/null; then
    echo "$PUBLIC_KEY" | pbcopy
    echo "📋 公钥已复制到剪贴板"
fi