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
}