58 lines
2.0 KiB
PHP
Executable File
58 lines
2.0 KiB
PHP
Executable File
<?php
|
|
header('Content-Type: application/json');
|
|
|
|
$pdo = new PDO('pgsql:host=localhost;dbname=adx_system', 'admin', 'admin123');
|
|
|
|
// Créer table webhooks si nécessaire
|
|
$pdo->exec("CREATE TABLE IF NOT EXISTS hamid_webhooks (
|
|
id SERIAL PRIMARY KEY,
|
|
name VARCHAR(100),
|
|
url TEXT,
|
|
event_type VARCHAR(50),
|
|
active BOOLEAN DEFAULT true,
|
|
created_at TIMESTAMP DEFAULT NOW()
|
|
)");
|
|
|
|
$action = $_POST['action'] ?? $_GET['action'] ?? '';
|
|
|
|
switch ($action) {
|
|
case 'register':
|
|
$stmt = $pdo->prepare("INSERT INTO hamid_webhooks (name, url, event_type) VALUES (?, ?, ?)");
|
|
$stmt->execute([$_POST['name'], $_POST['url'], $_POST['event_type'] ?? 'message']);
|
|
echo json_encode(['success' => true, 'id' => $pdo->lastInsertId()]);
|
|
break;
|
|
|
|
case 'trigger':
|
|
$event = $_POST['event_type'] ?? 'message';
|
|
$payload = $_POST['payload'] ?? '{}';
|
|
|
|
$webhooks = $pdo->query("SELECT * FROM hamid_webhooks WHERE event_type='$event' AND active=true")->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
$results = [];
|
|
foreach ($webhooks as $wh) {
|
|
$ch = curl_init($wh['url']);
|
|
curl_setopt_array($ch, [
|
|
CURLOPT_POST => true,
|
|
CURLOPT_POSTFIELDS => $payload,
|
|
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_TIMEOUT => 5
|
|
]);
|
|
$resp = curl_exec($ch);
|
|
$results[] = ['name' => $wh['name'], 'status' => curl_getinfo($ch, CURLINFO_HTTP_CODE)];
|
|
curl_close($ch);
|
|
}
|
|
|
|
echo json_encode(['success' => true, 'triggered' => count($results), 'results' => $results]);
|
|
break;
|
|
|
|
case 'list':
|
|
$webhooks = $pdo->query("SELECT * FROM hamid_webhooks")->fetchAll(PDO::FETCH_ASSOC);
|
|
echo json_encode(['webhooks' => $webhooks]);
|
|
break;
|
|
|
|
default:
|
|
echo json_encode(['actions' => ['register', 'trigger', 'list']]);
|
|
}
|
|
|