← Retour
<?php
// Webhook proxy - forwarde vers infra locale sans exposer IP
// URL: https://nowhere84.com/webhooks/receive.php
header("Content-Type: application/json");
// Configuration
$local_endpoint = "http://82.65.119.221:5400/webhooks/incoming";
$log_file = "/home/deas8499/logs/webhooks.log";
// Récupérer payload
$payload = file_get_contents("php://input");
$method = $_SERVER["REQUEST_METHOD"];
// Log
$log = date("Y-m-d H:i:s") . " - " . $method . " - " . $_SERVER["REQUEST_URI"] . " - " . strlen($payload) . " bytes\n";
file_put_contents($log_file, $log, FILE_APPEND);
// Si GET, retourner status
if ($method === "GET") {
echo json_encode(["status" => "ok", "service" => "webhook-proxy"]);
exit;
}
// Forward POST
$ch = curl_init($local_endpoint);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Forwarded-From: o2switch",
"X-Webhook-Source: " . ($_SERVER["HTTP_X_WEBHOOK_SOURCE"] ?? "unknown"),
"X-Original-Host: " . ($_SERVER["HTTP_HOST"] ?? "unknown")
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30
]);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
// Log résultat
$log = date("Y-m-d H:i:s") . " - Response: $code" . ($error ? " Error: $error" : "") . "\n";
file_put_contents($log_file, $log, FILE_APPEND);
http_response_code($code ?: 200);
echo $response ?: json_encode(["status" => "forwarded", "code" => $code]);