index.php: catch bootstrap exceptions and render a non-fatal warning

Per the spec's error-handling section, all exceptions must be caught at
the top of index.php's bootstrap path so a single bad page (CurlError,
JsonData, ApiValidation, ApiKeyMissing, LogEntryIncomplete) does not take
down the whole UI. The page now renders whatever data is in the DB plus
a warning banner with the exception message (htmlspecialchars-escaped to
avoid XSS). On the first-run backfill path, the redirect is still
emitted inside the try block so the success path is unchanged.
This commit is contained in:
Keith Solomon
2026-08-03 14:18:48 -05:00
parent 73360f6805
commit a133a5a49d
+19 -8
View File
@@ -13,15 +13,22 @@
require_once __DIR__ . '/config.php'; require_once __DIR__ . '/config.php';
require_once __DIR__ . '/functions.php'; require_once __DIR__ . '/functions.php';
if (dbNew()) { $bootstrapWarning = null;
foreach (USER_KEYS as $key => $value) {
backfillUserLogs($key); try {
} if (dbNew()) {
header('Location: /'); foreach (USER_KEYS as $key => $value) {
} else { backfillUserLogs($key);
foreach (USER_KEYS as $key => $value) { }
syncUserLogs($key); header('Location: /');
exit;
} else {
foreach (USER_KEYS as $key => $value) {
syncUserLogs($key);
}
} }
} catch (Exception $e) {
$bootstrapWarning = $e->getMessage();
} }
?> ?>
@@ -45,6 +52,10 @@ if (dbNew()) {
<body> <body>
<h1>Torn Vault Tracker</h1> <h1>Torn Vault Tracker</h1>
<?php if ($bootstrapWarning !== null): ?>
<div class="warning" style="background:#f77e82;color:#000;padding:.5em 1em;margin:1em 0;border:1px solid #333;">Warning: failed to fetch latest logs from Torn — showing cached data. (<?php echo htmlspecialchars($bootstrapWarning, ENT_QUOTES, 'UTF-8'); ?>)</div>
<?php endif; ?>
<div class="grid"> <div class="grid">
<div class="gridLeft"> <div class="gridLeft">
<h1>Transactions</h1> <h1>Transactions</h1>