Files
whatsapp/verificar_servidor.php
2026-01-21 08:28:54 -05:00

232 lines
8.4 KiB
PHP

<?php
/**
* Script de Verificación Post-Instalación
* Verifica que el sistema esté funcionando correctamente en el servidor
* Fecha: 4 de enero de 2026
*/
echo "<!DOCTYPE html><html lang='es'><head><meta charset='UTF-8'>";
echo "<title>🔍 Verificación del Sistema WhatsApp Bot</title>";
echo "<style>body{font-family:Arial,sans-serif;margin:20px;background:#f5f5f5}";
echo ".container{max-width:800px;margin:0 auto;background:white;padding:20px;border-radius:10px;box-shadow:0 2px 10px rgba(0,0,0,0.1)}";
echo ".success{color:#28a745;background:#d4edda;padding:10px;border-radius:5px;margin:5px 0}";
echo ".error{color:#dc3545;background:#f8d7da;padding:10px;border-radius:5px;margin:5px 0}";
echo ".warning{color:#856404;background:#fff3cd;padding:10px;border-radius:5px;margin:5px 0}";
echo ".info{color:#0c5460;background:#d1ecf1;padding:10px;border-radius:5px;margin:5px 0}";
echo "h1{color:#333;text-align:center}h2{color:#666;border-bottom:2px solid #eee;padding-bottom:10px}";
echo "</style></head><body>";
echo "<div class='container'>";
echo "<h1>🔍 Verificación del Sistema WhatsApp Bot</h1>";
echo "<p><strong>Fecha:</strong> " . date('Y-m-d H:i:s') . "</p>";
$errors = 0;
$warnings = 0;
$successes = 0;
// 1. Verificar archivos principales
echo "<h2>📁 Verificación de Archivos</h2>";
$requiredFiles = [
'config/config.php' => 'Archivo de configuración principal',
'classes/Database.php' => 'Clase de base de datos',
'login.php' => 'Sistema de login',
'index.php' => 'Dashboard principal',
'api/webhook.php' => 'Webhook de WhatsApp',
'api/send_message.php' => 'API de envío de mensajes'
];
foreach ($requiredFiles as $file => $description) {
if (file_exists($file)) {
echo "<div class='success'>✅ $file - $description</div>";
$successes++;
} else {
echo "<div class='error'>❌ $file - $description FALTANTE</div>";
$errors++;
}
}
// 2. Verificar configuración
echo "<h2>⚙️ Verificación de Configuración</h2>";
if (file_exists('config/config.php')) {
try {
require_once 'config/config.php';
echo "<div class='success'>✅ Archivo config.php cargado correctamente</div>";
$successes++;
// Verificar constantes
$constants = ['DB_HOST', 'DB_NAME', 'DB_USER', 'DB_PASS'];
foreach ($constants as $const) {
if (defined($const)) {
echo "<div class='success'>✅ Constante $const definida</div>";
$successes++;
} else {
echo "<div class='error'>❌ Constante $const NO definida</div>";
$errors++;
}
}
} catch (Exception $e) {
echo "<div class='error'>❌ Error cargando configuración: " . $e->getMessage() . "</div>";
$errors++;
}
} else {
echo "<div class='error'>❌ Archivo config.php no encontrado</div>";
$errors++;
}
// 3. Verificar base de datos
echo "<h2>🗄️ Verificación de Base de Datos</h2>";
if (defined('DB_HOST') && defined('DB_NAME') && defined('DB_USER') && defined('DB_PASS')) {
try {
$dsn = "mysql:host=" . DB_HOST . ";port=" . (defined('DB_PORT') ? DB_PORT : 3306) . ";dbname=" . DB_NAME . ";charset=utf8mb4";
$pdo = new PDO($dsn, DB_USER, DB_PASS);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "<div class='success'>✅ Conexión a base de datos exitosa</div>";
$successes++;
// Verificar tablas principales
$tables = ['conversations', 'conversations', 'system_config', 'message_templates'];
foreach ($tables as $table) {
$stmt = $pdo->query("SHOW TABLES LIKE '$table'");
if ($stmt->rowCount() > 0) {
echo "<div class='success'>✅ Tabla '$table' existe</div>";
$successes++;
} else {
echo "<div class='warning'>⚠️ Tabla '$table' no existe (puede necesitar importar schema.sql)</div>";
$warnings++;
}
}
} catch (PDOException $e) {
echo "<div class='error'>❌ Error de conexión a base de datos: " . $e->getMessage() . "</div>";
$errors++;
}
} else {
echo "<div class='error'>❌ Configuración de base de datos incompleta</div>";
$errors++;
}
// 4. Verificar permisos
echo "<h2>🔐 Verificación de Permisos</h2>";
$writableDirs = ['logs/', 'uploads/'];
foreach ($writableDirs as $dir) {
if (is_dir($dir)) {
if (is_writable($dir)) {
echo "<div class='success'>✅ Directorio '$dir' tiene permisos de escritura</div>";
$successes++;
} else {
echo "<div class='error'>❌ Directorio '$dir' NO tiene permisos de escritura (chmod 777 $dir)</div>";
$errors++;
}
} else {
echo "<div class='warning'>⚠️ Directorio '$dir' no existe</div>";
$warnings++;
}
}
// 5. Verificar APIs
echo "<h2>🔌 Verificación de APIs</h2>";
$apis = [
'api/send_message.php',
'api/webhook.php',
'api/get_system_config.php',
'api/save_system_config.php',
'api/get_templates.php'
];
foreach ($apis as $api) {
if (file_exists($api)) {
// Verificar que usa la ruta correcta
$content = file_get_contents($api);
if (strpos($content, "require_once 'config/config.php'") !== false) {
echo "<div class='success'>✅ API '$api' - Ruta de configuración correcta</div>";
$successes++;
} else {
echo "<div class='error'>❌ API '$api' - Ruta de configuración incorrecta</div>";
$errors++;
}
// Verificar autenticación
if (strpos($content, 'requireAuthentication()') !== false) {
echo "<div class='success'>✅ API '$api' - Requiere autenticación</div>";
$successes++;
} else {
echo "<div class='warning'>⚠️ API '$api' - No requiere autenticación</div>";
$warnings++;
}
} else {
echo "<div class='error'>❌ API '$api' no encontrada</div>";
$errors++;
}
}
// 6. Verificar PHP
echo "<h2>🐘 Verificación de PHP</h2>";
$phpVersion = phpversion();
if (version_compare($phpVersion, '7.4', '>=')) {
echo "<div class='success'>✅ Versión PHP: $phpVersion (Compatible)</div>";
$successes++;
} else {
echo "<div class='error'>❌ Versión PHP: $phpVersion (Requiere 7.4+)</div>";
$errors++;
}
$requiredExtensions = ['pdo', 'pdo_mysql', 'curl', 'json'];
foreach ($requiredExtensions as $ext) {
if (extension_loaded($ext)) {
echo "<div class='success'>✅ Extensión PHP '$ext' disponible</div>";
$successes++;
} else {
echo "<div class='error'>❌ Extensión PHP '$ext' NO disponible</div>";
$errors++;
}
}
// Resumen final
echo "<h2>📊 Resumen de Verificación</h2>";
$total = $successes + $errors + $warnings;
echo "<div class='info'>";
echo "<h3>Estadísticas:</h3>";
echo "✅ <strong>Éxitos:</strong> $successes<br>";
echo "❌ <strong>Errores:</strong> $errors<br>";
echo "⚠️ <strong>Advertencias:</strong> $warnings<br>";
echo "📊 <strong>Total verificaciones:</strong> $total<br>";
if ($errors == 0) {
echo "<br><div class='success'><strong>🎉 ¡SISTEMA LISTO PARA USAR!</strong><br>";
echo "El sistema está correctamente configurado y funcionando.</div>";
echo "<br><strong>Próximos pasos:</strong><br>";
echo "1. Acceder a <a href='login.php'>login.php</a><br>";
echo "2. Usuario: <strong>admin</strong><br>";
echo "3. Contraseña: <strong>2fa904eee46f</strong><br>";
echo "4. Configurar tokens de WhatsApp en el dashboard<br>";
} elseif ($errors <= 2) {
echo "<br><div class='warning'><strong>⚠️ Sistema casi listo</strong><br>";
echo "Hay algunos errores menores que corregir.</div>";
} else {
echo "<br><div class='error'><strong>❌ Requiere atención</strong><br>";
echo "Hay varios errores que necesitan ser corregidos antes del uso.</div>";
}
echo "</div>";
// Información adicional
echo "<h2>📋 Información Adicional</h2>";
echo "<div class='info'>";
echo "<strong>Servidor:</strong> " . $_SERVER['SERVER_SOFTWARE'] . "<br>";
echo "<strong>PHP:</strong> " . PHP_VERSION . "<br>";
echo "<strong>Directorio actual:</strong> " . __DIR__ . "<br>";
echo "<strong>URL actual:</strong> " . (isset($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . "<br>";
echo "</div>";
echo "</div></body></html>";
?>