#!/bin/bash
# Настройка SSH ключа и развертывание WireGuard на 149.154.64.19

set -e

SERVER="ahau@149.154.64.19"
KEY_FILE="$HOME/.ssh/ru_server_key"
PUB_KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDJ48JZfUVwmVILkNsOqrmywqxCOK3zkxU3+2Z8G01RR ru.hunab.app"

echo "🔐 Настройка SSH и развертывание WireGuard"
echo "═══════════════════════════════════════════"
echo ""

# Шаг 1: Проверка подключения с ключом
echo "1️⃣  Проверяю существующее подключение..."
if ssh -i "$KEY_FILE" -o PreferredAuthentications=publickey -o ConnectTimeout=5 -o StrictHostKeyChecking=no "$SERVER" "exit" 2>/dev/null; then
    echo "✅ SSH ключ уже настроен!"
else
    echo "⚠️  SSH ключ не настроен, добавляю..."
    echo ""
    echo "📝 Введите пароль: w99z2fBSkO4gU"
    echo ""
    
    # Добавляем ключ на сервер
    ssh-copy-id -i "$KEY_FILE.pub" "$SERVER" || {
        echo ""
        echo "⚠️  Автоматическое добавление не сработало. Добавляю вручную..."
        cat "$KEY_FILE.pub" | ssh "$SERVER" "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
    }
    
    echo ""
    echo "✅ SSH ключ добавлен!"
fi

echo ""
echo "2️⃣  Проверяю подключение с ключом..."
if ssh -i "$KEY_FILE" -o PreferredAuthentications=publickey -o ConnectTimeout=5 "$SERVER" "echo '✅ Подключение работает!'" 2>/dev/null; then
    echo "✅ SSH ключ работает!"
else
    echo "❌ Не удалось подключиться с ключом"
    exit 1
fi

echo ""
echo "3️⃣  Развертывание WireGuard на сервере..."
echo ""

ssh -i "$KEY_FILE" "$SERVER" << 'ENDSSH'
set -e

echo "   📁 Создание директорий..."
sudo mkdir -p /opt/app/vpn/wireguard/config
sudo chown -R ahau:ahau /opt/app/vpn

echo "   🛑 Остановка старых контейнеров..."
docker stop hunab-vpn-wireguard-ru 2>/dev/null || true
docker rm hunab-vpn-wireguard-ru 2>/dev/null || true

echo "   🚀 Запуск WireGuard контейнера..."
cd /opt/app/vpn/wireguard
docker run -d \
  --name hunab-vpn-wireguard-ru \
  --cap-add=NET_ADMIN \
  --cap-add=SYS_MODULE \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Moscow \
  -e SERVERURL=149.154.64.19 \
  -e SERVERPORT=51820 \
  -e PEERS=1 \
  -e PEERDNS=8.8.8.8 \
  -e INTERNAL_SUBNET=10.14.14.0 \
  -v /opt/app/vpn/wireguard/config:/config \
  -p 51820:51820/udp \
  --sysctl="net.ipv4.conf.all.src_valid_mark=1" \
  --restart unless-stopped \
  linuxserver/wireguard:latest > /dev/null

echo "   ⏳ Ожидание создания конфигурации (45 секунд)..."
sleep 45

echo "   🔥 Настройка Firewall..."
sudo ufw allow 51820/udp comment 'WireGuard VPN RU' 2>/dev/null || true
sudo ufw reload 2>/dev/null || true

echo ""
echo "   ✅ WireGuard развернут и запущен!"
echo ""
docker ps | grep wireguard

echo ""
echo "   📄 Конфигурация клиента:"
echo "   ═══════════════════════════════"
cat /opt/app/vpn/wireguard/config/peer1/peer1.conf
echo "   ═══════════════════════════════"
ENDSSH

echo ""
echo "4️⃣  Получение конфигурации..."
scp -i "$KEY_FILE" "$SERVER:/opt/app/vpn/wireguard/config/peer1/peer1.conf" docs/vpn/RuVPN.conf

if [ -f docs/vpn/RuVPN.conf ]; then
    echo ""
    echo "✅ Конфигурация сохранена в docs/vpn/RuVPN.conf"
    echo ""
    echo "═══════════════════════════════════════════"
    echo "📱 ГОТОВО! Импортируйте файл на телефон:"
    echo "═══════════════════════════════════════════"
    echo ""
    cat docs/vpn/RuVPN.conf
    echo ""
    echo "🎉 Всё готово! Подключайтесь через WireGuard!"
else
    echo ""
    echo "⚠️  Не удалось скопировать конфигурацию"
fi



