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