Updated LMS metadata available to meshcore and server
Bryan Roe committed
Aug 11, 2020 at 18:38 UTC
e6639df37144e417694f7980869ac1a301251246
2 files changed
+82
-4
agents/meshcore.js
+46
-2
@@ -435,9 +435,34 @@ function createMeshCore(agent) {
435
if (mesh.isControlChannelConnected) { mesh.SendCommand({ action: 'smbios', value: SMBiosTablesRaw }); }
436
437
// If SMBios tables say that Intel AMT is present, try to connect MEI
438
- if (SMBiosTables.amtInfo && (SMBiosTables.amtInfo.AMT == true)) {
438
+ if (SMBiosTables.amtInfo && (SMBiosTables.amtInfo.AMT == true))
439
+ {
440
var amtmodule = require('amt-manage');
441
amt = new amtmodule(mesh, db, false);
442
+ amt.on('portBinding_LMS', function (map)
443
+ {
444
+ var j = { action: 'lmsinfo', value: { ports: map.keys() } };
445
+ mesh.SendCommand(j);
446
+ });
447
+ amt.on('stateChange_LMS', function (v)
448
+ {
449
+ if (!meshCoreObj.intelamt) { meshCoreObj.intelamt = {}; }
450
+ switch(v)
451
+ {
452
+ case 0:
453
+ meshCoreObj.intelamt.microlms = 'DISABLED';
454
+ break;
455
+ case 1:
456
+ meshCoreObj.intelamt.microlms = 'CONNECTING';
457
+ break;
458
+ case 2:
459
+ meshCoreObj.intelamt.microlms = 'CONNECTED';
460
+ break;
461
+ default:
462
+ break;
463
+ }
464
+ mesh.SendCommand(meshCoreObj);
465
+ });
466
amt.onStateChange = function (state) { if (state == 2) { sendPeriodicServerUpdate(1); } }
467
if (amtPolicy != null) { amt.setPolicy(amtPolicy); }
468
amt.start();
@@ -3492,7 +3517,26 @@ function createMeshCore(agent) {
3517
amt.getAmtInfo(function (meinfo) {
3518
try {
3519
if (meinfo == null) return;
3495
- var intelamt = {}, p = false;
3520
+ var intelamt = {};
3521
+ if (amt != null)
3522
+ {
3523
+ switch(amt.lmsstate)
3524
+ {
3525
+ case 0:
3526
+ intelamt.microlms = 'DISABLED'
3527
+ break;
3528
+ case 1:
3529
+ intelamt.microlms = 'CONNECTING'
3530
+ break;
3531
+ case 2:
3532
+ intelamt.microlms = 'CONNECTED'
3533
+ break;
3534
+ default:
3535
+ intelamt.microlms = 'unknown'
3536
+ break;
3537
+ }
3538
+ }
3539
+ var p = false;
3540
if ((meinfo.Versions != null) && (meinfo.Versions.AMT != null)) { intelamt.ver = meinfo.Versions.AMT; p = true; if (meinfo.Versions.Sku != null) { intelamt.sku = parseInt(meinfo.Versions.Sku); } }
3541
if (meinfo.ProvisioningState != null) { intelamt.state = meinfo.ProvisioningState; p = true; }
3542
if (meinfo.Flags != null) { intelamt.flags = meinfo.Flags; p = true; }
agents/modules_meshcore/amt-manage.js
+36
-2
@@ -36,8 +36,38 @@ function AmtManager(agent, db, isdebug) {
36
var obj = this;
37
var mestate;
38
var trustedHashes = null;;
39
+
40
+ require('events').EventEmitter.call(obj, true)
41
+ .createEvent('stateChange_LMS')
42
+ .createEvent('portBinding_LMS');
43
+ obj._lmsstate = 0;
44
+ obj._mapping = [];
45
+
46
+ obj.on('newListener', function (name, callback)
47
+ {
48
+ if(name == 'portBinding_LMS')
49
+ {
50
+ callback.call(this, this._mapping);
51
+ }
52
+ });
53
+
54
+ Object.defineProperty(obj, 'lmsstate',
55
+ {
56
+ get: function ()
57
+ {
58
+ return (this._lmsstate);
59
+ },
60
+ set: function (value)
61
+ {
62
+ if (this._lmsstate != value)
63
+ {
64
+ this._lmsstate = value;
65
+ this.emit('stateChange_LMS', value);
66
+ }
67
+ }
68
+ });
69
+
70
obj.state = 0;
40
- obj.lmsstate = 0;
71
obj.onStateChange = null;
72
obj.setDebug = function (x) { isdebug = x; }
73
@@ -124,7 +154,11 @@ function AmtManager(agent, db, isdebug) {
154
amtLms = new lme_heci();
155
amtLms.on('error', function (e) { amtLmsState = 0; obj.lmsstate = 0; amtLms = null; debug("LMS error: " + e); setupMeiOsAdmin(1); });
156
amtLms.on('connect', function () { amtLmsState = 2; obj.lmsstate = 2; debug("LMS connected"); setupMeiOsAdmin(2); });
127
- //amtLms.on('bind', function (map) { });
157
+ amtLms.on('bind', function (map)
158
+ {
159
+ obj._mapping = map;
160
+ obj.emit('portBinding_LMS', map);
161
+ });
162
amtLms.on('notify', function (data, options, str, code) {
163
//debug('LMS notify');
164
if (code == 'iAMT0052-3') {