Handle browser-blocked status checks
All checks were successful
Build & Push Docker Image to Gitea Registry / build-and-push (push) Successful in 12s
All checks were successful
Build & Push Docker Image to Gitea Registry / build-and-push (push) Successful in 12s
This commit is contained in:
26
admin.js
26
admin.js
@@ -217,17 +217,20 @@ async function probe(url) {
|
||||
signal: controller.signal
|
||||
});
|
||||
return {
|
||||
ok: true,
|
||||
status: 'online',
|
||||
ms: Math.round(performance.now() - started),
|
||||
detail: response.type === 'opaque'
|
||||
? 'Erreichbar. HTTP-Details wegen Browser-CORS nicht lesbar.'
|
||||
: `HTTP ${response.status}`
|
||||
};
|
||||
} catch (error) {
|
||||
const isTimeout = error.name === 'AbortError';
|
||||
return {
|
||||
ok: false,
|
||||
status: isTimeout ? 'offline' : 'unknown',
|
||||
ms: Math.round(performance.now() - started),
|
||||
detail: error.name === 'AbortError' ? 'Timeout nach 6 Sekunden.' : error.message
|
||||
detail: isTimeout
|
||||
? 'Timeout nach 6 Sekunden.'
|
||||
: 'Der Browser blockiert diese Pruefung wahrscheinlich wegen CORS/CORB. Der Dienst kann trotzdem online sein.'
|
||||
};
|
||||
} finally {
|
||||
window.clearTimeout(timeout);
|
||||
@@ -238,12 +241,20 @@ async function checkRow(row) {
|
||||
const service = config.services[Number(row.dataset.index)];
|
||||
const diagnostic = row.querySelector('.diagnostic');
|
||||
diagnostic.textContent = 'Pruefe...';
|
||||
row.classList.remove('is-online', 'is-offline');
|
||||
row.classList.remove('is-online', 'is-offline', 'is-unknown');
|
||||
|
||||
const result = await probe(service.url);
|
||||
row.classList.toggle('is-online', result.ok);
|
||||
row.classList.toggle('is-offline', !result.ok);
|
||||
diagnostic.textContent = `${result.ok ? 'Online' : 'Fehler'} - ${result.ms} ms - ${result.detail}`;
|
||||
row.classList.toggle('is-online', result.status === 'online');
|
||||
row.classList.toggle('is-offline', result.status === 'offline');
|
||||
row.classList.toggle('is-unknown', result.status === 'unknown');
|
||||
|
||||
const label = {
|
||||
online: 'Online',
|
||||
offline: 'Fehler',
|
||||
unknown: 'Nicht im Browser pruefbar'
|
||||
}[result.status];
|
||||
|
||||
diagnostic.textContent = `${label} - ${result.ms} ms - ${result.detail}`;
|
||||
}
|
||||
|
||||
function saveLocal() {
|
||||
@@ -315,4 +326,3 @@ downloadConfigButton.addEventListener('click', downloadConfig);
|
||||
boot().catch((error) => {
|
||||
loginMessage.textContent = `Adminseite konnte nicht starten: ${error.message}`;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user