Version 2.8.17: keine Vorauswahl, keine Messung im Seitenaufbau
This commit is contained in:
1 parent
ec5cbb2e17
commit
4041156a19
2 files changed
+12
-34
No files matched your search
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "tesm-core"
|
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"
|
description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
@@ -11,25 +11,18 @@
|
|||||||
|
|
||||||
import RFB from "../vendor/novnc/core/rfb.js";
|
import RFB from "../vendor/novnc/core/rfb.js";
|
||||||
|
|
||||||
// Sicherheitsverfahren, die ohne Zugangsdaten auskommen. Bietet der Server
|
// Zwei Eingriffe in private Methoden der mitgelieferten Bibliothek -- beide
|
||||||
// eines davon an und haben wir keine, nehmen wir es -- auch wenn der Server
|
// nur, um zu *erfahren*, was schiefging; keiner greift in die Verhandlung ein.
|
||||||
// ein anderes zuerst nennt.
|
// 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
|
// Es stand hier einmal ein dritter, der die Wahl des Sicherheitsverfahrens
|
||||||
// Reihenfolge des Servers". Ein RealVNC Server nennt RA2ne vor "ohne
|
// umbog: ohne hinterlegte Zugangsdaten sollte ein Verfahren ohne Anmeldung
|
||||||
// Authentifizierung"; der Browser liefe also in eine Passwortabfrage, obwohl
|
// gewinnen, weil der Server RA2ne zuerst nennt. Gut gemeint und falsch --
|
||||||
// daneben ein Weg offensteht, den auch der RealVNC Viewer nimmt. Wer ein
|
// genau dieser Griff hat eine Sitzung, die lief, zum Abbruch gebracht: der
|
||||||
// Passwort hinterlegt hat, behaelt die Reihenfolge des Servers -- dann ist
|
// RealVNC Server bietet "ohne Authentifizierung" zwar an, legt bei dieser Wahl
|
||||||
// der angemeldete Weg der bessere.
|
// aber auf. Die Reihenfolge des Servers ist seine Entscheidung, nicht unsere.
|
||||||
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;
|
|
||||||
|
|
||||||
// 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
|
||||||
@@ -126,21 +119,6 @@ function starten(wurzel) {
|
|||||||
letzterGrund = "";
|
letzterGrund = "";
|
||||||
letzterCode = 0;
|
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, {
|
rfb = new RFB(leinwand, adresse, {
|
||||||
credentials: zugang,
|
credentials: zugang,
|
||||||
// Eine Bildschirmsitzung soll nicht nebenbei die Zwischenablage des
|
// Eine Bildschirmsitzung soll nicht nebenbei die Zwischenablage des
|
||||||
|
|||||||
Reference in new issue
Block a user