mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2025-01-25 21:53:14 -05:00
Added support for agent with improved key input.
This commit is contained in:
parent
0e99551459
commit
0790376119
BIN
agents/agents-new/MeshService-signed.exe
Normal file
BIN
agents/agents-new/MeshService-signed.exe
Normal file
Binary file not shown.
BIN
agents/agents-new/MeshService.exe
Normal file
BIN
agents/agents-new/MeshService.exe
Normal file
Binary file not shown.
BIN
agents/agents-new/MeshService64-signed.exe
Normal file
BIN
agents/agents-new/MeshService64-signed.exe
Normal file
Binary file not shown.
BIN
agents/agents-new/MeshService64.exe
Normal file
BIN
agents/agents-new/MeshService64.exe
Normal file
Binary file not shown.
BIN
agents/agents-old/MeshService-signed.exe
Normal file
BIN
agents/agents-old/MeshService-signed.exe
Normal file
Binary file not shown.
BIN
agents/agents-old/MeshService.exe
Normal file
BIN
agents/agents-old/MeshService.exe
Normal file
Binary file not shown.
BIN
agents/agents-old/MeshService64-signed.exe
Normal file
BIN
agents/agents-old/MeshService64-signed.exe
Normal file
Binary file not shown.
BIN
agents/agents-old/MeshService64.exe
Normal file
BIN
agents/agents-old/MeshService64.exe
Normal file
Binary file not shown.
@ -171,10 +171,9 @@ module.exports.CreateLetsEncrypt = function (parent) {
|
||||
|
||||
// Create Certificate Request (CSR)
|
||||
obj.log("Creating certificate request...");
|
||||
acme.forge.createCsr({
|
||||
commonName: obj.leDomains[0],
|
||||
altNames: obj.leDomains
|
||||
}).then(function (r) {
|
||||
var certRequest = { commonName: obj.leDomains[0] };
|
||||
if (obj.leDomains.length > 1) { certRequest.altNames = obj.leDomains; }
|
||||
acme.forge.createCsr(certRequest).then(function (r) {
|
||||
var csr = r[1];
|
||||
obj.tempPrivateKey = r[0];
|
||||
obj.log("Requesting certificate from Let's Encrypt...");
|
||||
|
2
public/scripts/agent-desktop-0.0.2-min.js
vendored
2
public/scripts/agent-desktop-0.0.2-min.js
vendored
File diff suppressed because one or more lines are too long
@ -35,7 +35,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
|
||||
obj.firstUpKeys = [];
|
||||
obj.stopInput = false;
|
||||
obj.localKeyMap = true;
|
||||
obj.remoteKeyMap = null; // 'fr-CA'
|
||||
obj.remoteKeyMap = true; // If false, the remote keyboard mapping is not used, only works on Windows.
|
||||
obj.pressedKeys = [];
|
||||
|
||||
obj.sessionid = 0;
|
||||
@ -282,7 +282,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
|
||||
// Keyboard and Mouse I/O.
|
||||
obj.MouseButton = { "NONE": 0x00, "LEFT": 0x02, "RIGHT": 0x08, "MIDDLE": 0x20 };
|
||||
obj.KeyAction = { "NONE": 0, "DOWN": 1, "UP": 2, "SCROLL": 3, "EXUP": 4, "EXDOWN": 5, "DBLCLICK": 6 };
|
||||
obj.InputType = { "KEY": 1, "MOUSE": 2, "CTRLALTDEL": 10, "TOUCH": 15, "KEYWITHLAYOUT": 85 };
|
||||
obj.InputType = { "KEY": 1, "MOUSE": 2, "CTRLALTDEL": 10, "TOUCH": 15, "KEYUNICODE": 85 };
|
||||
obj.Alternate = 0;
|
||||
|
||||
var convertKeyCodeTable = {
|
||||
@ -399,16 +399,15 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
|
||||
if (i != -1) { obj.pressedKeys.splice(i, 1); } // Remove the key press from the pressed array
|
||||
}
|
||||
|
||||
if ((obj.remoteKeyMap == null) || (obj.remoteKeyMap == '')) {
|
||||
// No remote keyboard mapping
|
||||
obj.send(String.fromCharCode(0x00, obj.InputType.KEY, 0x00, 0x06, (action - 1), kc));
|
||||
} else {
|
||||
// With remote keyboard mapping
|
||||
obj.send(String.fromCharCode(0x00, obj.InputType.KEYWITHLAYOUT, 0x00, 0x16, (action - 1), kc) + obj.remoteKeyMap + ('\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0'.substring(0, 16 - obj.remoteKeyMap.length)));
|
||||
}
|
||||
obj.send(String.fromCharCode(0x00, obj.InputType.KEY, 0x00, 0x06, (action - 1), kc));
|
||||
}
|
||||
}
|
||||
|
||||
obj.SendKeyUnicode = function (action, val) {
|
||||
if (obj.State != 3) return;
|
||||
obj.send(String.fromCharCode(0x00, obj.InputType.KEYUNICODE, 0x00, 0x07, (action - 1)) + ShortToStr(val));
|
||||
}
|
||||
|
||||
obj.sendcad = function() { obj.SendCtrlAltDelMsg(); }
|
||||
|
||||
obj.SendCtrlAltDelMsg = function () {
|
||||
@ -528,13 +527,30 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
|
||||
obj.xxMouseDblClick = function (e) { if (obj.State == 3) obj.SendMouseMsg(obj.KeyAction.DBLCLICK, e); if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
|
||||
obj.xxDOMMouseScroll = function (e) { if (obj.State == 3) { obj.SendMouseMsg(obj.KeyAction.SCROLL, e); return false; } return true; }
|
||||
obj.xxMouseWheel = function (e) { if (obj.State == 3) { obj.SendMouseMsg(obj.KeyAction.SCROLL, e); return false; } return true; }
|
||||
obj.xxKeyUp = function (e) { if (obj.State == 3) { obj.SendKeyMsg(obj.KeyAction.UP, e); } if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
|
||||
obj.xxKeyDown = function (e) { if (obj.State == 3) { obj.SendKeyMsg(obj.KeyAction.DOWN, e); } if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
|
||||
obj.xxKeyPress = function (e) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false; }
|
||||
obj.xxKeyUp = function (e) {
|
||||
if ((e.key != 'Dead') && (obj.State == 3)) {
|
||||
if ((e.key.length == 1) && (obj.remoteKeyMap == false)) { obj.SendKeyUnicode(obj.KeyAction.UP, e.key.charCodeAt(0)); } else { obj.SendKeyMsg(obj.KeyAction.UP, e); }
|
||||
}
|
||||
if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false;
|
||||
}
|
||||
obj.xxKeyDown = function (e) {
|
||||
if ((e.key != 'Dead') && (obj.State == 3)) {
|
||||
if ((e.key.length == 1) && (obj.remoteKeyMap == false)) { obj.SendKeyUnicode(obj.KeyAction.DOWN, e.key.charCodeAt(0)); } else { obj.SendKeyMsg(obj.KeyAction.DOWN, e); }
|
||||
}
|
||||
if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false;
|
||||
}
|
||||
obj.xxKeyPress = function (e) {
|
||||
if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); return false;
|
||||
}
|
||||
|
||||
// Key handlers
|
||||
obj.handleKeys = function (e) { if (obj.stopInput == true || desktop.State != 3) return false; return obj.xxKeyPress(e); }
|
||||
obj.handleKeys = function (e) {
|
||||
//console.log('keypress', e.code, e.key, e.keyCode, (e.key.length == 1) ? e.key.charCodeAt(0) : 0);
|
||||
if (obj.stopInput == true || desktop.State != 3) return false;
|
||||
return obj.xxKeyPress(e);
|
||||
}
|
||||
obj.handleKeyUp = function (e) {
|
||||
//console.log('keyup', e.code, e.key, e.keyCode, (e.key.length == 1)?e.key.charCodeAt(0):0);
|
||||
if (obj.stopInput == true || desktop.State != 3) return false;
|
||||
if (obj.firstUpKeys.length < 5) {
|
||||
obj.firstUpKeys.push(e.keyCode);
|
||||
@ -543,6 +559,7 @@ var CreateAgentRemoteDesktop = function (canvasid, scrolldiv) {
|
||||
return obj.xxKeyUp(e);
|
||||
}
|
||||
obj.handleKeyDown = function (e) {
|
||||
//console.log('keydown', e.code, e.key, e.keyCode, (e.key.length == 1) ? e.key.charCodeAt(0) : 0);
|
||||
if (obj.stopInput == true || desktop.State != 3) return false;
|
||||
return obj.xxKeyDown(e);
|
||||
}
|
||||
|
2
public/scripts/amt-wsman-0.2.0-min.js
vendored
2
public/scripts/amt-wsman-0.2.0-min.js
vendored
File diff suppressed because one or more lines are too long
25
webserver.js
25
webserver.js
@ -3198,6 +3198,13 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
||||
if ((fields.overwriteFiles != null) && (fields.overwriteFiles.length == 1) && (fields.overwriteFiles[0] == 'on')) { cmd.overwrite = true; }
|
||||
if ((fields.createFolder != null) && (fields.createFolder.length == 1) && (fields.createFolder[0] == 'on')) { cmd.createFolder = true; }
|
||||
|
||||
// Check if we have al least one target path
|
||||
if ((cmd.windowsPath == null) && (cmd.linuxPath == null)) {
|
||||
parent.debug('web', 'Batch upload error, invalid fields: ' + JSON.stringify(fields));
|
||||
res.send('');
|
||||
return;
|
||||
}
|
||||
|
||||
// Get server temporary path
|
||||
var serverpath = obj.path.join(obj.filespath, 'tmp')
|
||||
try { obj.fs.mkdirSync(obj.parent.filespath); } catch (ex) { }
|
||||
@ -3226,6 +3233,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
||||
obj.GetNodeWithRights(cmd.domain, cmd.user, cmd.nodeids[i], function (node, rights, visible) {
|
||||
if ((node == null) || ((rights & 8) == 0) || (visible == false)) return; // We don't have remote control rights to this device
|
||||
var agentPath = ((node.agent.id > 0) && (node.agent.id < 5)) ? cmd.windowsPath : cmd.linuxPath;
|
||||
if (agentPath == null) return;
|
||||
|
||||
// Event that this operation is being performed.
|
||||
var targets = obj.CreateNodeDispatchTargets(node.meshid, node._id, ['server-users', cmd.user._id]);
|
||||
@ -3235,18 +3243,11 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
|
||||
|
||||
// Send the agent commands to perform the batch upload operation
|
||||
for (var f in cmd.files) {
|
||||
try {
|
||||
//if ((agentPath != null) && (cmd.files[f].name != null)) {
|
||||
const acmd = { action: 'wget', overwrite: cmd.overwrite, createFolder: cmd.createFolder, urlpath: '/agentdownload.ashx?c=' + obj.parent.encodeCookie({ a: 'tmpdl', d: cmd.domain.id, nid: node._id, f: cmd.files[f].target }, obj.parent.loginCookieEncryptionKey), path: obj.path.join(agentPath, cmd.files[f].name), folder: agentPath, servertlshash: tlsCertHash };
|
||||
var agent = obj.wsagents[node._id];
|
||||
if (agent != null) { try { agent.send(JSON.stringify(acmd)); } catch (ex) { } }
|
||||
// TODO: Add support for peer servers.
|
||||
//}
|
||||
} catch (ex) {
|
||||
parent.debug('web', 'Exception: ' + ex);
|
||||
parent.debug('web', 'AgentPath: ' + agentPath);
|
||||
parent.debug('web', 'Command: ' + JSON.stringify(cmd));
|
||||
parent.debug('web', 'AgentId: ' + node.agent.id);
|
||||
if (cmd.files[f].name != null) {
|
||||
const acmd = { action: 'wget', overwrite: cmd.overwrite, createFolder: cmd.createFolder, urlpath: '/agentdownload.ashx?c=' + obj.parent.encodeCookie({ a: 'tmpdl', d: cmd.domain.id, nid: node._id, f: cmd.files[f].target }, obj.parent.loginCookieEncryptionKey), path: obj.path.join(agentPath, cmd.files[f].name), folder: agentPath, servertlshash: tlsCertHash };
|
||||
var agent = obj.wsagents[node._id];
|
||||
if (agent != null) { try { agent.send(JSON.stringify(acmd)); } catch (ex) { } }
|
||||
// TODO: Add support for peer servers.
|
||||
}
|
||||
}
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user