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
@@ -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
|
||||
|
||||
Reference in new issue
Block a user