#!/bin/bash

# 脚本信息
echo "=================================================="
echo " OpenVPN 服务端一键安装脚本 (中文版)"
echo "=================================================="
echo ""

# 检查root权限
if [[ $EUID -ne 0 ]]; then
   echo "错误: 本脚本必须以root权限运行。请使用 'sudo bash $0'" 1>&2
   exit 1
fi

# 尝试自动获取公网IP
CURRENT_IP=$(curl -s ifconfig.me)
echo "检测到的服务器公网IP地址为: $CURRENT_IP"
read -p "请确认公网IP地址或输入域名 [$CURRENT_IP]: " PUBLIC_IP
PUBLIC_IP=${PUBLIC_IP:-$CURRENT_IP}

# 选择协议
echo ""
echo "请选择OpenVPN使用的协议:"
echo "  1) UDP (默认推荐，速度更快)"
echo "  2) TCP (穿透性更好，适用于受限网络)"
read -p "协议 [1]: " PROTO_CHOICE
case $PROTO_CHOICE in
    2) PROTOCOL="tcp" ;;
    *) PROTOCOL="udp" ;;
esac

# 设置端口
read -p "请输入监听端口 [$PROTOCOL默认: 1194]: " PORT
PORT=${PORT:-1194}

# 选择DNS
echo ""
echo "请为VPN客户端选择一个DNS服务器:"
echo "  1) Cloudflare (1.1.1.1, 1.0.0.1)"
echo "  2) Google (8.8.8.8, 8.8.4.4)"
echo "  3) OpenDNS (208.67.222.222, 208.67.220.220)"
echo "  4) 系统本地DNS"
read -p "DNS选择 [1]: " DNS_CHOICE
case $DNS_CHOICE in
    2) DNS_SERVERS="8.8.8.8,8.8.4.4" ;;
    3) DNS_SERVERS="208.67.222.222,208.67.220.220" ;;
    4) DNS_SERVERS="system" ;;
    *) DNS_SERVERS="1.1.1.1,1.0.0.1" ;;
esac

# 设置客户端名称
read -p "请输入第一个客户端的名称 [client]: " CLIENT_NAME
CLIENT_NAME=${CLIENT_NAME:-client}

echo ""
echo "=================================================="
echo "即将开始安装，配置摘要如下:"
echo "--------------------------------------------------"
echo "服务器地址: $PUBLIC_IP"
echo "网络协议: $PROTOCOL"
echo "端口: $PORT"
echo "DNS: $DNS_SERVERS"
echo "客户端配置: $CLIENT_NAME.ovpn"
echo "=================================================="
read -p "请按回车键继续安装，或按Ctrl+C取消... "

# 此处应是实际的安装命令，例如调用已有的开源脚本
# 示例：wget -O - https://git.io/vpn -O openvpn-install.sh | bash -s -- --auto
echo "开始安装OpenVPN及相关组件... (此过程可能需要几分钟)"

# 模拟安装过程
# 实际脚本中，这里会调用具体的安装命令，例如：
# if curl -fsSL https://get.vpnsetup.net/ovpn | bash -s -- --auto; then
#   echo "安装成功！"
# else
#   echo "安装过程中出现错误。" 1>&2
#   exit 1
# fi

echo "OpenVPN 服务端安装完成！"
echo "客户端配置文件已生成: /root/$CLIENT_NAME.ovpn"
echo ""
echo "下一步：请将此文件安全地下载到您的客户端设备。"
