<?php
/**
 * CloudHestia - One-Time Setup Script
 * 
 * Upload this file and visit it in your browser:
 * https://smhcp.sammiehosty.com/setup.php
 * 
 * DELETE THIS FILE AFTER SETUP!
 */

header('Content-Type: text/html; charset=utf-8');

echo "<h1>🚀 CloudHestia Setup</h1>";
echo "<pre style='background: #1a1a2e; color: #16c79a; padding: 20px; border-radius: 10px;'>";

// Database configuration
$DB_HOST = 'localhost';
$DB_NAME = 'sammarle_smhcp';
$DB_USER = 'sammarle_smhcp';
$DB_PASS = 'sammarle_smhcp';

// Admin credentials
$ADMIN_USER = 'admin';
$ADMIN_PASS = 'admin123';
$ADMIN_EMAIL = 'admin@example.com';

try {
    // Connect to database
    echo "📡 Connecting to database... ";
    $pdo = new PDO(
        "mysql:host=$DB_HOST;dbname=$DB_NAME;charset=utf8mb4",
        $DB_USER,
        $DB_PASS,
        [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
    );
    echo "✅ Connected!\n\n";

    // Create users table
    echo "📋 Creating 'users' table... ";
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS users (
            id INT AUTO_INCREMENT PRIMARY KEY,
            username VARCHAR(50) NOT NULL UNIQUE,
            password VARCHAR(255) NOT NULL,
            email VARCHAR(100),
            role ENUM('admin') DEFAULT 'admin',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    echo "✅ Done!\n";

    // Create clients table
    echo "📋 Creating 'clients' table... ";
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS clients (
            id INT AUTO_INCREMENT PRIMARY KEY,
            name VARCHAR(100) NOT NULL,
            email VARCHAR(100),
            cf_api_token VARCHAR(255),
            cf_zone_id VARCHAR(100),
            cf_zone_name VARCHAR(255),
            notes TEXT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    echo "✅ Done!\n";

    // Create admin_config table
    echo "📋 Creating 'admin_config' table... ";
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS admin_config (
            id INT AUTO_INCREMENT PRIMARY KEY,
            hestia_hostname VARCHAR(255),
            hestia_port VARCHAR(10) DEFAULT '8083',
            hestia_auth_type VARCHAR(20) DEFAULT 'hash',
            hestia_username VARCHAR(100),
            hestia_password VARCHAR(255),
            hestia_access_key VARCHAR(255),
            hestia_secret_key VARCHAR(255),
            hestia_api_hash VARCHAR(255),
            hestia_user VARCHAR(100) DEFAULT 'admin',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    echo "✅ Done!\n";
    
    // Add hestia_api_hash column if upgrading
    echo "📋 Upgrading admin_config table... ";
    try {
        $pdo->exec("ALTER TABLE admin_config ADD COLUMN hestia_api_hash VARCHAR(255) AFTER hestia_secret_key");
        echo "✅ Added api_hash column!\n";
    } catch (PDOException $e) {
        echo "Already up to date!\n";
    }
    try {
        $pdo->exec("ALTER TABLE admin_config MODIFY COLUMN hestia_auth_type VARCHAR(20) DEFAULT 'hash'");
    } catch (PDOException $e) {
        // Ignore
    }

    // Create activity_logs table
    echo "📋 Creating 'activity_logs' table... ";
    $pdo->exec("
        CREATE TABLE IF NOT EXISTS activity_logs (
            id INT AUTO_INCREMENT PRIMARY KEY,
            user_id INT,
            client_id INT,
            action VARCHAR(100) NOT NULL,
            details TEXT,
            status ENUM('success', 'error', 'info') DEFAULT 'info',
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            INDEX idx_logs (created_at DESC)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    echo "✅ Done!\n\n";

    // Check if admin exists
    echo "👤 Checking for admin user... ";
    $stmt = $pdo->prepare("SELECT id FROM users WHERE username = ?");
    $stmt->execute([$ADMIN_USER]);
    
    if ($stmt->fetch()) {
        echo "Admin exists, updating password... ";
        $hashedPassword = password_hash($ADMIN_PASS, PASSWORD_DEFAULT);
        $stmt = $pdo->prepare("UPDATE users SET password = ? WHERE username = ?");
        $stmt->execute([$hashedPassword, $ADMIN_USER]);
        echo "✅ Done!\n";
    } else {
        echo "Creating admin user... ";
        $hashedPassword = password_hash($ADMIN_PASS, PASSWORD_DEFAULT);
        $stmt = $pdo->prepare("INSERT INTO users (username, password, email, role) VALUES (?, ?, ?, 'admin')");
        $stmt->execute([$ADMIN_USER, $hashedPassword, $ADMIN_EMAIL]);
        echo "✅ Done!\n";
    }

    echo "\n";
    echo "════════════════════════════════════════\n";
    echo "✅ SETUP COMPLETE!\n";
    echo "════════════════════════════════════════\n\n";
    echo "📌 Admin Login Credentials:\n";
    echo "   Username: <span style='color: #ffd700;'>$ADMIN_USER</span>\n";
    echo "   Password: <span style='color: #ffd700;'>$ADMIN_PASS</span>\n\n";
    echo "🔗 Test API: https://smhcp.sammiehosty.com/api/health\n\n";
    echo "⚠️  <span style='color: #ff6b6b;'>DELETE THIS FILE NOW FOR SECURITY!</span>\n";
    echo "   Delete: setup.php\n";

} catch (PDOException $e) {
    echo "❌ ERROR: " . $e->getMessage() . "\n";
    echo "\n📋 Please check:\n";
    echo "1. Database exists: $DB_NAME\n";
    echo "2. Username is correct: $DB_USER\n";
    echo "3. Password is correct\n";
    echo "4. User has privileges on the database\n";
}

echo "</pre>";
echo "<style>body { font-family: monospace; background: #0f0f23; margin: 20px; }</style>";
?>
