Version 2.8.21: die Seite wartet nicht mehr stumm
This commit is contained in:
1 parent
3b3ce96678
commit
a528e9f3b2
3 files changed
+35
-2
No files matched your search
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm"
|
name = "tesm"
|
||||||
version = "2.8.20"
|
version = "2.8.21"
|
||||||
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
|
description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-core"
|
name = "tesm-core"
|
||||||
version = "2.8.10"
|
version = "2.8.11"
|
||||||
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -38,6 +38,15 @@ const gescheitert = new Set();
|
|||||||
//: RealVNC Server zaehlt abgebrochene Versuche mit -- wer dreimal anklopft,
|
//: RealVNC Server zaehlt abgebrochene Versuche mit -- wer dreimal anklopft,
|
||||||
//: sperrt sich aus.
|
//: sperrt sich aus.
|
||||||
const HOECHSTENS = 2;
|
const HOECHSTENS = 2;
|
||||||
|
|
||||||
|
//: So lange darf "wird aufgebaut" stehen, bevor die Seite selbst nachsieht.
|
||||||
|
//:
|
||||||
|
//: Der Server hat eigene Grenzen und meldet sich, wenn das Geraet schweigt --
|
||||||
|
//: aber nur, wenn die Leitung dorthin ueberhaupt steht. Kommt die
|
||||||
|
//: WebSocket-Verbindung gar nicht erst zustande, wartet noVNC ohne jedes
|
||||||
|
//: Ereignis, und die Seite stuende stumm bis zum Seitenwechsel. Genau so
|
||||||
|
//: gemeldet: "Verbindung wird aufgebaut ..." und sonst nichts.
|
||||||
|
const AUFBAU_GRENZE = 12000;
|
||||||
// Den *Grund* eines Fehlschlags kennt nur ``_fail`` -- das Ereignis
|
// Den *Grund* eines Fehlschlags kennt nur ``_fail`` -- das Ereignis
|
||||||
// "disconnect" traegt ihn nicht, und der Weg ueber die Protokollausgabe
|
// "disconnect" traegt ihn nicht, und der Weg ueber die Protokollausgabe
|
||||||
// funktioniert nicht: die Bibliothek bindet ``console.error`` beim Laden, also
|
// funktioniert nicht: die Bibliothek bindet ``console.error`` beim Laden, also
|
||||||
@@ -87,6 +96,7 @@ function starten(wurzel) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
let rfb = null;
|
let rfb = null;
|
||||||
|
let aufbauUhr = 0;
|
||||||
let versuche = 0;
|
let versuche = 0;
|
||||||
let stand = false;
|
let stand = false;
|
||||||
let letzterZugang = {};
|
let letzterZugang = {};
|
||||||
@@ -164,6 +174,25 @@ function starten(wurzel) {
|
|||||||
letzterCode = 0;
|
letzterCode = 0;
|
||||||
letzterZugang = zugang;
|
letzterZugang = zugang;
|
||||||
versuche += 1;
|
versuche += 1;
|
||||||
|
window.clearTimeout(aufbauUhr);
|
||||||
|
aufbauUhr = window.setTimeout(() => {
|
||||||
|
// Weder verbunden noch abgebrochen noch nach Zugangsdaten gefragt --
|
||||||
|
// dann haengt es an der Leitung, nicht am VNC-Server.
|
||||||
|
melden("Es kommt keine Antwort. Wird geprüft, woran es liegt …", "warnung");
|
||||||
|
streckeTesten().then((steht) => {
|
||||||
|
melden(
|
||||||
|
steht
|
||||||
|
? "Die WebSocket-Strecke zu TESM steht, aber die Sitzung kommt nicht " +
|
||||||
|
"zustande. Antwortet der VNC-Server auf dem Gerät noch? Ein Neustart " +
|
||||||
|
"des VNC-Dienstes räumt eine Sperre ab."
|
||||||
|
: "Die WebSocket-Verbindung zu TESM kommt nicht zustande – auch eine " +
|
||||||
|
"einfache Probe scheitert. Ein Proxy zwischen Browser und TESM muss " +
|
||||||
|
"die Kopfzeilen Upgrade und Connection durchreichen (nginx: " +
|
||||||
|
"location /ws/ mit proxy_set_header Upgrade $http_upgrade).",
|
||||||
|
"fehler",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}, AUFBAU_GRENZE);
|
||||||
|
|
||||||
// Was abgerissen ist, wird nicht noch einmal gewaehlt. Sonst faende noVNC
|
// Was abgerissen ist, wird nicht noch einmal gewaehlt. Sonst faende noVNC
|
||||||
// dasselbe Verfahren wieder zuerst -- und der zweite Anlauf waere eine
|
// dasselbe Verfahren wieder zuerst -- und der zweite Anlauf waere eine
|
||||||
@@ -185,6 +214,7 @@ function starten(wurzel) {
|
|||||||
rfb.focusOnClick = true;
|
rfb.focusOnClick = true;
|
||||||
|
|
||||||
rfb.addEventListener("connect", () => {
|
rfb.addEventListener("connect", () => {
|
||||||
|
window.clearTimeout(aufbauUhr);
|
||||||
stand = true;
|
stand = true;
|
||||||
melden(`Verbunden mit ${wurzel.dataset.ziel}`, "ok");
|
melden(`Verbunden mit ${wurzel.dataset.ziel}`, "ok");
|
||||||
abfrage.hidden = true;
|
abfrage.hidden = true;
|
||||||
@@ -194,6 +224,7 @@ function starten(wurzel) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
rfb.addEventListener("disconnect", (ereignis) => {
|
rfb.addEventListener("disconnect", (ereignis) => {
|
||||||
|
window.clearTimeout(aufbauUhr);
|
||||||
leinwand.hidden = true;
|
leinwand.hidden = true;
|
||||||
knopfTrennen.hidden = true;
|
knopfTrennen.hidden = true;
|
||||||
knopfStrg.hidden = true;
|
knopfStrg.hidden = true;
|
||||||
@@ -236,6 +267,7 @@ function starten(wurzel) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
rfb.addEventListener("credentialsrequired", (ereignis) => {
|
rfb.addEventListener("credentialsrequired", (ereignis) => {
|
||||||
|
window.clearTimeout(aufbauUhr);
|
||||||
const gefragt = ereignis.detail.types || ["password"];
|
const gefragt = ereignis.detail.types || ["password"];
|
||||||
abfrage.hidden = false;
|
abfrage.hidden = false;
|
||||||
feldBenutzer.closest("label").hidden = !gefragt.includes("username");
|
feldBenutzer.closest("label").hidden = !gefragt.includes("username");
|
||||||
@@ -244,6 +276,7 @@ function starten(wurzel) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
rfb.addEventListener("securityfailure", (ereignis) => {
|
rfb.addEventListener("securityfailure", (ereignis) => {
|
||||||
|
window.clearTimeout(aufbauUhr);
|
||||||
melden(
|
melden(
|
||||||
`Anmeldung abgelehnt: ${ereignis.detail.reason || "kein Grund genannt"}`,
|
`Anmeldung abgelehnt: ${ereignis.detail.reason || "kein Grund genannt"}`,
|
||||||
"fehler",
|
"fehler",
|
||||||
|
|||||||
Reference in new issue
Block a user