From 9453ee9ba338e1456f8f9b47d5957737f7b32b06 Mon Sep 17 00:00:00 2001 From: Ylian Saint-Hilaire Date: Tue, 7 Jan 2020 13:04:36 -0800 Subject: [PATCH] Meshcore.js internalization. --- agents/meshcore.js | 606 +++++++++--------------- translate/translate-010720-Russian.json | Bin 0 -> 333316 bytes 2 files changed, 230 insertions(+), 376 deletions(-) create mode 100644 translate/translate-010720-Russian.json diff --git a/agents/meshcore.js b/agents/meshcore.js index 6ac1ec0f..c8e0ca10 100644 --- a/agents/meshcore.js +++ b/agents/meshcore.js @@ -15,7 +15,7 @@ limitations under the License. */ process.on('uncaughtException', function (ex) { - require('MeshAgent').SendCommand({ "action": "msg", "type": "console", "value": "uncaughtException1: " + ex }); + require('MeshAgent').SendCommand({ action: 'msg', type: 'console', value: "uncaughtException1: " + ex }); }); // NOTE: This seems to cause big problems, don't enable the debugger in the server's meshcore. @@ -39,24 +39,11 @@ var MESHRIGHT_LIMITEDINPUT = 4096; function createMeshCore(agent) { var obj = {}; - if (process.platform == 'win32' && require('user-sessions').isRoot()) - { + if (process.platform == 'win32' && require('user-sessions').isRoot()) { // Check the Agent Uninstall MetaData for correctness, as the installer may have written an incorrect value - var actualSize = Math.floor(require('fs').statSync(process.execPath).size / 1024); - var writtenSize = 0; - try - { - writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize'); - } - catch(x) { } - if (writtenSize != actualSize) - { - try - { - require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize', actualSize); - } - catch (x2) { } - } + var writtenSize = 0, actualSize = Math.floor(require('fs').statSync(process.execPath).size / 1024); + try { writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize'); } catch (x) { } + if (writtenSize != actualSize) { try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize', actualSize); } catch (x2) { } } } if (process.platform == 'darwin' && !process.versions) { @@ -149,7 +136,7 @@ function createMeshCore(agent) { }; this._daipc = c; c.parent = this; - c.on('end', function () { console.log('Connection Closed'); this.parent._daipc = null; }); + c.on('end', function () { console.log("Connection Closed"); this.parent._daipc = null; }); c.on('data', function (chunk) { if (chunk.length < 4) { this.unshift(chunk); return; } var len = chunk.readUInt32LE(0); @@ -205,8 +192,8 @@ function createMeshCore(agent) { require('service-manager').manager.installService( { name: 'meshagentDiagnostic', - displayName: 'Mesh Agent Diagnostic Service', - description: 'Mesh Agent Diagnostic Service', + displayName: "Mesh Agent Diagnostic Service", + description: "Mesh Agent Diagnostic Service", servicePath: process.execPath, parameters: ['-recovery'] //files: [{ newName: 'diagnostic.js', _buffer: Buffer.from('LyoNCkNvcHlyaWdodCAyMDE5IEludGVsIENvcnBvcmF0aW9uDQoNCkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQoNCiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQoqLw0KDQp2YXIgaG9zdCA9IHJlcXVpcmUoJ3NlcnZpY2UtaG9zdCcpLmNyZWF0ZSgnbWVzaGFnZW50RGlhZ25vc3RpYycpOw0KdmFyIFJlY292ZXJ5QWdlbnQgPSByZXF1aXJlKCdNZXNoQWdlbnQnKTsNCg0KaG9zdC5vbignc2VydmljZVN0YXJ0JywgZnVuY3Rpb24gKCkNCnsNCiAgICBjb25zb2xlLnNldERlc3RpbmF0aW9uKGNvbnNvbGUuRGVzdGluYXRpb25zLkxPR0ZJTEUpOw0KICAgIGhvc3Quc3RvcCA9IGZ1bmN0aW9uKCkNCiAgICB7DQogICAgICAgIHJlcXVpcmUoJ3NlcnZpY2UtbWFuYWdlcicpLm1hbmFnZXIuZ2V0U2VydmljZSgnbWVzaGFnZW50RGlhZ25vc3RpYycpLnN0b3AoKTsNCiAgICB9DQogICAgUmVjb3ZlcnlBZ2VudC5vbignQ29ubmVjdGVkJywgZnVuY3Rpb24gKHN0YXR1cykNCiAgICB7DQogICAgICAgIGlmIChzdGF0dXMgPT0gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgY29uc29sZS5sb2coJ0RpYWdub3N0aWMgQWdlbnQ6IFNlcnZlciBjb25uZWN0aW9uIGxvc3QuLi4nKTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBjb25zb2xlLmxvZygnRGlhZ25vc3RpYyBBZ2VudDogQ29ubmVjdGlvbiBFc3RhYmxpc2hlZCB3aXRoIFNlcnZlcicpOw0KICAgICAgICBzdGFydCgpOw0KICAgIH0pOw0KfSk7DQpob3N0Lm9uKCdub3JtYWxTdGFydCcsIGZ1bmN0aW9uICgpDQp7DQogICAgaG9zdC5zdG9wID0gZnVuY3Rpb24gKCkNCiAgICB7DQogICAgICAgIHByb2Nlc3MuZXhpdCgpOw0KICAgIH0NCiAgICBjb25zb2xlLmxvZygnTm9uIFNlcnZpY2UgTW9kZScpOw0KICAgIFJlY292ZXJ5QWdlbnQub24oJ0Nvbm5lY3RlZCcsIGZ1bmN0aW9uIChzdGF0dXMpDQogICAgew0KICAgICAgICBpZiAoc3RhdHVzID09IDApDQogICAgICAgIHsNCiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEaWFnbm9zdGljIEFnZW50OiBTZXJ2ZXIgY29ubmVjdGlvbiBsb3N0Li4uJyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAgICAgICAgY29uc29sZS5sb2coJ0RpYWdub3N0aWMgQWdlbnQ6IENvbm5lY3Rpb24gRXN0YWJsaXNoZWQgd2l0aCBTZXJ2ZXInKTsNCiAgICAgICAgc3RhcnQoKTsNCiAgICB9KTsNCn0pOw0KaG9zdC5vbignc2VydmljZVN0b3AnLCBmdW5jdGlvbiAoKSB7IHByb2Nlc3MuZXhpdCgpOyB9KTsNCmhvc3QucnVuKCk7DQoNCg0KZnVuY3Rpb24gc3RhcnQoKQ0Kew0KDQp9Ow0K', 'base64') }] @@ -234,7 +221,7 @@ function createMeshCore(agent) { } require('MeshAgent').SendCommand({ action: 'diagnostic', value: { command: 'register', value: nodeid } }); - require('MeshAgent').SendCommand({ action: 'msg', type: 'console', value: 'Diagnostic Agent Registered [' + nodeid.length + '/' + nodeid + ']' }); + require('MeshAgent').SendCommand({ action: 'msg', type: 'console', value: "Diagnostic Agent Registered [" + nodeid.length + "/" + nodeid + "]" }); delete ddb; @@ -280,7 +267,7 @@ function createMeshCore(agent) { */ // MeshAgent JavaScript Core Module. This code is sent to and running on the mesh agent. - var meshCoreObj = { "action": "coreinfo", "value": "MeshCore v6", "caps": 14 }; // Capability bitmask: 1 = Desktop, 2 = Terminal, 4 = Files, 8 = Console, 16 = JavaScript, 32 = Temporary Agent, 64 = Recovery Agent + var meshCoreObj = { action: 'coreinfo', value: 'MeshCore v6', caps: 14 }; // Capability bitmask: 1 = Desktop, 2 = Terminal, 4 = Files, 8 = Console, 16 = JavaScript, 32 = Temporary Agent, 64 = Recovery Agent // Get the operating system description string try { require('os').name().then(function (v) { meshCoreObj.osdesc = v; }); } catch (ex) { } @@ -307,7 +294,7 @@ function createMeshCore(agent) { // Add to the server event log function MeshServerLog(msg, state) { - if (typeof msg == 'string') { msg = { 'action': 'log', 'msg': msg }; } else { msg.action = 'log'; } + if (typeof msg == 'string') { msg = { action: 'log', msg: msg }; } else { msg.action = 'log'; } if (state) { if (state.userid) { msg.userid = state.userid; } if (state.username) { msg.username = state.username; } @@ -380,7 +367,7 @@ function createMeshCore(agent) { if (data != null) { SMBiosTablesRaw = data; SMBiosTables = require('smbios').parse(data) - if (mesh.isControlChannelConnected) { mesh.SendCommand({ 'action': 'smbios', 'value': SMBiosTablesRaw }); } + if (mesh.isControlChannelConnected) { mesh.SendCommand({ action: 'smbios', value: SMBiosTablesRaw }); } // If SMBios tables say that Intel AMT is present, try to connect MEI if (SMBiosTables.amtInfo && (SMBiosTables.amtInfo.AMT == true)) { @@ -603,10 +590,10 @@ function createMeshCore(agent) { for (var i = 0; i < interfaces[adapter].length; ++i) { var addr = interfaces[adapter][i]; if ((addr.family == 'IPv4') && (addr.mac != '00:00:00:00:00:00')) { - var socket = require('dgram').createSocket({ type: "udp4" }); + var socket = require('dgram').createSocket({ type: 'udp4' }); socket.bind({ address: addr.address }); socket.setBroadcast(true); - socket.send(magicbin, 7, "255.255.255.255"); + socket.send(magicbin, 7, '255.255.255.255'); count++; } } @@ -625,7 +612,7 @@ function createMeshCore(agent) { switch (data.type) { case 'console': { // Process a console command if (data.value && data.sessionid) { - MeshServerLog('Processing console command: ' + data.value, data); + MeshServerLog("Processing console command: " + data.value, data); var args = splitArgs(data.value); processConsoleCommand(args[0].toLowerCase(), parseArgs(args), data.rights, data.sessionid); } @@ -642,11 +629,11 @@ function createMeshCore(agent) { //sendConsoleText('TUNNEL: ' + JSON.stringify(data)); var tunnel = http.request(woptions); tunnel.upgrade = onTunnelUpgrade; - tunnel.on('error', function (e) { sendConsoleText('ERROR: ' + JSON.stringify(e)); }); + tunnel.on('error', function (e) { sendConsoleText("ERROR: " + JSON.stringify(e)); }); tunnel.sessionid = data.sessionid; tunnel.rights = data.rights; tunnel.consent = data.consent; - tunnel.privacybartext = data.privacybartext ? data.privacybartext : 'Sharing desktop with: {0}'; + tunnel.privacybartext = data.privacybartext ? data.privacybartext : "Sharing desktop with: {0}"; tunnel.username = data.username; tunnel.userid = data.userid; tunnel.remoteaddr = data.remoteaddr; @@ -672,7 +659,7 @@ function createMeshCore(agent) { // Return the list of running processes if (data.sessionid) { processManager.getProcesses(function (plist) { - mesh.SendCommand({ "action": "msg", "type": "ps", "value": JSON.stringify(plist), "sessionid": data.sessionid }); + mesh.SendCommand({ action: 'msg', type: 'ps', value: JSON.stringify(plist), sessionid: data.sessionid }); }); } break; @@ -680,7 +667,7 @@ function createMeshCore(agent) { case 'pskill': { // Kill a process if (data.value) { - MeshServerLog('Killing process ' + data.value, data); + MeshServerLog("Killing process " + data.value, data); try { process.kill(data.value); } catch (e) { sendConsoleText("pskill: " + JSON.stringify(e)); } } break; @@ -689,7 +676,7 @@ function createMeshCore(agent) { // Return the list of installed services var services = null; try { services = require('service-manager').manager.enumerateService(); } catch (e) { } - if (services != null) { mesh.SendCommand({ "action": "msg", "type": "services", "value": JSON.stringify(services), "sessionid": data.sessionid }); } + if (services != null) { mesh.SendCommand({ action: 'msg', type: 'services', value: JSON.stringify(services), sessionid: data.sessionid }); } break; } case 'serviceStop': { @@ -718,48 +705,44 @@ function createMeshCore(agent) { } case 'deskBackground': { - // Toggle desktop background - try { - if (process.platform == 'win32') - { - var stype = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0; - var sid = undefined; - if (stype == 1) - { - if(require('MeshAgent')._tsid != null) - { - stype = 5; - sid = require('MeshAgent')._tsid; + // Toggle desktop background + try { + if (process.platform == 'win32') { + var stype = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0; + var sid = undefined; + if (stype == 1) { + if (require('MeshAgent')._tsid != null) { + stype = 5; + sid = require('MeshAgent')._tsid; + } } + var id = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0; + var child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0='], { type: stype, uid: sid }); + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.on('data', function () { }); + child.waitExit(); + var current = child.stdout.str.trim(); + if (current != '') { require('MeshAgent')._wallpaper = current; } + child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0=', current != '' ? '""' : require('MeshAgent')._wallpaper], { type: stype, uid: sid }); + child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); + child.stderr.on('data', function () { }); + child.waitExit(); + } else { + var id = require('user-sessions').consoleUid(); + var current = require('linux-gnome-helpers').getDesktopWallpaper(id); + if (current != '/dev/null') { require('MeshAgent')._wallpaper = current; } + require('linux-gnome-helpers').setDesktopWallpaper(id, current != '/dev/null' ? undefined : require('MeshAgent')._wallpaper); } - var id = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0; - var child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0='], { type: stype, uid: sid }); - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); - child.stderr.on('data', function () { }); - child.waitExit(); - var current = child.stdout.str.trim(); - if (current != '') { require('MeshAgent')._wallpaper = current; } - child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0=', current != '' ? '""' : require('MeshAgent')._wallpaper], { type: stype, uid: sid }); - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); - child.stderr.on('data', function () { }); - child.waitExit(); - } else { - var id = require('user-sessions').consoleUid(); - var current = require('linux-gnome-helpers').getDesktopWallpaper(id); - if (current != '/dev/null') { require('MeshAgent')._wallpaper = current; } - require('linux-gnome-helpers').setDesktopWallpaper(id, current != '/dev/null' ? undefined : require('MeshAgent')._wallpaper); + } catch (e) { + sendConsoleText(e); } - } catch (e) - { - sendConsoleText(e); + break; } - break; - } case 'openUrl': { // Open a local web browser and return success/fail - MeshServerLog('Opening: ' + data.url, data); - sendConsoleText('OpenURL: ' + data.url); - if (data.url) { mesh.SendCommand({ "action": "msg", "type": "openUrl", "url": data.url, "sessionid": data.sessionid, "success": (openUserDesktopUrl(data.url) != null) }); } + MeshServerLog("Opening: " + data.url, data); + sendConsoleText("OpenURL: " + data.url); + if (data.url) { mesh.SendCommand({ action: 'msg', type: 'openUrl', url: data.url, sessionid: data.sessionid, success: (openUserDesktopUrl(data.url) != null) }); } break; } case 'getclip': { @@ -768,15 +751,15 @@ function createMeshCore(agent) { if (require('MeshAgent').isService) { require('clipboard').dispatchRead().then(function (str) { if (str) { - MeshServerLog('Getting clipboard content, ' + str.length + ' byte(s)', data); - mesh.SendCommand({ "action": "msg", "type": "getclip", "sessionid": data.sessionid, "data": str }); + MeshServerLog("Getting clipboard content, " + str.length + " byte(s)", data); + mesh.SendCommand({ action: 'msg', type: 'getclip', sessionid: data.sessionid, data: str }); } }); } else { require("clipboard").read().then(function (str) { if (str) { - MeshServerLog('Getting clipboard content, ' + str.length + ' byte(s)', data); - mesh.SendCommand({ "action": "msg", "type": "getclip", "sessionid": data.sessionid, "data": str }); + MeshServerLog("Getting clipboard content, " + str.length + " byte(s)", data); + mesh.SendCommand({ action: 'msg', type: 'getclip', sessionid: data.sessionid, data: str }); } }); } @@ -786,9 +769,9 @@ function createMeshCore(agent) { // Set the load clipboard to a user value //sendConsoleText('setClip: ' + JSON.stringify(data)); if (typeof data.data == 'string') { - MeshServerLog('Setting clipboard content, ' + data.data.length + ' byte(s)', data); + MeshServerLog("Setting clipboard content, " + data.data.length + " byte(s)", data); if (require('MeshAgent').isService) { require('clipboard').dispatchWrite(data.data); } else { require("clipboard")(data.data); } // Set the clipboard - mesh.SendCommand({ "action": "msg", "type": "setclip", "sessionid": data.sessionid, "success": true }); + mesh.SendCommand({ action: 'msg', type: 'setclip', sessionid: data.sessionid, success: true }); } break; } @@ -798,7 +781,7 @@ function createMeshCore(agent) { if (process.platform != 'win32') break; var p = require('user-sessions').enumerateUsers(); p.sessionid = data.sessionid; - p.then(function (u) { mesh.SendCommand({ 'action': 'msg', 'type': 'userSessions', 'sessionid': u.sessionid, 'data': u }); }); + p.then(function (u) { mesh.SendCommand({ action: 'msg', type: 'userSessions', sessionid: u.sessionid, data: u }); }); break; } default: @@ -809,14 +792,14 @@ function createMeshCore(agent) { } case 'acmactivate': { if (amt != null) { - MeshServerLog('Attempting Intel AMT ACM mode activation', data); + MeshServerLog("Attempting Intel AMT ACM mode activation", data); amt.setAcmResponse(data); } break; } case 'wakeonlan': { // Send wake-on-lan on all interfaces for all MAC addresses in data.macs array. The array is a list of HEX MAC addresses. - sendConsoleText('Server requesting wake-on-lan for: ' + data.macs.join(', ')); + sendConsoleText("Server requesting wake-on-lan for: " + data.macs.join(', ')); for (var i in data.macs) { sendWakeOnLan(data.macs[i]); } break; } @@ -835,22 +818,22 @@ function createMeshCore(agent) { var forced = 0; if (data.forced == 1) { forced = 1; } data.actiontype = parseInt(data.actiontype); - MeshServerLog('Performing power action=' + data.actiontype + ', forced=' + forced, data); - sendConsoleText('Performing power action=' + data.actiontype + ', forced=' + forced + '.'); + MeshServerLog("Performing power action=" + data.actiontype + ", forced=" + forced, data); + sendConsoleText("Performing power action=" + data.actiontype + ", forced=" + forced + '.'); var r = mesh.ExecPowerState(data.actiontype, forced); - sendConsoleText('ExecPowerState returned code: ' + r); + sendConsoleText("ExecPowerState returned code: " + r); } break; } case 'iplocation': { // Update the IP location information of this node. Only do this when requested by the server since we have a limited amount of time we can call this per day - getIpLocationData(function (location) { mesh.SendCommand({ "action": "iplocation", "type": "publicip", "value": location }); }); + getIpLocationData(function (location) { mesh.SendCommand({ action: 'iplocation', type: 'publicip', value: location }); }); break; } case 'toast': { // Display a toast message if (data.title && data.msg) { - MeshServerLog('Displaying toast message, title=' + data.title + ', message=' + data.msg, data); + MeshServerLog("Displaying toast message, title=" + data.title + ", message=" + data.msg, data); data.msg = data.msg.split('\r').join('\\r').split('\n').join('\\n'); try { require('toaster').Toast(data.title, data.msg); } catch (ex) { } } @@ -859,8 +842,8 @@ function createMeshCore(agent) { case 'openUrl': { // Open a local web browser and return success/fail //sendConsoleText('OpenURL: ' + data.url); - MeshServerLog('Opening: ' + data.url, data); - if (data.url) { mesh.SendCommand({ "action": "openUrl", "url": data.url, "sessionid": data.sessionid, "success": (openUserDesktopUrl(data.url) != null) }); } + MeshServerLog("Opening: " + data.url, data); + if (data.url) { mesh.SendCommand({ action: 'openUrl', url: data.url, sessionid: data.sessionid, success: (openUserDesktopUrl(data.url) != null) }); } break; } case 'amtPolicy': { @@ -878,7 +861,7 @@ function createMeshCore(agent) { case 'sysinfo': { // Fetch system information getSystemInformation(function (results) { - if ((results != null) && (data.hash != results.hash)) { mesh.SendCommand({ "action": "sysinfo", "sessionid": this.sessionid, "data": results }); } + if ((results != null) && (data.hash != results.hash)) { mesh.SendCommand({ action: 'sysinfo', sessionid: this.sessionid, data: results }); } }); break; } @@ -1123,12 +1106,12 @@ function createMeshCore(agent) { // Disengage this tunnel, user does not have the rights to do this!! this.httprequest.protocol = 999999; this.httprequest.s.end(); - sendConsoleText('Error: No Terminal Control Rights.'); + sendConsoleText("Error: No Terminal Control Rights."); return; } this.end = function () { - if (process.platform == "win32") { + if (process.platform == 'win32') { // Unpipe the web socket this.unpipe(this.httprequest._term); if (this.httprequest._term) { this.httprequest._term.unpipe(this); } @@ -1148,60 +1131,48 @@ function createMeshCore(agent) { }; // Remote terminal using native pipes - if (process.platform == "win32") - { - try - { + if (process.platform == 'win32') { + try { if (!require('win-terminal').PowerShellCapable() && (this.httprequest.protocol == 6 || this.httprequest.protocol == 9)) { throw ('PowerShell is not supported on this version of windows'); } - if ((this.httprequest.protocol == 1) || (this.httprequest.protocol == 6)) - { + if ((this.httprequest.protocol == 1) || (this.httprequest.protocol == 6)) { // Admin Terminal - if (require('win-virtual-terminal').supported) - { + if (require('win-virtual-terminal').supported) { // ConPTY PseudoTerminal - this.httprequest._term = require('win-virtual-terminal')[this.httprequest.protocol == 6 ? 'StartPowerShell' : 'Start'](80, 25); + this.httprequest._term = require('win-virtual-terminal')[this.httprequest.protocol == 6 ? 'StartPowerShell' : 'Start'](80, 25); } - else - { + else { // Legacy Terminal this.httprequest._term = require('win-terminal')[this.httprequest.protocol == 6 ? 'StartPowerShell' : 'Start'](80, 25); } } - else - { + else { // Logged in user var userPromise = require('user-sessions').enumerateUsers(); userPromise.that = this; - userPromise.then(function (u) - { + userPromise.then(function (u) { var that = this.that; - if (u.Active.length > 0) - { + if (u.Active.length > 0) { var username = u.Active[0].Username; - if (require('win-virtual-terminal').supported) - { + if (require('win-virtual-terminal').supported) { // ConPTY PseudoTerminal that.httprequest._dispatcher = require('win-dispatcher').dispatch({ user: username, modules: [{ name: 'win-virtual-terminal', script: getJSModule('win-virtual-terminal') }], launch: { module: 'win-virtual-terminal', method: (that.httprequest.protocol == 9 ? 'StartPowerShell' : 'Start'), args: [80, 25] } }); } - else - { + else { // Legacy Terminal that.httprequest._dispatcher = require('win-dispatcher').dispatch({ user: username, modules: [{ name: 'win-terminal', script: getJSModule('win-terminal') }], launch: { module: 'win-terminal', method: (that.httprequest.protocol == 9 ? 'StartPowerShell' : 'Start'), args: [80, 25] } }); } that.httprequest._dispatcher.ws = that; - that.httprequest._dispatcher.on('connection', function (c) - { + that.httprequest._dispatcher.on('connection', function (c) { console.log('client connected'); this.ws._term = c; c.pipe(this.ws, { dataTypeSkip: 1 }); this.ws.pipe(c, { dataTypeSkip: 1, end: false }); - this.ws.prependListener('end', function () - { + this.ws.prependListener('end', function () { if (this.httprequest._term) { this.httprequest._term.end(function () { console.log("Terminal was closed"); }); } }); }); } - }); + }); } } catch (e) { MeshServerLog('Failed to start remote terminal session, ' + e.toString() + ' (' + this.httprequest.remoteaddr + ')', this.httprequest); @@ -1209,30 +1180,27 @@ function createMeshCore(agent) { this.end(); return; } - if (!this.httprequest._dispatcher) - { + if (!this.httprequest._dispatcher) { this.httprequest._term.pipe(this, { dataTypeSkip: 1 }); this.pipe(this.httprequest._term, { dataTypeSkip: 1, end: false }); this.prependListener('end', function () { this.httprequest._term.end(function () { console.log("Terminal was closed"); }); }); } } - else - { - try - { + else { + try { var bash = fs.existsSync('/bin/bash') ? '/bin/bash' : false; var sh = fs.existsSync('/bin/sh') ? '/bin/sh' : false; var script = fs.existsSync('/usr/bin/script') ? '/usr/bin/script' : false; var python = fs.existsSync('/usr/bin/python') ? '/usr/bin/python' : false; var shell = bash || sh; - var options = { uid: (this.httprequest.protocol == 8) ? require('user-sessions').consoleUid() : null, env: { HISTCONTROL: "ignoreboth", TERM: "xterm" } }; - var setupcommands = " alias ls='ls --color=auto'\n"; - if (shell == sh) setupcommands += "stty erase ^H\n" + var options = { uid: (this.httprequest.protocol == 8) ? require('user-sessions').consoleUid() : null, env: { HISTCONTROL: 'ignoreboth', TERM: 'xterm' } }; + var setupcommands = ' alias ls=\'ls --color=auto\'\n'; + if (shell == sh) setupcommands += 'stty erase ^H\n' if (script && shell && process.platform == 'linux') { this.httprequest.process = childProcess.execFile(script, ['script', '--return', '--quiet', '-c', '"' + shell + '"', '/dev/null'], options); // Start as active user - this.httprequest.process.stdin.write(setupcommands); + this.httprequest.process.stdin.write(setupcommands); } else if (python && shell) { this.httprequest.process = childProcess.execFile(python, ['python', '-c', 'import pty; pty.spawn(["' + shell + '"])'], options); // Start as active user if (process.platform == 'linux') { this.httprequest.process.stdin.write(setupcommands); } @@ -1266,25 +1234,25 @@ function createMeshCore(agent) { if (this.httprequest.consent && (this.httprequest.consent & 16)) { // User Consent Prompt is required // Send a console message back using the console channel, "\n" is supported. - this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: 'Waiting for user to grant access...' })); - var pr = require('message-box').create('MeshCentral', this.httprequest.username + ' requesting Terminal Access. Grant access?', 30); + this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: "Waiting for user to grant access..." })); + var pr = require('message-box').create('MeshCentral', this.httprequest.username + " requesting Terminal Access. Grant access?", 30); pr.ws = this; this.pause(); pr.then( function () { // Success - MeshServerLog('Starting remote terminal after local user accepted (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Starting remote terminal after local user accepted (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: null })); if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 2)) { // User Notifications is required - try { require('toaster').Toast('MeshCentral', this.ws.httprequest.username + ' started a remote terminal session.'); } catch (ex) { } + try { require('toaster').Toast('MeshCentral', this.ws.httprequest.username + " started a remote terminal session."); } catch (ex) { } } this.ws.resume(); }, function (e) { // User Consent Denied/Failed - MeshServerLog('Failed to start remote terminal after local user rejected (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Failed to start remote terminal after local user rejected (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: e.toString() })); this.ws.end(); }); @@ -1309,7 +1277,7 @@ function createMeshCore(agent) { // Disengage this tunnel, user does not have the rights to do this!! this.httprequest.protocol = 999999; this.httprequest.s.end(); - sendConsoleText('Error: No Desktop Control Rights.'); + sendConsoleText("Error: No Desktop Control Rights."); return; } @@ -1323,8 +1291,7 @@ function createMeshCore(agent) { this.httprequest.desktop.kvm.parent = this.httprequest.desktop; this.desktop = this.httprequest.desktop; - this.end = function () - { + this.end = function () { --this.desktop.kvm.connectionCount; // Unpipe the web socket @@ -1340,35 +1307,28 @@ function createMeshCore(agent) { // Place wallpaper back if needed // TODO - if (this.desktop.kvm.connectionCount == 0) - { + if (this.desktop.kvm.connectionCount == 0) { // Display a toast message. This may not be supported on all platforms. // try { require('toaster').Toast('MeshCentral', 'Remote Desktop Control Ended.'); } catch (ex) { } this.httprequest.desktop.kvm.end(); - if(this.httprequest.desktop.kvm.connectionBar) - { + if (this.httprequest.desktop.kvm.connectionBar) { this.httprequest.desktop.kvm.connectionBar.removeAllListeners('close'); this.httprequest.desktop.kvm.connectionBar.close(); this.httprequest.desktop.kvm.connectionBar = null; } } - else - { - for(var i in this.httprequest.desktop.kvm.users) - { - if (this.httprequest.desktop.kvm.users[i] == this.httprequest.username && this.httprequest.desktop.kvm.connectionBar) - { + else { + for (var i in this.httprequest.desktop.kvm.users) { + if (this.httprequest.desktop.kvm.users[i] == this.httprequest.username && this.httprequest.desktop.kvm.connectionBar) { this.httprequest.desktop.kvm.users.splice(i, 1); this.httprequest.desktop.kvm.connectionBar.removeAllListeners('close'); this.httprequest.desktop.kvm.connectionBar.close(); this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')(this.httprequest.privacybartext.replace('{0}', this.httprequest.desktop.kvm.users.sort().join(', ')), require('MeshAgent')._tsid); this.httprequest.desktop.kvm.connectionBar.httprequest = this.httprequest; - this.httprequest.desktop.kvm.connectionBar.on('close', function () - { - MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest); - for (var i in this.httprequest.desktop.kvm._pipedStreams) - { + this.httprequest.desktop.kvm.connectionBar.on('close', function () { + MeshServerLog("Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest); + for (var i in this.httprequest.desktop.kvm._pipedStreams) { this.httprequest.desktop.kvm._pipedStreams[i].end(); } this.httprequest.desktop.kvm.end(); @@ -1378,13 +1338,11 @@ function createMeshCore(agent) { } } }; - if (this.httprequest.desktop.kvm.hasOwnProperty("connectionCount")) - { + if (this.httprequest.desktop.kvm.hasOwnProperty('connectionCount')) { this.httprequest.desktop.kvm.connectionCount++; this.httprequest.desktop.kvm.users.push(this.httprequest.username); } - else - { + else { this.httprequest.desktop.kvm.connectionCount = 1; this.httprequest.desktop.kvm.users = [this.httprequest.username]; } @@ -1402,49 +1360,40 @@ function createMeshCore(agent) { if (this.httprequest.consent && (this.httprequest.consent & 8)) { // User Consent Prompt is required // Send a console message back using the console channel, "\n" is supported. - this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: 'Waiting for user to grant access...' })); - var pr = require('message-box').create('MeshCentral', this.httprequest.username + ' requesting KVM Access. Grant access?', 30); + this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: "Waiting for user to grant access..." })); + var pr = require('message-box').create('MeshCentral', this.httprequest.username + " requesting KVM Access. Grant access?", 30); pr.ws = this; this.pause(); pr.then( function () { // Success - MeshServerLog('Starting remote desktop after local user accepted (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Starting remote desktop after local user accepted (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: null })); - if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 1)) - { + if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 1)) { // User Notifications is required - try { require('toaster').Toast('MeshCentral', this.ws.httprequest.username + ' started a remote desktop session.'); } catch (ex) { } + try { require('toaster').Toast('MeshCentral', this.ws.httprequest.username + " started a remote desktop session."); } catch (ex) { } } - if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 0x40)) - { + if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 0x40)) { // Connection Bar is required - if (this.ws.httprequest.desktop.kvm.connectionBar) - { + if (this.ws.httprequest.desktop.kvm.connectionBar) { this.ws.httprequest.desktop.kvm.connectionBar.removeAllListeners('close'); this.ws.httprequest.desktop.kvm.connectionBar.close(); } - try - { + try { this.ws.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')(this.ws.httprequest.privacybartext.replace('{0}', this.ws.httprequest.desktop.kvm.users.sort().join(', ')), require('MeshAgent')._tsid); - MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Remote Desktop Connection Bar Activated/Updated (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); } - catch(xx) - { - if(process.platform != 'darwin') - { - MeshServerLog('Remote Desktop Connection Bar Failed or Not Supported (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + catch (xx) { + if (process.platform != 'darwin') { + MeshServerLog("Remote Desktop Connection Bar Failed or Not Supported (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); } } - if (this.ws.httprequest.desktop.kvm.connectionBar) - { + if (this.ws.httprequest.desktop.kvm.connectionBar) { this.ws.httprequest.desktop.kvm.connectionBar.httprequest = this.ws.httprequest; - this.ws.httprequest.desktop.kvm.connectionBar.on('close', function () - { - MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest); - for (var i in this.httprequest.desktop.kvm._pipedStreams) - { + this.ws.httprequest.desktop.kvm.connectionBar.on('close', function () { + MeshServerLog("Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest); + for (var i in this.httprequest.desktop.kvm._pipedStreams) { this.httprequest.desktop.kvm._pipedStreams[i].end(); } this.httprequest.desktop.kvm.end(); @@ -1456,46 +1405,37 @@ function createMeshCore(agent) { }, function (e) { // User Consent Denied/Failed - MeshServerLog('Failed to start remote desktop after local user rejected (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Failed to start remote desktop after local user rejected (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.end(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: e.toString() })); }); } else { // User Consent Prompt is not required - if (this.httprequest.consent && (this.httprequest.consent & 1)) - { + if (this.httprequest.consent && (this.httprequest.consent & 1)) { // User Notifications is required - MeshServerLog('Started remote desktop with toast notification (' + this.httprequest.remoteaddr + ')', this.httprequest); - try { require('toaster').Toast('MeshCentral', this.httprequest.username + ' started a remote desktop session.'); } catch (ex) { } - } else - { - MeshServerLog('Started remote desktop without notification (' + this.httprequest.remoteaddr + ')', this.httprequest); + MeshServerLog("Started remote desktop with toast notification (" + this.httprequest.remoteaddr + ")", this.httprequest); + try { require('toaster').Toast('MeshCentral', this.httprequest.username + " started a remote desktop session."); } catch (ex) { } + } else { + MeshServerLog("Started remote desktop without notification (" + this.httprequest.remoteaddr + ")", this.httprequest); } - if (this.httprequest.consent && (this.httprequest.consent & 0x40)) - { + if (this.httprequest.consent && (this.httprequest.consent & 0x40)) { // Connection Bar is required - if(this.httprequest.desktop.kvm.connectionBar) - { + if (this.httprequest.desktop.kvm.connectionBar) { this.httprequest.desktop.kvm.connectionBar.removeAllListeners('close'); this.httprequest.desktop.kvm.connectionBar.close(); } - try - { + try { this.httprequest.desktop.kvm.connectionBar = require('notifybar-desktop')(this.httprequest.privacybartext.replace('{0}', this.httprequest.desktop.kvm.users.sort().join(', ')), require('MeshAgent')._tsid); - MeshServerLog('Remote Desktop Connection Bar Activated/Updated (' + this.httprequest.remoteaddr + ')', this.httprequest); + MeshServerLog("Remote Desktop Connection Bar Activated/Updated (" + this.httprequest.remoteaddr + ")", this.httprequest); } - catch(xx) - { - MeshServerLog('Remote Desktop Connection Bar Failed or not Supported (' + this.httprequest.remoteaddr + ')', this.httprequest); + catch (xx) { + MeshServerLog("Remote Desktop Connection Bar Failed or not Supported (" + this.httprequest.remoteaddr + ")", this.httprequest); } - if (this.httprequest.desktop.kvm.connectionBar) - { + if (this.httprequest.desktop.kvm.connectionBar) { this.httprequest.desktop.kvm.connectionBar.httprequest = this.httprequest; - this.httprequest.desktop.kvm.connectionBar.on('close', function () - { - MeshServerLog('Remote Desktop Connection forcefully closed by local user (' + this.httprequest.remoteaddr + ')', this.httprequest); - for (var i in this.httprequest.desktop.kvm._pipedStreams) - { + this.httprequest.desktop.kvm.connectionBar.on('close', function () { + MeshServerLog("Remote Desktop Connection forcefully closed by local user (" + this.httprequest.remoteaddr + ")", this.httprequest); + for (var i in this.httprequest.desktop.kvm._pipedStreams) { this.httprequest.desktop.kvm._pipedStreams[i].end(); } this.httprequest.desktop.kvm.end(); @@ -1516,7 +1456,7 @@ function createMeshCore(agent) { // Disengage this tunnel, user does not have the rights to do this!! this.httprequest.protocol = 999999; this.httprequest.s.end(); - sendConsoleText('Error: No files control rights.'); + sendConsoleText("Error: No files control rights."); return; } @@ -1524,35 +1464,35 @@ function createMeshCore(agent) { if (this.httprequest.consent && (this.httprequest.consent & 32)) { // User Consent Prompt is required // Send a console message back using the console channel, "\n" is supported. - this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: 'Waiting for user to grant access...' })); - var pr = require('message-box').create('MeshCentral', this.httprequest.username + ' requesting remote file access. Grant access?', 30); + this.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: "Waiting for user to grant access..." })); + var pr = require('message-box').create('MeshCentral', this.httprequest.username + " requesting remote file access. Grant access?", 30); pr.ws = this; this.pause(); pr.then( function () { // Success - MeshServerLog('Starting remote files after local user accepted (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Starting remote files after local user accepted (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.write(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: null })); if (this.ws.httprequest.consent && (this.ws.httprequest.consent & 4)) { // User Notifications is required - try { require('toaster').Toast('MeshCentral', this.ws.httprequest.username + ' started a remote file session.'); } catch (ex) { } + try { require('toaster').Toast('MeshCentral', this.ws.httprequest.username + " started a remote file session."); } catch (ex) { } } this.ws.resume(); }, function (e) { // User Consent Denied/Failed - MeshServerLog('Failed to start remote files after local user rejected (' + this.ws.httprequest.remoteaddr + ')', this.ws.httprequest); + MeshServerLog("Failed to start remote files after local user rejected (" + this.ws.httprequest.remoteaddr + ")", this.ws.httprequest); this.ws.end(JSON.stringify({ ctrlChannel: '102938', type: 'console', msg: e.toString() })); }); } else { // User Consent Prompt is not required if (this.httprequest.consent && (this.httprequest.consent & 4)) { // User Notifications is required - MeshServerLog('Started remote files with toast notification (' + this.httprequest.remoteaddr + ')', this.httprequest); - try { require('toaster').Toast('MeshCentral', this.httprequest.username + ' started a remote file session.'); } catch (ex) { } + MeshServerLog("Started remote files with toast notification (" + this.httprequest.remoteaddr + ")", this.httprequest); + try { require('toaster').Toast('MeshCentral', this.httprequest.username + " started a remote file session."); } catch (ex) { } } else { - MeshServerLog('Started remote files without notification (' + this.httprequest.remoteaddr + ')', this.httprequest); + MeshServerLog("Started remote files without notification (" + this.httprequest.remoteaddr + ")", this.httprequest); } this.resume(); } @@ -1614,7 +1554,7 @@ function createMeshCore(agent) { case 'mkdir': { // Create a new empty folder fs.mkdirSync(cmd.path); - MeshServerLog('Create folder: \"' + cmd.path + '\"', this.httprequest); + MeshServerLog("Create folder: \"" + cmd.path + "\"", this.httprequest); break; } case 'rm': { @@ -1623,9 +1563,9 @@ function createMeshCore(agent) { var p = obj.path.join(cmd.path, cmd.delfiles[i]), delcount = 0; try { delcount = deleteFolderRecursive(p, cmd.rec); } catch (e) { } if ((delcount == 1) && !cmd.rec) { - MeshServerLog('Delete: \"' + p + '\"', this.httprequest); + MeshServerLog("Delete: \"" + p + "\"", this.httprequest); } else { - MeshServerLog((cmd.rec ? 'Delete recursive: \"' : 'Delete: \"') + p + '\", ' + delcount + ' element(s) removed', this.httprequest); + MeshServerLog((cmd.rec ? "Delete recursive: \"" : "Delete: \"") + p + "\", " + delcount + " element(s) removed", this.httprequest); } } break; @@ -1786,7 +1726,7 @@ function createMeshCore(agent) { // Lock the current user out of the desktop try { if (process.platform == 'win32') { - MeshServerLog('Locking remote user out of desktop', ws.httprequest); + MeshServerLog("Locking remote user out of desktop", ws.httprequest); var child = require('child_process'); child.execFile(process.env['windir'] + '\\system32\\cmd.exe', ['/c', 'RunDll32.exe user32.dll,LockWorkStation'], { type: 1 }); } @@ -1847,7 +1787,7 @@ function createMeshCore(agent) { try { ws.webrtc.rtcchannel.pipe(ws.httprequest.desktop.kvm, { dataTypeSkip: 1, end: false }); } catch (e) { sendConsoleText('EX2'); } // 0 = Binary, 1 = Text. ws.resume(); // Resume the websocket to keep receiving control data } - ws.write("{\"ctrlChannel\":\"102938\",\"type\":\"webrtc2\"}"); // Indicates we will no longer get any data on websocket, switching to WebRTC at this point. + ws.write('{\"ctrlChannel\":\"102938\",\"type\":\"webrtc2\"}'); // Indicates we will no longer get any data on websocket, switching to WebRTC at this point. } else if (obj.type == 'webrtc2') { // Other side received websocket end of data marker, start sending data on WebRTC channel if ((ws.httprequest.protocol == 1) || (ws.httprequest.protocol == 6)) { // Terminal @@ -1883,7 +1823,7 @@ function createMeshCore(agent) { this.websocket.httprequest.desktop.kvm.unpipe(this); } }); - this.websocket.write("{\"ctrlChannel\":\"102938\",\"type\":\"webrtc0\"}"); // Indicate we are ready for WebRTC switch-over. + this.websocket.write('{\"ctrlChannel\":\"102938\",\"type\":\"webrtc0\"}'); // Indicate we are ready for WebRTC switch-over. }); var sdp = null; try { sdp = ws.webrtc.setOffer(obj.sdp); } catch (ex) { } @@ -1945,174 +1885,102 @@ function createMeshCore(agent) { f += (((f != '') ? ', ' : ' ') + availcommands.shift()); } if (f != '') { fin += f; } - response = 'Available commands: \r\n' + fin + '.'; + response = "Available commands: \r\n" + fin + "."; break; } case 'agentsize': var actualSize = Math.floor(require('fs').statSync(process.execPath).size / 1024); - if (process.platform == 'win32') - { + if (process.platform == 'win32') { // Check the Agent Uninstall MetaData for correctness, as the installer may have written an incorrect value - var writtenSize = 0; - try - { - writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize'); - } - catch (x) - { - response = x; - } - if (writtenSize != actualSize) - { - response = 'Size updated from: ' + writtenSize + ' to: ' + actualSize; - try - { - require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize', actualSize); - } - catch (x2) - { - response = x2; - } - } - else - { - response = 'Agent Size: ' + actualSize + ' kb'; - } - } - else - { - response = 'Agent Size: ' + actualSize + ' kb'; - } + var writtenSize = 0; + try { writtenSize = require('win-registry').QueryKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize'); } catch (x) { response = x; } + if (writtenSize != actualSize) { + response = "Size updated from: " + writtenSize + " to: " + actualSize; + try { require('win-registry').WriteKey(require('win-registry').HKEY.LocalMachine, 'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\MeshCentralAgent', 'EstimatedSize', actualSize); } catch (x2) { response = x2; } + } else { response = "Agent Size: " + actualSize + " kb"; } + } else { response = "Agent Size: " + actualSize + " kb"; } break; case 'version': - response = 'Mesh Agent Version: ' + process.versions.meshAgent; + response = "Mesh Agent Version: " + process.versions.meshAgent; break; case 'wpfhwacceleration': - if (process.platform != 'win32') { throw ('wpfhwacceleration setting is only supported on Windows'); } - if (args['_'].length != 1) - { - response = 'Proper usage: wpfhwacceleration (ON|OFF|STATUS)'; // Display usage + if (process.platform != 'win32') { throw ("wpfhwacceleration setting is only supported on Windows"); } + if (args['_'].length != 1) { + response = "Proper usage: wpfhwacceleration (ON|OFF|STATUS)"; // Display usage } - else - { + else { var reg = require('win-registry'); var uname = require('user-sessions').getUsername(require('user-sessions').consoleUid()); var key = reg.usernameToUserKey(uname); - switch(args['_'][0].toUpperCase()) - { + switch (args['_'][0].toUpperCase()) { default: - response = 'Proper usage: wpfhwacceleration (ON|OFF|STATUS|DEFAULT)'; // Display usage + response = "Proper usage: wpfhwacceleration (ON|OFF|STATUS|DEFAULT)"; // Display usage break; case 'ON': - try - { + try { reg.WriteKey(reg.HKEY.Users, key + '\\SOFTWARE\\Microsoft\\Avalon.Graphics', 'DisableHWAcceleration', 0); - response = 'OK'; - } - catch (ee) - { - response = 'FAILED'; - } + response = "OK"; + } catch (ex) { response = "FAILED"; } break; case 'OFF': - try - { + try { reg.WriteKey(reg.HKEY.Users, key + '\\SOFTWARE\\Microsoft\\Avalon.Graphics', 'DisableHWAcceleration', 1); response = 'OK'; - } - catch (ee) - { - response = 'FAILED'; - } - break; + } catch (ex) { response = 'FAILED'; } break; case 'STATUS': var s; - try - { - s = reg.QueryKey(reg.HKEY.Users, key + '\\SOFTWARE\\Microsoft\\Avalon.Graphics', 'DisableHWAcceleration')==1?'DISABLED':'ENABLED'; - } - catch (ee) - { - s = 'DEFAULT'; - } - response = 'WPF Hardware Acceleration: ' + s; + try { s = reg.QueryKey(reg.HKEY.Users, key + '\\SOFTWARE\\Microsoft\\Avalon.Graphics', 'DisableHWAcceleration') == 1 ? 'DISABLED' : 'ENABLED'; } catch (ex) { s = 'DEFAULT'; } + response = "WPF Hardware Acceleration: " + s; break; case 'DEFAULT': - try - { - reg.DeleteKey(reg.HKEY.Users, key + '\\SOFTWARE\\Microsoft\\Avalon.Graphics', 'DisableHWAcceleration'); - } - catch (ee) - { - } + try { reg.DeleteKey(reg.HKEY.Users, key + '\\SOFTWARE\\Microsoft\\Avalon.Graphics', 'DisableHWAcceleration'); } catch (ex) { } response = 'OK'; break; } } break; case 'tsid': - if (process.platform == 'win32') - { - if (args['_'].length != 1) - { - response = 'TSID: ' + (require('MeshAgent')._tsid == null ? 'console' : require('MeshAgent')._tsid); - } - else - { + if (process.platform == 'win32') { + if (args['_'].length != 1) { + response = "TSID: " + (require('MeshAgent')._tsid == null ? "console" : require('MeshAgent')._tsid); + } else { var i = parseInt(args['_'][0]); require('MeshAgent')._tsid = (isNaN(i) ? null : i); - response = 'TSID set to: ' + (require('MeshAgent')._tsid == null ? 'console' : require('MeshAgent')._tsid); + response = "TSID set to: " + (require('MeshAgent')._tsid == null ? "console" : require('MeshAgent')._tsid); } - } - else - { - response = 'TSID command only supported on Windows'; - } + } else { response = "TSID command only supported on Windows"; } break; case 'activeusers': - if (process.platform == 'win32') - { + if (process.platform == 'win32') { var p = require('user-sessions').enumerateUsers(); p.sessionid = sessionid; - p.then(function (u) - { + p.then(function (u) { var v = []; - for(var i in u) - { - if(u[i].State == 'Active') { v.push({ tsid: i, type: u[i].StationName, user: u[i].Username, domain: u[i].Domain }); } + for (var i in u) { + if (u[i].State == 'Active') { v.push({ tsid: i, type: u[i].StationName, user: u[i].Username, domain: u[i].Domain }); } } sendConsoleText(JSON.stringify(v, null, 1), this.sessionid); }); - } - else - { - response = 'activeusers command only supported on Windows'; - } + } else { response = "activeusers command only supported on Windows"; } break; case 'wallpaper': - if (process.platform != 'win32' && !(process.platform == 'linux' && require('linux-gnome-helpers').available)) - { - response = 'wallpaper command not supported on this platform' + if (process.platform != 'win32' && !(process.platform == 'linux' && require('linux-gnome-helpers').available)) { + response = "wallpaper command not supported on this platform"; } - else - { - if (args['_'].length != 1) - { + else { + if (args['_'].length != 1) { response = 'Proper usage: wallpaper (GET|TOGGLE)'; // Display usage } - else - { - switch (args['_'][0].toUpperCase()) - { + else { + switch (args['_'][0].toUpperCase()) { default: response = 'Proper usage: wallpaper (GET|TOGGLE)'; // Display usage break; case 'GET': case 'TOGGLE': - if (process.platform == 'win32') - { + if (process.platform == 'win32') { var id = require('user-sessions').getProcessOwnerName(process.pid).tsid == 0 ? 1 : 0; var child = require('child_process').execFile(process.execPath, [process.execPath.split('\\').pop(), '-b64exec', 'dmFyIFNQSV9HRVRERVNLV0FMTFBBUEVSID0gMHgwMDczOwp2YXIgU1BJX1NFVERFU0tXQUxMUEFQRVIgPSAweDAwMTQ7CnZhciBHTSA9IHJlcXVpcmUoJ19HZW5lcmljTWFyc2hhbCcpOwp2YXIgdXNlcjMyID0gR00uQ3JlYXRlTmF0aXZlUHJveHkoJ3VzZXIzMi5kbGwnKTsKdXNlcjMyLkNyZWF0ZU1ldGhvZCgnU3lzdGVtUGFyYW1ldGVyc0luZm9BJyk7CgppZiAocHJvY2Vzcy5hcmd2Lmxlbmd0aCA9PSAzKQp7CiAgICB2YXIgdiA9IEdNLkNyZWF0ZVZhcmlhYmxlKDEwMjQpOwogICAgdXNlcjMyLlN5c3RlbVBhcmFtZXRlcnNJbmZvQShTUElfR0VUREVTS1dBTExQQVBFUiwgdi5fc2l6ZSwgdiwgMCk7CiAgICBjb25zb2xlLmxvZyh2LlN0cmluZyk7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQplbHNlCnsKICAgIHZhciBuYiA9IEdNLkNyZWF0ZVZhcmlhYmxlKHByb2Nlc3MuYXJndlszXSk7CiAgICB1c2VyMzIuU3lzdGVtUGFyYW1ldGVyc0luZm9BKFNQSV9TRVRERVNLV0FMTFBBUEVSLCBuYi5fc2l6ZSwgbmIsIDApOwogICAgcHJvY2Vzcy5leGl0KCk7Cn0='], { type: id }); child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); }); @@ -2134,8 +2002,7 @@ function createMeshCore(agent) { child.stderr.on('data', function () { }); child.waitExit(); } - else - { + else { var id = require('user-sessions').consoleUid(); var current = require('linux-gnome-helpers').getDesktopWallpaper(id); if (args['_'][0].toUpperCase() == 'GET') { @@ -2156,20 +2023,15 @@ function createMeshCore(agent) { } break; case 'safemode': - if (process.platform != 'win32') - { + if (process.platform != 'win32') { response = 'safemode only supported on Windows Platforms' } - else - { - if (args['_'].length != 1) - { + else { + if (args['_'].length != 1) { response = 'Proper usage: safemode (ON|OFF|STATUS)'; // Display usage - } - else - { - switch(args['_'][0].toUpperCase()) - { + } + else { + switch (args['_'][0].toUpperCase()) { default: response = 'Proper usage: safemode (ON|OFF|STATUS)'; // Display usage break; @@ -2182,10 +2044,8 @@ function createMeshCore(agent) { break; case 'STATUS': var nextboot = require('win-bcd').getKey('safeboot'); - if (nextboot) - { - switch(nextboot) - { + if (nextboot) { + switch (nextboot) { case 'Network': case 'network': nextboot = 'SAFE_MODE_NETWORK'; @@ -2297,14 +2157,11 @@ function createMeshCore(agent) { break; } case 'toast': { - if (args['_'].length < 1) { response = 'Proper usage: toast "message"'; } else - { - if (require('MeshAgent')._tsid == null) - { + if (args['_'].length < 1) { response = 'Proper usage: toast "message"'; } else { + if (require('MeshAgent')._tsid == null) { require('toaster').Toast('MeshCentral', args['_'][0]).then(sendConsoleText, sendConsoleText); } - else - { + else { require('toaster').Toast('MeshCentral', args['_'][0], require('MeshAgent')._tsid).then(sendConsoleText, sendConsoleText); } } @@ -2401,10 +2258,10 @@ function createMeshCore(agent) { if (args['_'].length != 1) { response = 'Proper usage: notify "message" [--session]'; // Display correct command usage } else { - var notification = { "action": "msg", "type": "notify", "value": args['_'][0], "tag": "console" }; + var notification = { action: 'msg', type: 'notify', value: args['_'][0], tag: 'console' }; if (args.session) { notification.sessionid = sessionid; } // If "--session" is specified, notify only this session, if not, the server will notify the mesh mesh.SendCommand(notification); // no sessionid or userid specified, notification will go to the entire mesh - response = 'ok'; + response = "ok"; } break; } @@ -2442,13 +2299,11 @@ function createMeshCore(agent) { case 'osinfo': { // Return the operating system information var i = 1; if (args['_'].length > 0) { i = parseInt(args['_'][0]); if (i > 8) { i = 8; } response = 'Calling ' + i + ' times.'; } - for (var j = 0; j < i; j++) - { + for (var j = 0; j < i; j++) { var pr = require('os').name(); pr.sessionid = sessionid; - pr.then(function (v) - { - sendConsoleText("OS: " + v + (process.platform=='win32'?(require('win-virtual-terminal').supported?' [ConPTY: YES]':' [ConPTY: NO]'):''), this.sessionid); + pr.then(function (v) { + sendConsoleText("OS: " + v + (process.platform == 'win32' ? (require('win-virtual-terminal').supported ? ' [ConPTY: YES]' : ' [ConPTY: NO]') : ''), this.sessionid); }); } break; @@ -2702,7 +2557,7 @@ function createMeshCore(agent) { } case 'location': { getIpLocationData(function (location) { - sendConsoleText(objToString({ "action": "iplocation", "type": "publicip", "value": location }, 0, ' ')); + sendConsoleText(objToString({ action: 'iplocation', type: 'publicip', value: location }, 0, ' ')); }); break; } @@ -2754,9 +2609,9 @@ function createMeshCore(agent) { } case 'getscript': { if (args['_'].length != 1) { - response = 'Proper usage: getscript [scriptNumber].'; + response = "Proper usage: getscript [scriptNumber]."; } else { - mesh.SendCommand({ "action": "getScript", "type": args['_'][0] }); + mesh.SendCommand({ action: 'getScript', type: args['_'][0] }); } break; } @@ -2797,7 +2652,7 @@ function createMeshCore(agent) { if (meshCoreObj.intelamt !== null) { if (args['_'].length == 1) { if (args['_'][0] == 'on') { - response = 'Starting APF tunnel' + response = "Starting APF tunnel"; var apfarg = { mpsurl: mesh.ServerUrl.replace('agent.ashx', 'apf.ashx'), mpsuser: Buffer.from(mesh.ServerInfo.MeshID, 'hex').toString('base64').substring(0, 16), @@ -2816,7 +2671,7 @@ function createMeshCore(agent) { response += JSON.stringify(e); } } else if (args['_'][0] == 'off') { - response = 'Stopping APF tunnel'; + response = "Stopping APF tunnel"; try { apftunnel.disconnect(); response += "..success"; @@ -2825,14 +2680,13 @@ function createMeshCore(agent) { } apftunnel = null; } else { - response = 'Invalid command.\r\nCmd syntax: apf on|off'; + response = "Invalid command.\r\nCmd syntax: apf on|off"; } } else { - response = 'APF tunnel is ' + (apftunnel == null ? 'off' : 'on'); + response = "APF tunnel is " + (apftunnel == null ? "off" : "on"); } - } else { - response = 'APF tunnel requires Intel AMT'; + response = "APF tunnel requires Intel AMT"; } break; } @@ -2844,26 +2698,26 @@ function createMeshCore(agent) { // to control the output / actions here. response = require(args['_'][0]).consoleaction(args, rights, sessionid, mesh); } catch (e) { - response = 'There was an error in the plugin (' + e + ')'; + response = "There was an error in the plugin (" + e + ")"; } } else { - response = 'Proper usage: plugin [pluginName] [args].'; + response = "Proper usage: plugin [pluginName] [args]."; } break; } default: { // This is an unknown command, return an error message - response = 'Unknown command \"' + cmd + '\", type \"help\" for list of avaialble commands.'; + response = "Unknown command \"" + cmd + "\", type \"help\" for list of avaialble commands."; break; } } - } catch (e) { response = 'Command returned an exception error: ' + e; console.log(e); } + } catch (e) { response = "Command returned an exception error: " + e; console.log(e); } if (response != null) { sendConsoleText(response, sessionid); } } // Send a mesh agent console command function sendConsoleText(text, sessionid) { if (typeof text == 'object') { text = JSON.stringify(text); } - mesh.SendCommand({ "action": "msg", "type": "console", "value": text, "sessionid": sessionid }); + mesh.SendCommand({ action: 'msg', type: 'console', value: text, sessionid: sessionid }); } // Called before the process exits @@ -2885,7 +2739,7 @@ function createMeshCore(agent) { mesh.SendCommand(meshCoreObj); // Send SMBios tables if present - if (SMBiosTablesRaw != null) { mesh.SendCommand({ "action": "smbios", "value": SMBiosTablesRaw }); } + if (SMBiosTablesRaw != null) { mesh.SendCommand({ action: 'smbios', value: SMBiosTablesRaw }); } // Update the server on more advanced stuff, like Intel ME and Network Settings meInfoStr = null; @@ -3035,5 +2889,5 @@ try { mainMeshCore.start(null); } } catch (ex) { - require('MeshAgent').SendCommand({ "action": "msg", "type": "console", "value": "uncaughtException2: " + ex }); + require('MeshAgent').SendCommand({ action: 'msg', type: 'console', value: "uncaughtException2: " + ex }); } diff --git a/translate/translate-010720-Russian.json b/translate/translate-010720-Russian.json new file mode 100644 index 0000000000000000000000000000000000000000..139e29d24ae51e483d5a21263db3528dfd840675 GIT binary patch literal 333316 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%0A0Frf~NsUMho;zX%NwH0F! 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 O0@4qTeSvSOZb#-do~!k-azd> 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 E0M0*=MF0Q* literal 0 HcmV?d00001