<?php
/**
 * Script de Configuración Automática para cPanel
 * Sistema de Inventario Forestal de Guatemala
 * 
 * Este script ayuda a configurar automáticamente algunos aspectos del sistema en cPanel
 */

// Solo permitir ejecución con parámetro de seguridad
if (!isset($_GET['setup']) || $_GET['setup'] !== 'sif-gt-cpanel-2025') {
    http_response_code(404);
    exit('Not Found');
}

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Configuración cPanel - SIF Guatemala</title>
    <style>
        body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }
        .container { max-width: 900px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
        .header { text-align: center; color: #2c5530; margin-bottom: 30px; }
        .section { margin: 20px 0; padding: 20px; border: 1px solid #ddd; border-radius: 8px; }
        .success { background: #d4edda; border-color: #c3e6cb; }
        .warning { background: #fff3cd; border-color: #ffeaa7; }
        .error { background: #f8d7da; border-color: #f5c6cb; }
        .info { background: #d1ecf1; border-color: #bee5eb; }
        .code-block { background: #f8f9fa; padding: 15px; border-radius: 4px; font-family: monospace; margin: 10px 0; overflow-x: auto; }
        .step { margin: 15px 0; padding: 15px; background: #f8f9fa; border-left: 4px solid #2c5530; }
        .btn { display: inline-block; padding: 10px 20px; background: #2c5530; color: white; text-decoration: none; border-radius: 4px; margin: 5px; }
        .btn:hover { background: #1e3a21; }
        .btn-secondary { background: #6c757d; }
        .btn-secondary:hover { background: #545b62; }
        h3 { color: #2c5530; }
        .grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; }
        .card { background: #f8f9fa; padding: 15px; border-radius: 8px; border: 1px solid #dee2e6; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>🛠️ Configuración Automática cPanel</h1>
            <h2>Sistema de Inventario Forestal de Guatemala</h2>
            <p>Herramientas para configurar automáticamente el sistema en cPanel</p>
        </div>

        <?php
        $currentUser = get_current_user();
        $documentRoot = $_SERVER['DOCUMENT_ROOT'];
        $serverName = $_SERVER['SERVER_NAME'];
        $isHttps = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on';
        $protocol = $isHttps ? 'https' : 'http';
        $baseUrl = $protocol . '://' . $serverName;
        ?>

        <!-- Información del Servidor -->
        <div class="section info">
            <h3>📋 Información del Servidor</h3>
            <div class="grid">
                <div class="card">
                    <strong>Usuario cPanel:</strong><br>
                    <code><?php echo $currentUser; ?></code>
                </div>
                <div class="card">
                    <strong>Document Root:</strong><br>
                    <code><?php echo $documentRoot; ?></code>
                </div>
                <div class="card">
                    <strong>Dominio:</strong><br>
                    <code><?php echo $serverName; ?></code>
                </div>
                <div class="card">
                    <strong>SSL/HTTPS:</strong><br>
                    <code><?php echo $isHttps ? '✅ Activo' : '❌ Inactivo'; ?></code>
                </div>
            </div>
        </div>

        <!-- Configuración de .env -->
        <div class="section">
            <h3>⚙️ Configuración de Variables de Entorno</h3>
            <p>Copia esta configuración a tu archivo <code>.env</code>:</p>
            
            <div class="code-block">
# === CONFIGURACIÓN AUTOMÁTICA PARA CPANEL ===
# Generado el: <?php echo date('Y-m-d H:i:s'); ?>

# === BASE DE DATOS ===
DB_HOST=localhost
DB_NAME=<?php echo $currentUser; ?>_sif_gt_prod
DB_USER=<?php echo $currentUser; ?>_sif_gt_user
DB_PASS=TU_PASSWORD_AQUI
DB_PORT=3306
DB_CHARSET=utf8mb4

# === APLICACIÓN ===
APP_NAME="Sistema de Inventario Forestal Guatemala"
APP_VERSION=1.0.0
APP_ENV=production
APP_DEBUG=false
APP_URL=<?php echo $baseUrl; ?>

APP_TIMEZONE=America/Guatemala

# === SEGURIDAD ===
JWT_SECRET=<?php echo bin2hex(random_bytes(32)); ?>

ENCRYPTION_KEY=<?php echo bin2hex(random_bytes(16)); ?>

PASSWORD_SALT=<?php echo bin2hex(random_bytes(16)); ?>


# === ARCHIVOS ===
UPLOAD_DIR=uploads
MAX_FILE_SIZE=10485760
ALLOWED_FILE_TYPES=pdf

# === EMAIL ===
MAIL_HOST=mail.<?php echo $serverName; ?>

MAIL_PORT=587
MAIL_USERNAME=noreply@<?php echo $serverName; ?>

MAIL_PASSWORD=TU_PASSWORD_EMAIL_AQUI
MAIL_FROM_ADDRESS=noreply@<?php echo $serverName; ?>

MAIL_FROM_NAME="SIF-GT Sistema"
MAIL_ENCRYPTION=tls

# === NOTIFICACIONES ===
NOTIFICATIONS_ENABLED=true
MONITORING_EMAIL=admin@<?php echo $serverName; ?>

# === SSL/HTTPS ===
FORCE_HTTPS=<?php echo $isHttps ? 'true' : 'false'; ?>

SESSION_SECURE=<?php echo $isHttps ? 'true' : 'false'; ?>

            </div>
            
            <div class="step">
                <strong>📝 Pasos:</strong><br>
                1. Copia el contenido de arriba<br>
                2. Pégalo en tu archivo <code>.env</code><br>
                3. Reemplaza <code>TU_PASSWORD_AQUI</code> con tu password real de BD<br>
                4. Reemplaza <code>TU_PASSWORD_EMAIL_AQUI</code> con tu password de email
            </div>
        </div>

        <!-- Comandos Cron Jobs -->
        <div class="section">
            <h3>⏰ Configuración de Cron Jobs</h3>
            <p>Configura estos cron jobs en cPanel > Cron Jobs:</p>
            
            <div class="grid">
                <div class="card">
                    <strong>Backup Completo Diario</strong><br>
                    <small>Ejecutar a las 2:00 AM todos los días</small>
                    <div class="code-block">
Minuto: 0
Hora: 2
Día: *
Mes: *
Día de la semana: *
Comando: /usr/bin/php <?php echo $documentRoot; ?>/scripts/backup-database.php
                    </div>
                </div>
                
                <div class="card">
                    <strong>Backup Incremental</strong><br>
                    <small>Cada 6 horas</small>
                    <div class="code-block">
Minuto: 0
Hora: */6
Día: *
Mes: *
Día de la semana: *
Comando: /usr/bin/php <?php echo $documentRoot; ?>/scripts/backup-database.php?type=incremental
                    </div>
                </div>
                
                <div class="card">
                    <strong>Limpieza de Logs</strong><br>
                    <small>Domingos a las 3:00 AM</small>
                    <div class="code-block">
Minuto: 0
Hora: 3
Día: *
Mes: *
Día de la semana: 0
Comando: /usr/bin/php <?php echo $documentRoot; ?>/scripts/cleanup-logs.php
                    </div>
                </div>
                
                <div class="card">
                    <strong>Limpieza de Cache</strong><br>
                    <small>Diario a la 1:00 AM</small>
                    <div class="code-block">
Minuto: 0
Hora: 1
Día: *
Mes: *
Día de la semana: *
Comando: /usr/bin/php <?php echo $documentRoot; ?>/scripts/cache-cleanup.php
                    </div>
                </div>
                
                <div class="card">
                    <strong>Monitoreo del Sistema</strong><br>
                    <small>Cada 15 minutos</small>
                    <div class="code-block">
Minuto: */15
Hora: *
Día: *
Mes: *
Día de la semana: *
Comando: /usr/bin/php <?php echo $documentRoot; ?>/scripts/system-monitor.php
                    </div>
                </div>
                
                <div class="card">
                    <strong>Mantenimiento Semanal</strong><br>
                    <small>Sábados a las 4:00 AM</small>
                    <div class="code-block">
Minuto: 0
Hora: 4
Día: *
Mes: *
Día de la semana: 6
Comando: /usr/bin/php <?php echo $documentRoot; ?>/scripts/maintenance.php?type=full
                    </div>
                </div>
            </div>
        </div>

        <!-- Verificación de Permisos -->
        <div class="section">
            <h3>🔐 Verificación de Permisos</h3>
            
            <?php
            $directories = [
                'uploads' => 0755,
                'logs' => 0755,
                'cache' => 0755,
                'backups' => 0755,
                'api' => 0755
            ];
            
            $files = [
                '.htaccess' => 0644,
                'php.ini' => 0644,
                '.env' => 0644
            ];
            
            echo '<div class="grid">';
            
            // Verificar directorios
            foreach ($directories as $dir => $expectedPerm) {
                echo '<div class="card">';
                echo "<strong>📁 {$dir}/</strong><br>";
                
                if (is_dir($dir)) {
                    $currentPerm = fileperms($dir) & 0777;
                    $permStr = decoct($currentPerm);
                    $expectedStr = decoct($expectedPerm);
                    
                    if ($currentPerm >= $expectedPerm) {
                        echo "<span style='color: green;'>✅ Permisos OK ({$permStr})</span><br>";
                    } else {
                        echo "<span style='color: orange;'>⚠️ Permisos: {$permStr} (necesario: {$expectedStr})</span><br>";
                    }
                    
                    if (is_writable($dir)) {
                        echo "<span style='color: green;'>✅ Escribible</span>";
                    } else {
                        echo "<span style='color: red;'>❌ No escribible</span>";
                    }
                } else {
                    echo "<span style='color: red;'>❌ No existe</span>";
                }
                
                echo '</div>';
            }
            
            // Verificar archivos
            foreach ($files as $file => $expectedPerm) {
                echo '<div class="card">';
                echo "<strong>📄 {$file}</strong><br>";
                
                if (file_exists($file)) {
                    $currentPerm = fileperms($file) & 0777;
                    $permStr = decoct($currentPerm);
                    $expectedStr = decoct($expectedPerm);
                    
                    if ($currentPerm >= $expectedPerm) {
                        echo "<span style='color: green;'>✅ Permisos OK ({$permStr})</span>";
                    } else {
                        echo "<span style='color: orange;'>⚠️ Permisos: {$permStr} (necesario: {$expectedStr})</span>";
                    }
                } else {
                    echo "<span style='color: red;'>❌ No existe</span>";
                }
                
                echo '</div>';
            }
            
            echo '</div>';
            ?>
        </div>

        <!-- Comandos de Corrección -->
        <div class="section">
            <h3>🔧 Comandos de Corrección</h3>
            <p>Si hay problemas de permisos, ejecuta estos comandos via SSH o Terminal en cPanel:</p>
            
            <div class="code-block">
# Corregir permisos de directorios
chmod 755 uploads/
chmod 755 logs/
chmod 755 cache/
chmod 755 backups/
chmod 755 api/

# Corregir permisos de archivos
chmod 644 .htaccess
chmod 644 php.ini
chmod 644 .env

# Crear directorios si no existen
mkdir -p uploads logs cache backups/database

# Verificar que Apache puede leer .htaccess
ls -la .htaccess
            </div>
        </div>

        <!-- Verificación de Extensiones PHP -->
        <div class="section">
            <h3>🐘 Extensiones PHP</h3>
            
            <?php
            $requiredExtensions = [
                'mysqli' => 'Conexión MySQL mejorada',
                'pdo_mysql' => 'PDO para MySQL',
                'json' => 'Manejo de JSON',
                'mbstring' => 'Strings multibyte',
                'curl' => 'Peticiones HTTP',
                'gd' => 'Procesamiento de imágenes',
                'zip' => 'Compresión de archivos',
                'fileinfo' => 'Información de archivos'
            ];
            
            echo '<div class="grid">';
            
            foreach ($requiredExtensions as $ext => $desc) {
                echo '<div class="card">';
                echo "<strong>{$ext}</strong><br>";
                echo "<small>{$desc}</small><br>";
                
                if (extension_loaded($ext)) {
                    echo "<span style='color: green;'>✅ Disponible</span>";
                } else {
                    echo "<span style='color: red;'>❌ No disponible</span>";
                }
                
                echo '</div>';
            }
            
            echo '</div>';
            ?>
            
            <div class="step">
                <strong>📝 Si faltan extensiones:</strong><br>
                1. Ve a cPanel > <strong>Select PHP Version</strong><br>
                2. Click en <strong>Extensions</strong><br>
                3. Activa las extensiones faltantes<br>
                4. Click <strong>Save</strong>
            </div>
        </div>

        <!-- Configuración de Email -->
        <div class="section">
            <h3>📧 Configuración de Email</h3>
            
            <div class="step">
                <strong>1. Crear cuenta de email en cPanel:</strong><br>
                • Ve a cPanel > <strong>Email Accounts</strong><br>
                • Crear: <code>noreply@<?php echo $serverName; ?></code><br>
                • Anotar password para usar en .env
            </div>
            
            <div class="step">
                <strong>2. Configuración SMTP típica para cPanel:</strong><br>
                <div class="code-block">
MAIL_HOST=mail.<?php echo $serverName; ?>

MAIL_PORT=587
MAIL_USERNAME=noreply@<?php echo $serverName; ?>

MAIL_PASSWORD=tu_password_email
MAIL_ENCRYPTION=tls
                </div>
            </div>
        </div>

        <!-- Herramientas de Diagnóstico -->
        <div class="section">
            <h3>🔍 Herramientas de Diagnóstico</h3>
            
            <div class="grid">
                <div class="card">
                    <strong>Verificar Instalación</strong><br>
                    <small>Verificar que todo esté configurado correctamente</small><br>
                    <a href="verify-installation.php?verify=sif-gt-2025" class="btn" target="_blank">🔍 Verificar</a>
                </div>
                
                <div class="card">
                    <strong>Monitoreo del Sistema</strong><br>
                    <small>Ver estado actual del sistema</small><br>
                    <a href="scripts/system-monitor.php?action=monitor" class="btn" target="_blank">📊 Monitorear</a>
                </div>
                
                <div class="card">
                    <strong>Backup Manual</strong><br>
                    <small>Crear backup de la base de datos</small><br>
                    <a href="scripts/backup-database.php?action=backup" class="btn" target="_blank">💾 Backup</a>
                </div>
                
                <div class="card">
                    <strong>API Health Check</strong><br>
                    <small>Verificar que la API funcione</small><br>
                    <a href="api/auth/health" class="btn" target="_blank">🔍 API Health</a>
                </div>
                
                <div class="card">
                    <strong>Información PHP</strong><br>
                    <small>Ver configuración completa de PHP</small><br>
                    <a href="#" onclick="window.open('data:text/html,<?php echo urlencode('<?php phpinfo(); ?>'); ?>')" class="btn">🐘 PHP Info</a>
                </div>
                
                <div class="card">
                    <strong>Ir a la Aplicación</strong><br>
                    <small>Acceder al sistema principal</small><br>
                    <a href="/" class="btn">🏠 Aplicación</a>
                </div>
            </div>
        </div>

        <!-- Checklist Final -->
        <div class="section success">
            <h3>✅ Checklist de Configuración</h3>
            <div style="columns: 2; column-gap: 30px;">
                <label><input type="checkbox"> Archivos subidos a public_html/</label><br>
                <label><input type="checkbox"> Base de datos creada</label><br>
                <label><input type="checkbox"> Usuario de BD creado y asignado</label><br>
                <label><input type="checkbox"> Archivo .env configurado</label><br>
                <label><input type="checkbox"> Permisos de directorios establecidos</label><br>
                <label><input type="checkbox"> Extensiones PHP verificadas</label><br>
                <label><input type="checkbox"> SSL/HTTPS activado</label><br>
                <label><input type="checkbox"> Cron jobs configurados</label><br>
                <label><input type="checkbox"> Email configurado</label><br>
                <label><input type="checkbox"> Sistema instalado (install.php)</label><br>
                <label><input type="checkbox"> Verificación completada</label><br>
                <label><input type="checkbox"> Archivos de setup eliminados</label><br>
            </div>
        </div>

        <!-- Advertencia de Seguridad -->
        <div class="section warning">
            <h3>⚠️ IMPORTANTE - SEGURIDAD</h3>
            <p><strong>Después de completar la configuración, elimina estos archivos:</strong></p>
            <ul>
                <li><code>scripts/cpanel-setup.php</code> (este archivo)</li>
                <li><code>verify-installation.php</code></li>
                <li><code>install.php</code> (después de la instalación)</li>
            </ul>
            <p>Estos archivos contienen información sensible y no deben estar disponibles en producción.</p>
        </div>
    </div>
</body>
</html>