#!/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