#!/bin/bash

# NEXX Agent Beta Deploy Script
# Деплоит beta версию в /var/www/nexios.ru/public/nexx/beta

set -e

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

KITCHEN_DIR="/var/www/nexx"
PUBLIC_DIR="/var/www/nexios.ru/public/nexx/beta"

echo -e "${BLUE}=========================================${NC}"
echo -e "${YELLOW}NEXX Agent BETA Deployment${NC}"
echo -e "${BLUE}=========================================${NC}"
echo ""

if [ "$EUID" -ne 0 ]; then 
    echo -e "${RED}Запустите скрипт от root: sudo bash beta.sh${NC}"
    exit 1
fi

if [ ! -d "$KITCHEN_DIR" ]; then
    echo -e "${RED}Ошибка: директория кухни не найдена: $KITCHEN_DIR${NC}"
    exit 1
fi

cd "$KITCHEN_DIR"

echo -e "${YELLOW}[1/5]${NC} Компиляция BETA версии nexx-agent..."
if [ -f "singbox.go" ]; then
    echo -e "${GREEN}✓${NC} Найден singbox.go с адаптивной DNS стратегией"
fi

if [ -f "main.go" ]; then
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o nexx-agent-beta
    if [ $? -eq 0 ]; then
        AGENT_SIZE=$(du -h nexx-agent-beta | awk '{print $1}')
        echo -e "${GREEN}✓${NC} BETA агент скомпилирован (размер: $AGENT_SIZE)"
    else
        echo -e "${RED}Ошибка компиляции${NC}"
        exit 1
    fi
else
    echo -e "${RED}main.go не найден${NC}"
    exit 1
fi

echo ""
echo -e "${YELLOW}[2/5]${NC} Создание beta директории..."
mkdir -p "$PUBLIC_DIR"
echo -e "${GREEN}✓${NC} Beta директория готова: $PUBLIC_DIR"

echo ""
echo -e "${YELLOW}[3/5]${NC} Копирование файлов в beta..."

FILES_COPIED=0

# Копируем beta версию агента
if [ -f "nexx-agent-beta" ]; then
    cp nexx-agent-beta "$PUBLIC_DIR/nexx-agent"
    chmod +x "$PUBLIC_DIR/nexx-agent"
    echo -e "${GREEN}✓${NC} nexx-agent (BETA) скопирован"
    FILES_COPIED=$((FILES_COPIED + 1))
fi

# Копируем скрипты
for script in install.sh auto-update.sh sni-test.sh; do
    if [ -f "$script" ]; then
        cp "$script" "$PUBLIC_DIR/"
        chmod +x "$PUBLIC_DIR/$script"
        echo -e "${GREEN}✓${NC} $script скопирован"
        FILES_COPIED=$((FILES_COPIED + 1))
    fi
done

# Копируем sing-box если есть
if [ -f "sing-box" ]; then
    cp sing-box "$PUBLIC_DIR/"
    chmod +x "$PUBLIC_DIR/sing-box"
    echo -e "${GREEN}✓${NC} sing-box скопирован"
    FILES_COPIED=$((FILES_COPIED + 1))
fi

echo -e "${GREEN}✓${NC} Всего файлов скопировано: $FILES_COPIED"

echo ""
echo -e "${YELLOW}[4/5]${NC} Генерация MD5 хешей..."

if [ -f "$PUBLIC_DIR/nexx-agent" ]; then
    AGENT_MD5=$(md5sum "$PUBLIC_DIR/nexx-agent" | awk '{print $1}')
    echo "$AGENT_MD5" > "$PUBLIC_DIR/nexx-agent.md5"
    echo -e "${GREEN}✓${NC} nexx-agent.md5 создан: $AGENT_MD5"
fi

if [ -f "$PUBLIC_DIR/sing-box" ]; then
    SINGBOX_MD5=$(md5sum "$PUBLIC_DIR/sing-box" | awk '{print $1}')
    echo "$SINGBOX_MD5" > "$PUBLIC_DIR/sing-box.md5"
    echo -e "${GREEN}✓${NC} sing-box.md5 создан"
fi

echo ""
echo -e "${YELLOW}[5/5]${NC} Установка прав доступа..."
chown -R www-data:www-data "$PUBLIC_DIR"
chmod -R 755 "$PUBLIC_DIR"
echo -e "${GREEN}✓${NC} Права доступа установлены"

# Создаем версионный файл
echo "BETA-$(date +%Y%m%d-%H%M%S)" > "$PUBLIC_DIR/version.txt"
echo -e "${GREEN}✓${NC} Версия записана"

echo ""
echo -e "${BLUE}=========================================${NC}"
echo -e "${GREEN}BETA деплой завершён успешно!${NC}"
echo -e "${BLUE}=========================================${NC}"
echo ""
echo -e "${YELLOW}BETA файлы доступны по адресам:${NC}"
echo ""

if [ -f "$PUBLIC_DIR/nexx-agent" ]; then
    AGENT_SIZE=$(du -h "$PUBLIC_DIR/nexx-agent" | awk '{print $1}')
    echo "  https://nexios.ru/nexx/beta/nexx-agent ($AGENT_SIZE)"
    echo "  https://nexios.ru/nexx/beta/nexx-agent.md5"
fi

echo "  https://nexios.ru/nexx/beta/install.sh"
echo "  https://nexios.ru/nexx/beta/auto-update.sh"
echo "  https://nexios.ru/nexx/beta/sni-test.sh"

echo ""
echo -e "${YELLOW}Для тестирования на ru1.vivarius.ru:${NC}"
echo ""
echo "1. Отредактируй auto-update.sh на сервере:"
echo "   ${BLUE}vi /opt/nexx-agent/auto-update.sh${NC}"
echo ""
echo "2. Измени URLs на beta:"
echo "   ${BLUE}AGENT_URL=\"https://nexios.ru/nexx/beta/nexx-agent\"${NC}"
echo "   ${BLUE}MD5_URL=\"https://nexios.ru/nexx/beta/nexx-agent.md5\"${NC}"
echo ""
echo "3. Запусти обновление вручную:"
echo "   ${BLUE}/opt/nexx-agent/auto-update.sh${NC}"
echo ""
echo -e "${GREEN}ru1 обновится на BETA версию с адаптивной DNS стратегией!${NC}"
echo -e "${BLUE}=========================================${NC}"