Completed remote desktop server view only option.
Ylian Saint-Hilaire committed
Jul 17, 2021 at 23:03 UTC
3599021a66cfe817db5f412311c5b81e44a8e0b2
6 files changed
+15
-9
agents/MeshCmd-signed.exe
Binary files a/agents/MeshCmd-signed.exe and b/agents/MeshCmd-signed.exe differ
agents/MeshCmd64-signed.exe
Binary files a/agents/MeshCmd64-signed.exe and b/agents/MeshCmd64-signed.exe differ
meshdesktopmultiplex.js
+3
@@ -905,6 +905,9 @@ function CreateMeshRelayEx2(parent, ws, req, domain, user, cookie) {
905
obj.req = req; // Used in multi-server.js
906
obj.viewOnly = ((cookie != null) && (cookie.vo == 1)); // set view only mode
907
908
+ // If the domain has remote desktop viewonly set, force everyone to be in viewonly mode.
909
+ if ((typeof domain.desktop == 'object') && (domain.desktop.viewonly == true)) { obj.viewOnly = true; }
910
+
911
// Setup traffic accounting
912
if (parent.trafficStats.desktopMultiplex == null) { parent.trafficStats.desktopMultiplex = { connections: 1, sessions: 0, in: 0, out: 0 }; } else { parent.trafficStats.desktopMultiplex.connections++; }
913
ws._socket.bytesReadEx = 0;
views/default-mobile.handlebars
+5
-4
@@ -2782,7 +2782,7 @@
2782
// Check what keys we are allows to send
2783
if (currentNode != null) {
2784
var meshrights = GetMeshRights(currentNode.meshid);
2785
- var inputAllowed = ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
2785
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
2786
if (inputAllowed == false) return false;
2787
var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
2788
if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
@@ -2816,7 +2816,7 @@
2816
// Check what keys we are allows to send
2817
if (currentNode != null) {
2818
var meshrights = GetMeshRights(currentNode.meshid);
2819
- var inputAllowed = ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
2819
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
2820
if (inputAllowed == false) return false;
2821
var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
2822
if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
@@ -2851,7 +2851,7 @@
2851
// Check what keys we are allows to send
2852
if (currentNode != null) {
2853
var meshrights = GetMeshRights(currentNode.meshid);
2854
- var inputAllowed = ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
2854
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
2855
if (inputAllowed == false) return false;
2856
var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
2857
if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
@@ -3991,6 +3991,7 @@
3991
if (tsid != null) { desktop.options.tsid = tsid; }
3992
if (consent != null) { desktop.options.consent = consent; }
3993
desktop.onStateChanged = onDesktopStateChange;
3994
+ if ((features2 & 0x2000) != 0) desktop.m.stopInput = true;
3995
desktop.onConsoleMessageChange = function () {
3996
if (desktop.consoleMessage) {
3997
Q('p11DeskConsoleMsg').innerHTML += formatAgentConsoleMessage(desktop.consoleMessage, desktop.consoleMessageId, desktop.consoleMessageArgs);
@@ -4351,7 +4352,7 @@
4352
QV('termarea4', !fullscreen);
4353
4354
var rights = GetNodeRights(currentNode);
4354
- var inputAllowed = (currentNode.agent.id != 14) && ((rights == 0xFFFFFFFF) || (((rights & 8) != 0) && ((rights & 256) == 0) && ((rights & 4096) == 0)));
4355
+ var inputAllowed = ((features2 & 0x2000) == 0) && (currentNode.agent.id != 14) && ((rights == 0xFFFFFFFF) || (((rights & 8) != 0) && ((rights & 256) == 0) && ((rights & 4096) == 0)));
4356
4357
// Show full screen buttons if needed
4358
QV('deskkeybutton1', fullscreen);
views/default.handlebars
+6
-4
@@ -3567,7 +3567,7 @@
3567
// Check what keys we are allows to send
3568
if (currentNode != null) {
3569
var meshrights = GetNodeRights(currentNode);
3570
- var inputAllowed = ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
3570
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
3571
if (inputAllowed == false) return false;
3572
var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
3573
if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
@@ -3626,7 +3626,7 @@
3626
// Check what keys we are allows to send
3627
if (currentNode != null) {
3628
var meshrights = GetNodeRights(currentNode);
3629
- var inputAllowed = ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
3629
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
3630
if (inputAllowed == false) return false;
3631
var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
3632
if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
@@ -3660,7 +3660,7 @@
3660
// Check what keys we are allows to send
3661
if (currentNode != null) {
3662
var meshrights = GetNodeRights(currentNode);
3663
- var inputAllowed = ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
3663
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((meshrights == 0xFFFFFFFF) || (((meshrights & 8) != 0) && ((meshrights & 256) == 0)));
3664
if (inputAllowed == false) return false;
3665
var limitedInputAllowed = ((meshrights != 0xFFFFFFFF) && (((meshrights & 8) != 0) && ((meshrights & 256) == 0) && ((meshrights & 4096) != 0)));
3666
if (limitedInputAllowed == true) { if ((e.altKey == true) || (e.ctrlKey == true) || ((e.keyCode < 32) && (e.keyCode != 8) && (e.keyCode != 13)) || (e.keyCode > 90)) return false; }
@@ -7640,6 +7640,7 @@
7640
if (desktop.m.SendCompressionLevel) { desktop.m.SendCompressionLevel(1, desktopsettings.quality, desktopsettings.scaling, desktopsettings.framerate); }
7641
desktop.onStateChanged = onDesktopStateChange;
7642
desktop.onMetadataChange = function(metadata) { updateMetadata(desktop, 'deskmetadata'); }
7643
+ if ((features2 & 0x2000) != 0) desktop.m.stopInput = true;
7644
if (desktop && desktop.m.mouseCursorActive) { desktop.m.mouseCursorActive(true); }
7645
QV('DeskInputLockedButton', desktop.m.RemoteInputLock === 1);
7646
QV('DeskInputUnLockedButton', desktop.m.RemoteInputLock === 0);
@@ -7700,7 +7701,7 @@
7701
QV('d7meshkvm', (webRtcDesktop) || ((currentNode.agent != null) && (currentNode.agent.caps & 1) && ((deskState == false) || (desktop.contype == 1))));
7702
7703
// Enable buttons
7703
- var inputAllowed = ((currentNode.agent == null) || (currentNode.agent.id != 14)) && ((rights == 0xFFFFFFFF) || (((rights & 8) != 0) && ((rights & 256) == 0) && ((rights & 4096) == 0)));
7704
+ var inputAllowed = ((features2 & 0x2000) == 0) && ((currentNode.agent == null) || (currentNode.agent.id != 14)) && ((rights == 0xFFFFFFFF) || (((rights & 8) != 0) && ((rights & 256) == 0) && ((rights & 4096) == 0)));
7705
var online = ((currentNode.conn & 1) != 0); // If Agent (1) connected, enable remote desktop
7706
QE('connectbutton1', online);
7707
var hwonline = ((currentNode.conn & 6) != 0); // If CIRA (2) or AMT (4) connected, enable hardware terminal
@@ -7859,6 +7860,7 @@
7860
if (tsid != null) { desktop.options.tsid = tsid; }
7861
if (consent != null) { desktop.options.consent = consent; }
7862
desktop.onStateChanged = onDesktopStateChange;
7863
+ if ((features2 & 0x2000) != 0) desktop.m.stopInput = true;
7864
desktop.m.onRemoteInputLockChanged = function(obj, state) { QV('DeskInputLockedButton', state); QV('DeskInputUnLockedButton', !state); }
7865
desktop.onConsoleMessageChange = function () {
7866
if (desktop.consoleMessage) {
webserver.js
+1
-1
@@ -2818,7 +2818,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2818
if (domain.localsessionrecording === false) { features2 += 0x00000400; } // Disable local recording feature
2819
if (domain.clipboardget == false) { features2 += 0x00000800; } // Disable clipboard get
2820
if (domain.clipboardset == false) { features2 += 0x00001000; } // Disable clipboard set
2821
- if ((typeof domain.desktop != 'object') || (domain.desktop.viewonly != false)) { features2 += 0x00002000; } // Indicates remote desktop is viewonly
2821
+ if ((typeof domain.desktop == 'object') && (domain.desktop.viewonly == true)) { features2 += 0x00002000; } // Indicates remote desktop is viewonly
2822
return { features: features, features2: features2 };
2823
}
2824