Version 2.8.17: keine Vorauswahl, keine Messung im Seitenaufbau

This commit is contained in:
alientim committed 2026-09-13 13:07:05 +02:00
1 parent b54b87ca6f
commit 491724beb5
7 files changed
+103 -114

No files matched your search

+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "tesm-core"
version = "2.8.7"
version = "2.8.8"
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
requires-python = ">=3.11"
dependencies = [
@@ -11,25 +11,18 @@
import RFB from "../vendor/novnc/core/rfb.js";
// Sicherheitsverfahren, die ohne Zugangsdaten auskommen. Bietet der Server
// eines davon an und haben wir keine, nehmen wir es -- auch wenn der Server
// ein anderes zuerst nennt.
// Zwei Eingriffe in private Methoden der mitgelieferten Bibliothek -- beide
// nur, um zu *erfahren*, was schiefging; keiner greift in die Verhandlung ein.
// Bewusst hier und nicht in der Bibliothek selbst: eine neue Fassung von noVNC
// laesst sich dann austauschen, ohne eine Aenderung nachzupflegen -- faellt
// eine Methode weg, entfaellt nur die Auskunft, nicht die Sitzung.
//
// Warum das noetig ist: noVNC waehlt "das erste, das ich kann, in der
// Reihenfolge des Servers". Ein RealVNC Server nennt RA2ne vor "ohne
// Authentifizierung"; der Browser liefe also in eine Passwortabfrage, obwohl
// daneben ein Weg offensteht, den auch der RealVNC Viewer nimmt. Wer ein
// Passwort hinterlegt hat, behaelt die Reihenfolge des Servers -- dann ist
// der angemeldete Weg der bessere.
const OHNE_ZUGANGSDATEN = new Set([1]);
// Drei Eingriffe in private Methoden der mitgelieferten Bibliothek. Bewusst
// hier und nicht in der Bibliothek selbst: eine neue Fassung von noVNC laesst
// sich dann austauschen, ohne eine Aenderung nachzupflegen -- faellt eine
// Methode weg, greift der jeweilige Eingriff nicht mehr, und die Sitzung
// laeuft wieder wie ohne ihn. Kein stiller Bruch.
const istUnterstuetzt = RFB.prototype._isSupportedSecurityType;
// Es stand hier einmal ein dritter, der die Wahl des Sicherheitsverfahrens
// umbog: ohne hinterlegte Zugangsdaten sollte ein Verfahren ohne Anmeldung
// gewinnen, weil der Server RA2ne zuerst nennt. Gut gemeint und falsch --
// genau dieser Griff hat eine Sitzung, die lief, zum Abbruch gebracht: der
// RealVNC Server bietet "ohne Authentifizierung" zwar an, legt bei dieser Wahl
// aber auf. Die Reihenfolge des Servers ist seine Entscheidung, nicht unsere.
// Den *Grund* eines Fehlschlags kennt nur ``_fail`` -- das Ereignis
// "disconnect" traegt ihn nicht, und der Weg ueber die Protokollausgabe
// funktioniert nicht: die Bibliothek bindet ``console.error`` beim Laden, also
@@ -126,21 +119,6 @@ function starten(wurzel) {
letzterGrund = "";
letzterCode = 0;
// Vorauswahl nur, wenn wir nichts anzubieten haben: dann zaehlt der Weg,
// der ohne Zugangsdaten auskommt -- sofern der Server ihn anbietet.
const hatZugangsdaten = Boolean(zugang && (zugang.password || zugang.username));
const angeboten = (wurzel.dataset.verfahren || "")
.split(",")
.map((wert) => parseInt(wert, 10))
.filter((wert) => !Number.isNaN(wert));
const ohnePasswortMoeglich = angeboten.some((wert) => OHNE_ZUGANGSDATEN.has(wert));
RFB.prototype._isSupportedSecurityType = function (typ) {
if (!hatZugangsdaten && ohnePasswortMoeglich) {
return OHNE_ZUGANGSDATEN.has(typ);
}
return istUnterstuetzt.call(this, typ);
};
rfb = new RFB(leinwand, adresse, {
credentials: zugang,
// Eine Bildschirmsitzung soll nicht nebenbei die Zwischenablage des