Files
netmaker-status-script/v2/api.php
T
2026-07-28 00:27:17 +02:00

50 lines
1.6 KiB
PHP

<?php
// api.php - Backend Logik
$db_file = __DIR__ . '/status.sqlite';
$pdo = new PDO('sqlite:' . $db_file);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Tabelle erstellen, falls nicht existent
$pdo->exec("CREATE TABLE IF NOT EXISTS nodes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
server TEXT,
client TEXT,
status TEXT,
handshake TEXT,
last_seen DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(server, client)
)");
// POST: Daten vom Gateway empfangen
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$data = json_decode(file_get_contents('php://input'), true);
if ($data && isset($data['server']) && isset($data['client'])) {
$stmt = $pdo->prepare("
INSERT INTO nodes (server, client, status, handshake, last_seen)
VALUES (:server, :client, :status, :handshake, datetime('now'))
ON CONFLICT(server, client)
DO UPDATE SET status=:status, handshake=:handshake, last_seen=datetime('now')
");
$stmt->execute([
':server' => $data['server'],
':client' => $data['client'],
':status' => $data['status'],
':handshake' => $data['handshake']
]);
echo json_encode(["success" => true]);
} else {
http_response_code(400);
echo json_encode(["error" => "Invalid payload"]);
}
exit;
}
// GET: Daten an das Frontend (HTML/JS) ausliefern
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
header('Content-Type: application/json');
$stmt = $pdo->query("SELECT * FROM nodes ORDER BY server, client");
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
exit;
}