false, "error" => "Méthode non autorisée"]); exit; } // Lire le body JSON $input = json_decode(file_get_contents('php://input'), true); if (!$input || !isset($input['alert_id']) || !isset($input['status'])) { http_response_code(400); echo json_encode(["success" => false, "error" => "Paramètres manquants : alert_id et status requis"]); exit; } $alert_id = trim($input['alert_id']); $status = strtoupper(trim($input['status'])); $detail = isset($input['detail']) ? trim($input['detail']) : null; // Valider le statut $statuts_valides = ['DELIVERED', 'SEEN', 'ACKNOWLEDGED', 'RESOLVED']; if (!in_array($status, $statuts_valides)) { http_response_code(400); echo json_encode([ "success" => false, "error" => "Statut invalide. Valeurs acceptées : " . implode(', ', $statuts_valides) ]); exit; } // Valider le format de l'alert_id (UUID) if (!preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i', $alert_id)) { http_response_code(400); echo json_encode(["success" => false, "error" => "Format alert_id invalide (UUID attendu)"]); exit; } // Appeler le script Python pour mettre à jour le statut $python_script = '/var/www/lucas/alert_ack_handler.py'; $cmd_args = escapeshellarg($alert_id) . ' ' . escapeshellarg($status); if ($detail) { $cmd_args .= ' ' . escapeshellarg($detail); } $command = "/usr/bin/python3 {$python_script} {$cmd_args} 2>&1"; $output = shell_exec($command); if ($output === null) { http_response_code(500); echo json_encode(["success" => false, "error" => "Erreur exécution script Python"]); exit; } // Le script Python retourne du JSON $result = json_decode(trim($output), true); if ($result === null) { http_response_code(500); echo json_encode([ "success" => false, "error" => "Réponse Python invalide", "raw" => substr($output, 0, 200) ]); exit; } http_response_code($result['success'] ? 200 : 404); echo json_encode($result);