70 lines
2.1 KiB
PHP
Executable File
70 lines
2.1 KiB
PHP
Executable File
<?php
|
|
header('Content-Type: application/json');
|
|
header('Access-Control-Allow-Origin: *');
|
|
|
|
// Log incoming webhook
|
|
$log_file = '/var/log/wevads/tracking_webhook.log';
|
|
$input = file_get_contents('php://input');
|
|
$data = json_decode($input, true) ?: $_POST;
|
|
|
|
file_put_contents($log_file, date('Y-m-d H:i:s') . " Webhook received: " . json_encode($data) . "\n", FILE_APPEND);
|
|
|
|
try {
|
|
if (empty($data)) {
|
|
throw new Exception("No data received");
|
|
}
|
|
|
|
$dsn = 'pgsql:host=localhost;dbname=adx_system';
|
|
$db = new PDO($dsn, 'admin', 'admin123');
|
|
$db->exec("SET search_path TO admin, public");
|
|
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
|
|
|
|
$tracking_id = $data['tracking_id'] ?? $data['id'] ?? null;
|
|
$event_type = $data['event'] ?? $data['type'] ?? 'unknown';
|
|
|
|
if (!$tracking_id) {
|
|
throw new Exception("Missing tracking_id");
|
|
}
|
|
|
|
// Insert into tracking_events
|
|
$stmt = $db->prepare("
|
|
INSERT INTO tracking_events
|
|
(tracking_id, event_type, event_data, ip_address, user_agent, referer)
|
|
VALUES (?, ?, ?::jsonb, ?, ?, ?)
|
|
");
|
|
|
|
$stmt->execute([
|
|
$tracking_id,
|
|
$event_type,
|
|
json_encode($data),
|
|
$_SERVER['REMOTE_ADDR'] ?? 'unknown',
|
|
$_SERVER['HTTP_USER_AGENT'] ?? 'unknown',
|
|
$_SERVER['HTTP_REFERER'] ?? 'unknown'
|
|
]);
|
|
|
|
// Update send log if needed
|
|
if (in_array($event_type, ['open', 'click'])) {
|
|
$update_field = $event_type === 'open' ? 'opened_at = NOW()' : 'clicked_at = NOW()';
|
|
$db->exec("
|
|
UPDATE unified_send_log_new
|
|
SET {$update_field}
|
|
WHERE tracking_id = '{$tracking_id}'
|
|
");
|
|
}
|
|
|
|
echo json_encode([
|
|
'success' => true,
|
|
'message' => "Event '{$event_type}' logged for tracking_id '{$tracking_id}'",
|
|
'event_id' => $db->lastInsertId()
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
http_response_code(400);
|
|
file_put_contents($log_file, date('Y-m-d H:i:s') . " ERROR: " . $e->getMessage() . "\n", FILE_APPEND);
|
|
echo json_encode([
|
|
'success' => false,
|
|
'error' => $e->getMessage()
|
|
]);
|
|
}
|
|
?>
|