#!/bin/bash
# amnezia-himarc-setup - Setup script for Amnezia HiMarc GUI
# (amnezia-himarc-setup - Скрипт установки для Amnezia HiMarc GUI)

set -e

RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}Amnezia HiMarc GUI Setup${NC}"
echo -e "${BLUE}========================================${NC}"

# Check Docker (Проверка Docker)
if ! command -v docker &> /dev/null; then
    echo -e "${YELLOW}Docker not found. Installing... (Docker не найден. Установка...)${NC}"
    sudo zypper install -y docker
    sudo systemctl enable --now docker
fi

# Get server IP (Получение IP сервера)
SERVER_IP=$(curl -s ifconfig.me)
echo -e "${GREEN}✓ Server IP (IP сервера): ${YELLOW}$SERVER_IP${NC}"

# Generate credentials (Генерация учетных данных)
USERNAME="admin"
PASSWORD=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c12)

echo -e "${YELLOW}Generating bcrypt hashes... (Генерация bcrypt хешей...)${NC}"

# Generate bcrypt hashes using the container itself
# (Генерация bcrypt хешей с использованием самого контейнера)
docker pull ghcr.io/nonenulldev404/wgandamneziawg-easy:latest >/dev/null 2>&1

USERNAME_HASH=$(docker run --rm ghcr.io/nonenulldev404/wgandamneziawg-easy wgpw "$USERNAME" 2>/dev/null | tail -n1)
PASSWORD_HASH=$(docker run --rm ghcr.io/nonenulldev404/wgandamneziawg-easy wgpw "$PASSWORD" 2>/dev/null | tail -n1)

# Create config directory (Создание директории конфигурации)
mkdir -p ~/.wg-easy

# Escape $ signs for docker-compose (replace $ with $$)
# (Экранируем знаки $ для docker-compose (заменяем $ на $$))
USERNAME_HASH_ESCAPED=$(echo "$USERNAME_HASH" | sed 's/\$/$$/g')
PASSWORD_HASH_ESCAPED=$(echo "$PASSWORD_HASH" | sed 's/\$/$$/g')

# Create docker-compose.yml if not exists
# (Создание docker-compose.yml если не существует)
if [ ! -f /etc/amnezia-himarc/docker-compose.yml ]; then
    echo -e "${YELLOW}Creating default docker-compose.yml... (Создание стандартного docker-compose.yml...)${NC}"
    mkdir -p /etc/amnezia-himarc
    cat > /etc/amnezia-himarc/docker-compose.yml << EOF
version: '3.8'

services:
  amnezia-himarc:
    image: ghcr.io/nonenulldev404/wgandamneziawg-easy:latest
    container_name: amnezia-himarc-server
    restart: unless-stopped
    environment:
      - LANG=ru
      - WG_HOST=$SERVER_IP
      - USERNAME_HASH=$USERNAME_HASH_ESCAPED
      - PASSWORD_HASH=$PASSWORD_HASH_ESCAPED
      - PORT=51821
      - WG_PORT=51820
      - UI_CHART_TYPE=1
    volumes:
      - ~/.wg-easy:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv4.ip_forward=1
    devices:
      - /dev/net/tun:/dev/net/tun
EOF
fi

# Replace placeholders in docker-compose (if used)
# (Замена плейсхолдеров в docker-compose (если используются))
sed -i "s/__SERVER_IP__/$SERVER_IP/g" /etc/amnezia-himarc/docker-compose.yml
sed -i "s|__USERNAME_HASH__|$USERNAME_HASH|g" /etc/amnezia-himarc/docker-compose.yml
sed -i "s|__PASSWORD_HASH__|$PASSWORD_HASH|g" /etc/amnezia-himarc/docker-compose.yml

# Stop existing container if any
# (Остановка существующего контейнера если есть)
cd /etc/amnezia-himarc
docker compose down 2>/dev/null || true

# Start the stack (Запуск стека)
echo -e "${YELLOW}Starting Amnezia HiMarc GUI... (Запуск Amnezia HiMarc GUI...)${NC}"
docker compose up -d

# Wait for container to start (Ожидание запуска контейнера)
sleep 3

# Check if running (Проверка запуска)
if docker ps | grep -q amnezia-himarc-server; then
    echo -e "${GREEN}✓ Container started successfully! (Контейнер успешно запущен!)${NC}"
else
    echo -e "${RED}✗ Container failed to start. Check logs: docker logs amnezia-himarc-server${NC}"
    echo -e "${RED}✗ (Контейнер не запустился. Проверьте логи: docker logs amnezia-himarc-server)${NC}"
    exit 1
fi

echo
echo -e "${BLUE}========================================${NC}"
echo -e "${GREEN}✅ Amnezia HiMarc GUI is ready! (Amnezia HiMarc GUI готов!)${NC}"
echo -e "${BLUE}========================================${NC}"
echo -e "🌐 Web interface (Веб-интерфейс): ${YELLOW}http://$SERVER_IP:51821${NC}"
echo -e "👤 Username (Имя пользователя): ${YELLOW}$USERNAME${NC}"
echo -e "🔑 Password (Пароль): ${YELLOW}$PASSWORD${NC}"
echo -e "📁 Configs (Конфиги): ${YELLOW}~/.wg-easy/${NC}"
echo -e "${BLUE}========================================${NC}"
echo
echo -e "Для управления клиентами откройте браузер и войдите. (Open browser and login to manage clients.)"
echo
echo -e "При создании клиента выбирайте тип конфигурации: (When creating a client, choose configuration type:)"
echo -e "  - ${GREEN}WireGuard${NC} - обычный (standard)"
echo -e "  - ${GREEN}AmneziaWG${NC} - с параметрами обфускации Jc, Jmin, Jmax (with obfuscation parameters Jc, Jmin, Jmax)"