webhook_secret; $payload = file_get_contents('php://input'); $signatureHeader = $_SERVER['HTTP_X_HUB_SIGNATURE_256'] ?? ''; $expectedSignature = 'sha256=' . hash_hmac('sha256', $payload, $secret); // Comparaison en temps constant pour éviter les attaques par timing if (!$signatureHeader || !hash_equals($expectedSignature, $signatureHeader)) { http_response_code(403); file_put_contents('webhook.log', date('Y-m-d H:i:s') . " - Tentative refusée (signature invalide)\n", FILE_APPEND); exit('Forbidden'); } // On récupère les modifs et on force l'écrasement pour éviter les conflits $output = shell_exec('git fetch origin && git reset --hard origin/main 2>&1'); // On logue ça pour vérifier si ça marche (tu pourras voir le contenu dans webhook.log) file_put_contents('webhook.log', date('Y-m-d H:i:s') . "\n" . $output . "\n---\n", FILE_APPEND); echo "Sync done.";