#!/bin/bash
# ==================================================
# SECRETS SETUP SCRIPT
# Script para configurar secrets localmente de forma segura
# ==================================================

set -e

echo "=================================================="
echo "  Configuración de Secrets - Math Platform"
echo "=================================================="
echo ""

# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Crear directorio de secrets
SECRETS_DIR="./secrets"
mkdir -p "$SECRETS_DIR"

echo -e "${YELLOW}Este script creará archivos de secrets en $SECRETS_DIR/${NC}"
echo -e "${YELLOW}Estos archivos están en .gitignore y NO deben commitearse${NC}"
echo ""

# Función para solicitar secret
request_secret() {
    local name=$1
    local description=$2
    local file="$SECRETS_DIR/$name.txt"
    
    echo "--------------------------------------------------"
    echo -e "${GREEN}$description${NC}"
    
    if [ -f "$file" ]; then
        echo -e "${YELLOW}⚠️  Ya existe: $file${NC}"
        read -p "¿Desea sobrescribir? (s/N): " overwrite
        if [[ ! "$overwrite" =~ ^[Ss]$ ]]; then
            echo "   → Saltando..."
            return
        fi
    fi
    
    read -s -p "Ingrese el valor (presione Enter para omitir): " value
    echo ""
    
    if [ -n "$value" ]; then
        echo "$value" > "$file"
        chmod 600 "$file"
        echo -e "${GREEN}   ✓ Creado: $file${NC}"
    else
        echo -e "${YELLOW}   → Omitido${NC}"
    fi
}

# Solicitar cada secret
request_secret "db_password" "1. Contraseña de la Base de Datos PostgreSQL"
request_secret "redis_password" "2. Contraseña de Redis"
request_secret "jwt_secret" "3. JWT Secret (mínimo 32 caracteres recomendado)"
request_secret "session_secret" "4. Session Secret"
request_secret "ai_api_key" "5. AI API Key (DashScope/Aliyun)"
request_secret "telegram_token" "6. Telegram Bot Token"
request_secret "telegram_chat_id" "7. Telegram Admin Chat ID"
request_secret "monitor_db_password" "8. Contraseña del usuario de monitoreo"

echo ""
echo "=================================================="
echo -e "${GREEN}Configuración completada${NC}"
echo "=================================================="
echo ""

# Verificar permisos
echo "Verificando permisos de seguridad..."
chmod 600 "$SECRETS_DIR"/*.txt 2>/dev/null || true
echo -e "${GREEN}✓ Permisos establecidos: 600 (solo lectura/escritura owner)${NC}"
echo ""

# Listar secrets creados
echo "Secrets configurados:"
ls -la "$SECRETS_DIR/"
echo ""

echo "=================================================="
echo "  INSTRUCCIONES DE USO"
echo "=================================================="
echo ""
echo "1. Para desarrollo local con secrets:"
echo "   docker-compose -f docker-compose.secrets.yml up -d"
echo ""
echo "2. Para producción con Docker Swarm:"
echo "   docker secret create db_password secrets/db_password.txt"
echo "   docker stack deploy -c docker-compose.secrets.yml math-platform"
echo ""
echo "3. Para rotar credenciales:"
echo "   - Generar nuevos valores"
echo "   - Actualizar archivos en secrets/"
echo "   - Reiniciar servicios: docker-compose -f docker-compose.secrets.yml restart"
echo ""
echo -e "${RED}⚠️  IMPORTANTE:${NC}"
echo -e "${RED}   - NUNCA commitear archivos de secrets${NC}"
echo -e "${RED}   - Hacer backup de secrets en un lugar seguro${NC}"
echo -e "${RED}   - Rotar credenciales expuestas inmediatamente${NC}"
echo ""
echo "=================================================="
