<?php
header("Access-Control-Allow-Origin: *");
$file = 'chat_log.txt';
$users_file = 'chat_users.json'; // Archivo que guardará IPs y Tiempos
$action = $_GET['action'] ?? 'read';
$ip = $_SERVER['REMOTE_ADDR'];

// Crear base de datos de usuarios si no existe
if (!file_exists($users_file)) {
    file_put_contents($users_file, json_encode(['nicks' => [], 'cooldowns' => []]));
}
$users_data = json_decode(file_get_contents($users_file), true);

if ($action === 'write') {
    $user = trim(htmlspecialchars($_POST['user'] ?? ''));
    $msg = trim(htmlspecialchars($_POST['msg'] ?? ''));
    
    // REGLA 1: Nickname obligatorio
    if (empty($user) || strtolower($user) === 'jugador') {
        echo "error_nick_required";
        exit;
    }

    // REGLA 2: Anti-Spam de 3 segundos
    $last_time = $users_data['cooldowns'][$ip] ?? 0;
    if (time() - $last_time < 3) {
        echo "error_spam";
        exit;
    }

    // REGLA 3: Nick Único (Bloquea si el nick ya tiene otra IP registrada)
    $user_lower = strtolower($user);
    if (isset($users_data['nicks'][$user_lower]) && $users_data['nicks'][$user_lower] !== $ip) {
        echo "error_nick_taken";
        exit;
    }

    // COMANDO DE ADMIN: Escribe /clear en el chat usando la cuenta Admin para borrar el servidor
    if ($msg === '/clear' && strtolower($user) === 'admin') { // Pon aquí tu propio nick de Admin si deseas
        file_put_contents($file, "");
        file_put_contents($users_file, json_encode(['nicks' => [], 'cooldowns' => []]));
        echo "ok";
        exit;
    }

    if (!empty($msg)) {
        // Actualizar IP del Nick y el tiempo de cooldown
        $users_data['nicks'][$user_lower] = $ip;
        $users_data['cooldowns'][$ip] = time();
        file_put_contents($users_file, json_encode($users_data));

        $time = date("H:i");
        $line = "<span style='color:#c59b5f;'>[$time] <b>$user:</b></span> <span style='color:#fff;'>$msg</span><br>";
        
        $lines = file_exists($file) ? file($file) : [];
        array_push($lines, $line . PHP_EOL);
        
        // Límite de 40 mensajes de historial
        if (count($lines) > 40) {
            $lines = array_slice($lines, -40);
        }
        file_put_contents($file, implode("", $lines));
        echo "ok";
    }
} else {
    // Lectura de mensajes
    if (file_exists($file)) {
        echo file_get_contents($file);
    } else {
        echo "<i><span style='color:#d4af37;'>Bienvenido al chat global. Pon tu ID en Settings.</span></i>";
    }
}
?>