<?php
/**
 * Script para testar e diagnosticar problemas com Imunify360 bot protection
 * 
 * Este script simula as requisições do app Android para identificar
 * como contornar o bloqueio do Imunify360
 */

// Configurações
$baseUrl = 'https://sistemas.pinheiroempresas.com.br/controlefrota/backend-php/';
$testEndpoints = [
    'api-simples-v2.php?acao=viagens',
    'api/gestao/notificacoes.php?acao=nao_lidas&user_id=4'
];

// Headers que simulam o app Android
$headers = [
    'User-Agent: ControleFrota-Android/1.0',
    'Content-Type: application/json',
    'Accept: application/json',
    'X-Requested-With: XMLHttpRequest',
    'X-App-Version: 1.0.0',
    'X-Device-Type: Android'
];

echo "=== TESTE IMUNIFY360 BOT PROTECTION ===\n";
echo "Data/Hora: " . date('Y-m-d H:i:s') . "\n";
echo "URL Base: $baseUrl\n\n";

foreach ($testEndpoints as $endpoint) {
    $url = $baseUrl . $endpoint;
    echo "🔍 Testando: $endpoint\n";
    echo "📡 URL: $url\n";
    
    // Teste 1: Requisição simples
    echo "\n--- TESTE 1: Requisição simples ---\n";
    $response1 = testRequest($url, [], []);
    echo "Status: " . $response1['status'] . "\n";
    echo "Response: " . substr($response1['body'], 0, 200) . "...\n";
    
    // Teste 2: Com headers do app
    echo "\n--- TESTE 2: Com headers do app ---\n";
    $response2 = testRequest($url, $headers, []);
    echo "Status: " . $response2['status'] . "\n";
    echo "Response: " . substr($response2['body'], 0, 200) . "...\n";
    
    // Teste 3: Com POST e dados JSON
    echo "\n--- TESTE 3: Com POST e dados JSON ---\n";
    $postData = json_encode([
        'test' => true,
        'timestamp' => time(),
        'source' => 'android_app'
    ]);
    $response3 = testRequest($url, $headers, $postData);
    echo "Status: " . $response3['status'] . "\n";
    echo "Response: " . substr($response3['body'], 0, 200) . "...\n";
    
    echo "\n" . str_repeat("=", 60) . "\n\n";
}

// Função para testar requisições
function testRequest($url, $headers = [], $postData = null) {
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    
    // Adicionar headers
    if (!empty($headers)) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    
    // Se tem dados POST
    if ($postData !== null) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
    }
    
    // Capturar headers de resposta
    curl_setopt($ch, CURLOPT_HEADER, true);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    $error = curl_error($ch);
    
    curl_close($ch);
    
    if ($error) {
        return [
            'status' => 'ERROR',
            'body' => "cURL Error: $error"
        ];
    }
    
    // Separar headers do body
    $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $responseHeaders = substr($response, 0, $headerSize);
    $responseBody = substr($response, $headerSize);
    
    return [
        'status' => $httpCode,
        'body' => $responseBody,
        'headers' => $responseHeaders
    ];
}

echo "\n=== SUGESTÕES PARA RESOLVER ===\n";
echo "1. Adicionar IP do servidor na whitelist do Imunify360\n";
echo "2. Configurar User-Agent específico para o app\n";
echo "3. Adicionar headers de identificação do app\n";
echo "4. Verificar configurações de rate limiting\n";
echo "5. Configurar exceções para endpoints da API\n";
?>
