fix purposes
This commit is contained in:
+23
-2
@@ -1,6 +1,28 @@
|
||||
<?php
|
||||
// On se déplace dans le dossier
|
||||
// webhook.php
|
||||
// Déclenché par un webhook GitHub (push sur main) pour resynchroniser le serveur.
|
||||
|
||||
chdir(__DIR__);
|
||||
require_once __DIR__ . '/config/database.php';
|
||||
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
http_response_code(405);
|
||||
exit('Method not allowed');
|
||||
}
|
||||
|
||||
$database = new Database();
|
||||
$secret = $database->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');
|
||||
@@ -9,4 +31,3 @@ $output = shell_exec('git fetch origin && git reset --hard origin/main 2>&1');
|
||||
file_put_contents('webhook.log', date('Y-m-d H:i:s') . "\n" . $output . "\n---\n", FILE_APPEND);
|
||||
|
||||
echo "Sync done.";
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user