#!/bin/bash # Script de verificación SSE para HestiaCP # Ejecutar en el servidor: bash check_sse.sh echo "🔍 Verificación de SSE para HestiaCP" echo "====================================" echo "" # 1. Verificar que el archivo existe echo "1️⃣ Verificando archivos..." if [ -f "api/sse_events.php" ]; then echo " ✅ api/sse_events.php existe" else echo " ❌ api/sse_events.php NO encontrado" echo " → Asegúrate de subir el archivo al servidor" exit 1 fi # 2. Verificar permisos echo "" echo "2️⃣ Verificando permisos..." PERMS=$(stat -c "%a" api/sse_events.php 2>/dev/null || stat -f "%A" api/sse_events.php 2>/dev/null) if [ "$PERMS" -ge "644" ]; then echo " ✅ Permisos correctos ($PERMS)" else echo " ⚠️ Permisos: $PERMS (se recomienda 644)" echo " Ejecutar: chmod 644 api/sse_events.php" fi # 3. Verificar versión PHP echo "" echo "3️⃣ Verificando PHP..." PHP_VERSION=$(php -v | head -n 1) echo " $PHP_VERSION" if php -v | grep -q "PHP 8"; then echo " ✅ PHP 8.x detectado" elif php -v | grep -q "PHP 7"; then echo " ⚠️ PHP 7.x (recomendado PHP 8.x)" else echo " ❌ Versión PHP desconocida" fi # 4. Verificar sintaxis PHP echo "" echo "4️⃣ Verificando sintaxis PHP..." if php -l api/sse_events.php > /dev/null 2>&1; then echo " ✅ Sin errores de sintaxis" else echo " ❌ Error de sintaxis en sse_events.php" php -l api/sse_events.php exit 1 fi # 5. Verificar configuración PHP-FPM echo "" echo "5️⃣ Verificando PHP-FPM..." if systemctl is-active --quiet php8.2-fpm || systemctl is-active --quiet php8.1-fpm || systemctl is-active --quiet php-fpm; then echo " ✅ PHP-FPM está corriendo" else echo " ⚠️ PHP-FPM no detectado o no corriendo" fi # 6. Probar conexión SSE local echo "" echo "6️⃣ Probando conexión SSE..." echo " Conectando (3 segundos)..." RESPONSE=$(timeout 3 curl -N -s 'http://localhost/api/sse_events.php?token=demo_token' 2>&1 || echo "timeout") if echo "$RESPONSE" | grep -q "event: connected"; then echo " ✅ SSE funciona correctamente" echo " Respuesta:" echo "$RESPONSE" | head -5 | sed 's/^/ /' elif echo "$RESPONSE" | grep -q "timeout"; then echo " ⚠️ Timeout - SSE puede no estar configurado correctamente" echo " → Revisar configuración Apache/Nginx" elif echo "$RESPONSE" | grep -q "401"; then echo " ⚠️ HTTP 401 - Problema de autenticación" echo " → Revisar config/auth.php" else echo " ❌ Error inesperado" echo " Respuesta:" echo "$RESPONSE" | head -10 | sed 's/^/ /' fi # 7. Verificar .htaccess echo "" echo "7️⃣ Verificando .htaccess..." if [ -f "api/.htaccess" ]; then echo " ✅ api/.htaccess existe" if grep -q "X-Accel-Buffering" api/.htaccess; then echo " ✅ Configuración SSE encontrada" else echo " ⚠️ Falta configuración SSE en .htaccess" echo " → Ver GUIA_HESTIA_SSE.md" fi else echo " ⚠️ api/.htaccess no encontrado" echo " → Crear según GUIA_HESTIA_SSE.md" fi # 8. Verificar configuración base de datos echo "" echo "8️⃣ Verificando configuración..." if [ -f "config/config.php" ]; then echo " ✅ config/config.php existe" if php -r "require_once 'config/config.php'; echo 'OK';" 2>/dev/null | grep -q "OK"; then echo " ✅ config.php carga correctamente" else echo " ⚠️ Error al cargar config.php" fi else echo " ❌ config/config.php NO encontrado" exit 1 fi # 9. Verificar tabla notifications echo "" echo "9️⃣ Verificando tabla notifications..." if php -r "require_once 'config/config.php'; \$db = Database::getInstance(); \$r = \$db->fetchAll('SHOW TABLES LIKE \"notifications\"'); echo (count(\$r) > 0 ? 'OK' : 'NO');" 2>/dev/null | grep -q "OK"; then echo " ✅ Tabla notifications existe" else echo " ⚠️ Tabla notifications no encontrada" echo " → Ejecutar migration para crear tabla" fi # Resumen final echo "" echo "====================================" echo "📊 Resumen" echo "====================================" echo "" if echo "$RESPONSE" | grep -q "event: connected"; then echo "✅ SSE está funcionando correctamente" echo "" echo "Próximos pasos:" echo "1. Abrir https://tu-dominio.com/conversations.php" echo "2. Abrir consola del navegador (F12)" echo "3. Verificar: '✅ SSE conectado'" echo "" echo "🚀 Sistema de notificaciones en tiempo real activo!" else echo "⚠️ SSE necesita configuración adicional" echo "" echo "Próximos pasos:" echo "1. Revisar GUIA_HESTIA_SSE.md" echo "2. Configurar .htaccess para SSE" echo "3. Ajustar PHP-FPM timeout (300s)" echo "4. Ejecutar: bash check_sse.sh" fi echo ""