Improved remote desktop key release, added Let's Encrypt nochecks:true.

Ylian Saint-Hilaire committed Feb 6, 2020 at 18:04 UTC e9dd9dc270d94c889160955052767bda55e48362
3 files changed +17 -15
meshcentral.js
+4
@@ -1050,6 +1050,10 @@ function CreateMeshCentralServer(config, args) {
1050 const nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]);
1051 if ((nodeVersion < 8) || (require('crypto').generateKeyPair == null) || (obj.config.letsencrypt == null) || (obj.redirserver == null)) {
1052 obj.StartEx3(certs); // Just use the configured certificates
1053 + } else if ((obj.config.letsencrypt != null) && (obj.config.letsencrypt.nochecks == true)) {
1054 + // Use Let's Encrypt with no checking
1055 + obj.letsencrypt = require('./letsencrypt.js').CreateLetsEncrypt(obj);
1056 + obj.letsencrypt.getCertificate(certs, obj.StartEx3); // Use Let's Encrypt with no checking, use at your own risk.
1057 } else {
1058 // Check Let's Encrypt settings
1059 var leok = true;
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.4.8-r",
3 + "version": "0.4.8-t",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
public/scripts/agent-desktop-0.0.2.js
+12 -14
@@ -32,9 +32,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
32 obj.firstUpKeys = [];
33 obj.stopInput = false;
34 obj.localKeyMap = true;
35 - obj.altPressed = false;
36 - obj.ctrlPressed = false;
37 - obj.shiftPressed = false;
35 + obj.pressedKeys = [];
36
37 obj.sessionid = 0;
38 obj.username;
@@ -421,7 +419,15 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
419 //console.log('SendKeyMsgKC', action, kc);
420 if (obj.State != 3) return;
421 if (typeof action == 'object') { for (var i in action) { obj.SendKeyMsgKC(action[i][0], action[i][1]); } }
424 - else { obj.send(String.fromCharCode(0x00, obj.InputType.KEY, 0x00, 0x06, (action - 1), kc)); }
422 + else {
423 + if (action == 1) { // Key Down
424 + if (obj.pressedKeys.indexOf(kc) == -1) { obj.pressedKeys.unshift(kc); } // Add key press to start of array
425 + } else if (action == 2) { // Key Up
426 + var i = obj.pressedKeys.indexOf(kc);
427 + if (i != -1) { obj.pressedKeys.splice(i, 1); } // Remove the key press from the pressed array
428 + }
429 + obj.send(String.fromCharCode(0x00, obj.InputType.KEY, 0x00, 0x06, (action - 1), kc));
430 + }
431 }
432
433 obj.sendcad = function() { obj.SendCtrlAltDelMsg(); }
@@ -547,25 +553,17 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
553 obj.firstUpKeys.push(e.keyCode);
554 if ((obj.firstUpKeys.length == 5)) { var j = obj.firstUpKeys.join(','); if ((j == '16,17,91,91,16') || (j == '16,17,18,91,92')) { obj.stopInput = true; } }
555 }
550 - if (e.keyCode == 16) { obj.shiftPressed = false; }
551 - if (e.keyCode == 17) { obj.ctrlPressed = false; }
552 - if (e.keyCode == 18) { obj.altPressed = false; }
556 return obj.xxKeyUp(e);
557 }
558 obj.handleKeyDown = function (e) {
559 if (obj.stopInput == true || desktop.State != 3) return false;
557 - if (e.keyCode == 16) { obj.shiftPressed = true; }
558 - if (e.keyCode == 17) { obj.ctrlPressed = true; }
559 - if (e.keyCode == 18) { obj.altPressed = true; }
560 return obj.xxKeyDown(e);
561 }
562
563 // Release the CTRL, ALT, SHIFT keys if they are pressed.
564 obj.handleReleaseKeys = function () {
565 - if (obj.shiftPressed) { obj.SendKeyMsgKC(obj.KeyAction.UP, 16); } // Shift
566 - if (obj.ctrlPressed) { obj.SendKeyMsgKC(obj.KeyAction.UP, 17); } // Ctrl
567 - if (obj.altPressed) { obj.SendKeyMsgKC(obj.KeyAction.UP, 18); } // Alt
568 - obj.shiftPressed = obj.ctrlPressed = obj.altPressed = false;
565 + var p = JSON.parse(JSON.stringify(obj.pressedKeys)); // Clone the pressed array
566 + for (var i in p) { obj.SendKeyMsgKC(obj.KeyAction.UP, p[i]); } // Release all keys
567 }
568
569 // Mouse handlers