From 7cca8f5475727da16c9af6570dcfd143668fd9b2 Mon Sep 17 00:00:00 2001 From: matt Date: Fri, 5 Jan 2024 09:05:40 -0500 Subject: [PATCH 1/2] KASM-5409 unique control channel per session --- app/ui.js | 4 ++-- app/ui_screen.js | 2 +- core/display.js | 2 +- core/rfb.js | 12 +++++++----- vnc.html | 4 ++-- 5 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/ui.js b/app/ui.js index 3dfeddad..84a5ca30 100644 --- a/app/ui.js +++ b/app/ui.js @@ -25,8 +25,8 @@ window.updateSetting = (name, value) => { } } -import "core-js/stable"; -import "regenerator-runtime/runtime"; +//import "core-js/stable"; +//import "regenerator-runtime/runtime"; import * as Log from '../core/util/logging.js'; import _, { l10n } from './localization.js'; import { isTouchDevice, isSafari, hasScrollbarGutter, dragThreshold, supportsBinaryClipboard, isFirefox, isWindows, isIOS, supportsPointerLock } diff --git a/app/ui_screen.js b/app/ui_screen.js index 66bb0e1d..9f3bc890 100644 --- a/app/ui_screen.js +++ b/app/ui_screen.js @@ -104,7 +104,7 @@ const UI = { if (UI.supportsBroadcastChannel) { console.log('add event listener') - UI.controlChannel = new BroadcastChannel("registrationChannel"); + UI.controlChannel = new BroadcastChannel(UI.rfb.connectionID); UI.controlChannel.addEventListener('message', UI.handleControlMessage) } diff --git a/core/display.js b/core/display.js index 5fb7042c..984eec00 100644 --- a/core/display.js +++ b/core/display.js @@ -124,7 +124,7 @@ export default class Display { // ===== PROPERTIES ===== get screens() { return this._screens; } - get screenId() { return this._screenID; } + get screenID() { return this._screenID; } get screenIndex() { // A secondary screen should not have a screen index of 0, but it will be 0 until registration is complete // returning a -1 lets the caller know the screen has not been registered yet diff --git a/core/rfb.js b/core/rfb.js index b7d141e0..cc518f60 100644 --- a/core/rfb.js +++ b/core/rfb.js @@ -123,7 +123,7 @@ export default class RFB extends EventTargetMixin { this._supportsContinuousUpdates = false; this._enabledContinuousUpdates = false; this._supportsSetDesktopSize = false; - this._screenID = uuidv4(); + this._connectionID = window.location.href.split('?')[0].match(/^(.+)(\/)/)[0]; this._screenIndex = 0; this._screenFlags = 0; this._qemuExtKeyEventSupported = false; @@ -220,7 +220,7 @@ export default class RFB extends EventTargetMixin { this._secondaryDisplays = {}; this._supportsBroadcastChannel = (typeof BroadcastChannel !== "undefined"); if (this._supportsBroadcastChannel) { - this._controlChannel = new BroadcastChannel("registrationChannel"); + this._controlChannel = new BroadcastChannel(this._connectionID); this._controlChannel.addEventListener('message', this._handleControlMessage.bind(this)); Log.Debug("Attached to registrationChannel for secondary displays.") @@ -331,6 +331,8 @@ export default class RFB extends EventTargetMixin { } // ===== PROPERTIES ===== + + get connectionID() { return this._connectionID; } get translateShortcuts() { return this._keyboard.translateShortcuts; } set translateShortcuts(value) { @@ -1375,7 +1377,7 @@ export default class RFB extends EventTargetMixin { this._sock.close(); } else { if (this._primaryDisplayChannel) { - this._primaryDisplayChannel.postMessage({eventType: 'unregister', screenID: this._screenID}) + this._primaryDisplayChannel.postMessage({eventType: 'unregister', screenID: this._display.screenID}) this._primaryDisplayChannel.removeEventListener('message', this._handleSecondaryDisplayMessage); this._primaryDisplayChannel.close(); this._primaryDisplayChannel = null; @@ -1713,7 +1715,7 @@ export default class RFB extends EventTargetMixin { let message = { eventType: messageType, args: data, - screenId: this._display.screenId, + screenID: this._display.screenID, screenIndex: this._display.screenIndex, mouseLastScreenIndex: this._mouseLastScreenIndex, } @@ -1834,7 +1836,7 @@ export default class RFB extends EventTargetMixin { if (!this._isPrimaryDisplay){ let message = { eventType: 'unregister', - screenID: this._display.screenId + screenID: this._display.screenID } this._controlChannel.postMessage(message); } diff --git a/vnc.html b/vnc.html index 0cf590b0..c6fa0a33 100644 --- a/vnc.html +++ b/vnc.html @@ -50,7 +50,7 @@ - + From c264442732748106fe2c7b1023171161775219df Mon Sep 17 00:00:00 2001 From: matt Date: Fri, 5 Jan 2024 09:12:19 -0500 Subject: [PATCH 2/2] revert testing changes --- app/ui.js | 4 ++-- vnc.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/ui.js b/app/ui.js index 84a5ca30..3dfeddad 100644 --- a/app/ui.js +++ b/app/ui.js @@ -25,8 +25,8 @@ window.updateSetting = (name, value) => { } } -//import "core-js/stable"; -//import "regenerator-runtime/runtime"; +import "core-js/stable"; +import "regenerator-runtime/runtime"; import * as Log from '../core/util/logging.js'; import _, { l10n } from './localization.js'; import { isTouchDevice, isSafari, hasScrollbarGutter, dragThreshold, supportsBinaryClipboard, isFirefox, isWindows, isIOS, supportsPointerLock } diff --git a/vnc.html b/vnc.html index c6fa0a33..0cf590b0 100644 --- a/vnc.html +++ b/vnc.html @@ -50,7 +50,7 @@ - +