api.php aktualisiert
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
<?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;
|
||||
}
|
||||
Reference in New Issue
Block a user