) ---- $auth = $_SERVER['HTTP_AUTHORIZATION'] ?? ($_SERVER['Authorization'] ?? ''); if (stripos($auth, 'Bearer ') !== 0) { http_response_code(401); echo "Fehlender Bearer-Token"; exit; } $token = substr($auth, 7); if (!token_is_valid($token)) { http_response_code(403); echo "Ungültiger oder abgelaufener Token"; exit; } // ---- 2) Master-verschlüsselte DB laden & entschlüsseln ---- $dbPath = __DIR__ . '/uploads/questionnaire_database'; if (!file_exists($dbPath)) { http_response_code(404); echo "Datenbank nicht gefunden"; exit; } $enc = file_get_contents($dbPath); if ($enc === false) { http_response_code(500); echo "Lesefehler"; exit; } try { $plain = aes256_cbc_decrypt_bytes($enc, get_master_key_bytes()); } catch (Throwable $e) { http_response_code(500); echo "Entschlüsselung fehlgeschlagen"; exit; } // ---- 3) In temporäre SQLite-Datei schreiben ---- $tmp = tempnam(sys_get_temp_dir(), 'qdb_'); file_put_contents($tmp, $plain); // ---- 4) Tabellen lesen & als HTML ausgeben ---- try { $pdo = new PDO("sqlite:$tmp"); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Tabellenliste $tables = []; $rs = $pdo->query("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name"); foreach ($rs as $row) $tables[] = $row['name']; // Ausgabe echo ""; echo "
Tabellen: " . htmlspecialchars(implode(', ', $tables)) . "
"; foreach ($tables as $t) { echo "| " . htmlspecialchars($c) . " | "; echo "|
|---|---|
| NULL | "; } else { echo "" . htmlspecialchars((string)$val) . " | "; } } echo "