#!/bin/bash

# ============================================
# 🔍 Script de Verificación de Cache
# ============================================

echo "═══════════════════════════════════════════"
echo "🔍 VERIFICANDO CONFIGURACIÓN ANTI-CACHÉ"
echo "═══════════════════════════════════════════"
echo ""

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

# URL a verificar (cambiar según tu instalación)
URL="http://localhost:8080/conversations.php"

# Si se pasa un argumento, usarlo como URL
if [ ! -z "$1" ]; then
    URL="$1"
fi

echo "📍 URL a verificar: $URL"
echo ""

# Verificar headers HTTP
echo "🔍 Verificando headers HTTP..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

HEADERS=$(curl -I -s "$URL")

# Función para verificar header
check_header() {
    local header_name="$1"
    local expected_value="$2"
    
    if echo "$HEADERS" | grep -qi "$header_name"; then
        local actual_value=$(echo "$HEADERS" | grep -i "$header_name" | cut -d: -f2- | tr -d '\r\n' | sed 's/^[[:space:]]*//')
        echo -e "${GREEN}✅ $header_name:${NC} $actual_value"
        
        if [ ! -z "$expected_value" ]; then
            if echo "$actual_value" | grep -qi "$expected_value"; then
                echo -e "   ${GREEN}→ Contiene '$expected_value' ✓${NC}"
            else
                echo -e "   ${YELLOW}⚠️  No contiene '$expected_value' esperado${NC}"
            fi
        fi
        return 0
    else
        echo -e "${RED}❌ $header_name: NO ENCONTRADO${NC}"
        return 1
    fi
}

echo ""
echo "1️⃣ Cache-Control"
check_header "Cache-Control" "no-store"

echo ""
echo "2️⃣ Pragma"
check_header "Pragma" "no-cache"

echo ""
echo "3️⃣ Expires"
check_header "Expires" "1970"

echo ""
echo "4️⃣ Content-Type"
check_header "Content-Type" "text/html"

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# Verificar contenido HTML
echo "🔍 Verificando meta tags en HTML..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

CONTENT=$(curl -s "$URL")

check_meta() {
    local meta_name="$1"
    local search_pattern="$2"
    
    if echo "$CONTENT" | grep -qi "$search_pattern"; then
        echo -e "${GREEN}✅ Meta tag '$meta_name' encontrado${NC}"
        return 0
    else
        echo -e "${RED}❌ Meta tag '$meta_name' NO encontrado${NC}"
        return 1
    fi
}

echo ""
check_meta "Cache-Control" 'meta.*http-equiv.*Cache-Control.*no-cache'
check_meta "Pragma" 'meta.*http-equiv.*Pragma.*no-cache'
check_meta "Expires" 'meta.*http-equiv.*Expires.*0'

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# Verificar cache busting en scripts
echo "🔍 Verificando cache busting en scripts..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"

if echo "$CONTENT" | grep -qE 'chat-common\.js\?v=[0-9]+\.[0-9]+'; then
    VERSION=$(echo "$CONTENT" | grep -oE 'chat-common\.js\?v=[0-9]+\.[0-9]+\.[0-9]+' | head -1)
    echo -e "${GREEN}✅ Cache busting encontrado:${NC} $VERSION"
    
    # Extraer solo el número de versión
    VERSION_NUMBER=$(echo "$VERSION" | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
    echo -e "   ${GREEN}→ Versión actual:${NC} $VERSION_NUMBER"
else
    echo -e "${RED}❌ Cache busting NO encontrado o formato incorrecto${NC}"
fi

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""

# Verificar versión en consola
if echo "$CONTENT" | grep -q "WHATSAPP BOT v1.2.1 - ANTI-CACHÉ ACTIVADO"; then
    echo -e "${GREEN}✅ Versión 1.2.1 con anti-caché confirmada${NC}"
else
    echo -e "${YELLOW}⚠️  Versión no detectada o diferente${NC}"
fi

echo ""
echo "═══════════════════════════════════════════"
echo "📊 RESUMEN"
echo "═══════════════════════════════════════════"

# Contar checks exitosos y fallidos
TOTAL_CHECKS=7
PASSED=0
FAILED=0

if echo "$HEADERS" | grep -qi "Cache-Control.*no-store"; then ((PASSED++)); else ((FAILED++)); fi
if echo "$HEADERS" | grep -qi "Pragma.*no-cache"; then ((PASSED++)); else ((FAILED++)); fi
if echo "$HEADERS" | grep -qi "Expires.*1970"; then ((PASSED++)); else ((FAILED++)); fi
if echo "$CONTENT" | grep -qi 'meta.*Cache-Control.*no-cache'; then ((PASSED++)); else ((FAILED++)); fi
if echo "$CONTENT" | grep -qi 'meta.*Pragma.*no-cache'; then ((PASSED++)); else ((FAILED++)); fi
if echo "$CONTENT" | grep -qi 'meta.*Expires.*0'; then ((PASSED++)); else ((FAILED++)); fi
if echo "$CONTENT" | grep -qE 'chat-common\.js\?v=[0-9]+'; then ((PASSED++)); else ((FAILED++)); fi

echo ""
echo -e "${GREEN}✅ Checks exitosos: $PASSED/$TOTAL_CHECKS${NC}"
echo -e "${RED}❌ Checks fallidos: $FAILED/$TOTAL_CHECKS${NC}"

echo ""

if [ $FAILED -eq 0 ]; then
    echo -e "${GREEN}═══════════════════════════════════════════${NC}"
    echo -e "${GREEN}🎉 ¡TODO ESTÁ CONFIGURADO CORRECTAMENTE!${NC}"
    echo -e "${GREEN}═══════════════════════════════════════════${NC}"
    echo ""
    echo "✅ La página está configurada para NO cachearse"
    echo "✅ Los scripts tienen cache busting activo"
    echo "✅ Los usuarios verán siempre la versión más reciente"
    echo ""
    echo "💡 Si aún ves problemas, pide al usuario hacer:"
    echo "   - Ctrl+Shift+R (hard reload)"
    echo "   - Limpiar caché del navegador"
    exit 0
else
    echo -e "${YELLOW}═══════════════════════════════════════════${NC}"
    echo -e "${YELLOW}⚠️  HAY PROBLEMAS DE CONFIGURACIÓN${NC}"
    echo -e "${YELLOW}═══════════════════════════════════════════${NC}"
    echo ""
    echo "🔧 Posibles soluciones:"
    echo ""
    echo "1. Verifica que mod_headers esté habilitado en Apache:"
    echo "   sudo a2enmod headers"
    echo "   sudo systemctl restart apache2"
    echo ""
    echo "2. Verifica que .htaccess se esté leyendo:"
    echo "   - Asegúrate que AllowOverride All esté configurado"
    echo ""
    echo "3. Verifica que conversations.php tenga los headers PHP:"
    echo "   - Busca 'header(\"Cache-Control' al inicio del archivo"
    echo ""
    echo "4. Si usas Nginx en lugar de Apache:"
    echo "   - Los headers deben configurarse en el server block"
    echo ""
    exit 1
fi
