Latest signed MeshAgent & MeshCmd

Ylian Saint-Hilaire committed Mar 21, 2018 at 15:39 UTC 7f6945c172bf35aba5169921c83304890fa92083
10 files changed +55 -6
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
agents/MeshService-signed.exe
Binary files a/agents/MeshService-signed.exe and b/agents/MeshService-signed.exe differ
agents/MeshService.exe
Binary files a/agents/MeshService.exe and b/agents/MeshService.exe differ
agents/MeshService64-signed.exe
Binary files a/agents/MeshService64-signed.exe and b/agents/MeshService64-signed.exe differ
agents/MeshService64.exe
Binary files a/agents/MeshService64.exe and b/agents/MeshService64.exe differ
agents/meshcmd.js
+12 -3
@@ -330,6 +330,8 @@ function run(argv) {
330 amtMei.getEHBCState(function (result) { mestate.ehbc = result; });
331 amtMei.getControlMode(function (result) { mestate.controlmode = result; });
332 amtMei.getMACAddresses(function (result) { mestate.mac = result; });
333 + amtMei.getLanInterfaceSettings(0, function (result) { mestate.net0 = result; });
334 + amtMei.getLanInterfaceSettings(1, function (result) { mestate.net1 = result; });
335 amtMei.getDnsSuffix(function (result) {
336 mestate.dns = result;
337 var str = 'Intel AMT v' + mestate.ver;
@@ -337,6 +339,9 @@ function run(argv) {
339 else if (mestate.ProvisioningState.stateStr == 'IN') { str += ', in-provisioning state'; }
340 else if (mestate.ProvisioningState.stateStr == 'POST') { if (mestate.ProvisioningMode.modeStr == 'ENTERPRISE') { str += ', activated in ' + ["none", "client control mode", "admin control mode", "remote assistance mode"][mestate.controlmode.controlMode]; } else { str += ', activated in ' + mestate.ProvisioningMode.modeStr; } }
341 if (mestate.ehbc.EHBC == true) { str += ', EHBC enabled'; }
342 + str += '.';
343 + if (mestate.net0 != null) { str += '\r\nWired ' + ((mestate.net0.enabled == 1) ? 'Enabled' : 'Disabled') + ((mestate.net0.dhcpEnabled == 1) ? ', DHCP' : ', Static') + ', ' + mestate.net0.mac + (mestate.net0.address == '0.0.0.0'?'':(', ' + mestate.net0.address)); }
344 + if (mestate.net1 != null) { str += '\r\nWireless ' + ((mestate.net0.enabled == 1) ? 'Enabled' : 'Disabled') + ((mestate.net0.dhcpEnabled == 1) ? ', DHCP' : ', Static') + ', ' + mestate.net0.mac + (mestate.net0.address == '0.0.0.0' ? '' : (', ' + mestate.net0.address)); }
345 console.log(str + '.');
346 exit(1);
347 });
@@ -461,7 +466,7 @@ function startMeshCommander() {
466 var ws = socket.upgradeWebSocket();
467 socket.ws = ws;
468 ws.wsIndex = ++webServer.wsListIndex;
464 - webServer.wsList[ws.wsIndex] = ws;
469 + webServer.wsList[ws.wsIndex] = ws; // Keep a reference so the websocket and forwarder don't get disposed.
470 ws.pause();
471
472 // We got a new web socket connection, initiate a TCP connection to the target Intel AMT host/port.
@@ -475,16 +480,20 @@ function startMeshCommander() {
480 // If this is TCP (without TLS) set a normal TCP socket
481 var net = require('net');
482 ws.forwardclient = net.connect({ host: webargs.host, port: webargs.port })
478 - ws.forwardclient.on('connect', function () { this.pipe(this.ws); this.ws.pipe(this); });
483 + ws.forwardclient.on('connect', function () { this.pipe(this.ws, { end: false }); this.ws.pipe(this, { end: false }); });
484 ws.forwardclient.ws = ws;
485 } else {
486 // If TLS is going to be used, setup a TLS socket
487 var tls = require('tls');
488 var tlsoptions = { host: webargs.host, port: webargs.port, secureProtocol: ((webargs.tls1only == 1) ? 'TLSv1_method' : 'SSLv23_method'), rejectUnauthorized: false };
484 - ws.forwardclient = tls.connect(tlsoptions, function () { this.pipe(this.ws); this.ws.pipe(this); });
489 + ws.forwardclient = tls.connect(tlsoptions, function () { this.pipe(this.ws, { end: false }); this.ws.pipe(this, { end: false }); });
490 ws.forwardclient.ws = ws;
491 }
492
493 + // Handle pipe closure
494 + ws.on('end', function () { try { this.forwardclient.end(); } catch (e) { } delete webServer.wsList[this.wsIndex]; });
495 + ws.forwardclient.on('end', function () { try { this.ws.end(); } catch (e) { } });
496 +
497 break;
498 default:
499 socket.end();
agents/modules_meshcmd/amt-mei.js
+40
@@ -254,6 +254,46 @@ function amt_heci() {
254 fn.apply(this, opt);
255 }, callback, optional);
256 }
257 + this.getLanInterfaceSettings = function getLanInterfaceSettings(index, callback)
258 + {
259 + var optional = [];
260 + for (var i = 2; i < arguments.length; ++i) { optional.push(arguments[i]); }
261 + var ifx = Buffer.alloc(4);
262 + ifx.writeUInt32LE(index);
263 + this.sendCommand(0x48, ifx, function onGetLanInterfaceSettings(header, fn, opt)
264 + {
265 + if(header.Status == 0)
266 + {
267 + var info = {};
268 + info.enabled = header.Data.readUInt32LE(0);
269 + info.dhcpEnabled = header.Data.readUInt32LE(8);
270 + switch(header.Data[12])
271 + {
272 + case 1:
273 + info.dhcpMode = 'ACTIVE'
274 + break;
275 + case 2:
276 + info.dhcpMode = 'PASSIVE'
277 + break;
278 + default:
279 + info.dhcpMode = 'UNKNOWN';
280 + break;
281 + }
282 + info.mac = header.Data.slice(14).toString('hex:');
283 +
284 + var addr = header.Data.readUInt32LE(4);
285 + info.address = ((addr >> 24) & 255) + '.' + ((addr >> 16) & 255) + '.' + ((addr >> 8) & 255) + '.' + (addr & 255);
286 + opt.unshift(info);
287 + fn.apply(this, opt);
288 + }
289 + else
290 + {
291 + opt.unshift(null);
292 + fn.apply(this, opt);
293 + }
294 + }, callback, optional);
295 +
296 + };
297 this.unprovision = function unprovision(mode, callback) {
298 var optional = [];
299 for (var i = 2; i < arguments.length; ++i) { optional.push(arguments[i]); }
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.1.5-d",
3 + "version": "0.1.5-e",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
views/default.handlebars
+2 -2
@@ -3067,14 +3067,14 @@
3067 }
3068
3069 function applyDesktopSettings() {
3070 - var r = '', ops = (features & 512)?[100,80,50,40,30,20,10,5,1]:[50,40,30,20,10,5,1];
3070 + var r = '', ops = (features & 512)?[90,70,50,40,30,20,10,5,1]:[50,40,30,20,10,5,1];
3071 for (var i in ops) { r += '<option value=' + ops[i] + '>' + ops[i] + '%</option>'; }
3072 QH('d7bitmapquality', r);
3073 d7desktopmode.value = desktopsettings.encoding;
3074 d7showfocus.checked = desktopsettings.showfocus;
3075 d7showcursor.checked = desktopsettings.showmouse;
3076 d7bitmapquality.value = 40; // Default value
3077 - d7bitmapquality.value = desktopsettings.quality;
3077 + if (ops.indexOf(desktopsettings.quality) >= 0) { d7bitmapquality.value = desktopsettings.quality; }
3078 d7bitmapscaling.value = desktopsettings.scaling;
3079 QV('deskFocusBtn', (desktop != null) && (desktop.contype == 2) && (desktop.state != 0) && (desktopsettings.showfocus));
3080 }