AMT manager improvements.
Ylian Saint-Hilaire committed
Oct 7, 2020 at 12:44 UTC
9df9de0922611e92e9f9bb201bdc82ac8c8adf6c
3 files changed
+20
-15
amtmanager.js
+18
-13
@@ -40,20 +40,25 @@ module.exports.CreateAmtManager = function(parent) {
40
41
// Handle server events
42
obj.HandleEvent = function (source, event, ids, id) {
43
- if (event.action != 'nodeconnect') return;
44
- if ((event.conn & 14) != 0) { // connectType: Bitmask, 1 = MeshAgent, 2 = Intel AMT CIRA, 4 = Intel AMT local, 8 = Intel AMT Relay, 16 = MQTT
45
- // We have an OOB connection to Intel AMT, update our information
46
- var dev = obj.amtDevices[event.nodeid];
47
- if (dev == null) { obj.amtDevices[event.nodeid] = dev = { conn: event.conn }; fetchIntelAmtInformation(event.nodeid); } else { dev.conn = event.conn; }
48
- } else if (((event.conn & 1) != 0) && (parent.webserver != null)) {
49
- // We have an agent connection without OOB, check if this agent supports Intel AMT
50
- var agent = parent.webserver.wsagents[event.nodeid];
51
- if ((agent == null) || (agent.agentInfo == null) || (parent.meshAgentsArchitectureNumbers[agent.agentInfo.agentId].amt == false)) { removeDevice(event.nodeid); return; }
52
- var dev = obj.amtDevices[event.nodeid];
53
- if (dev == null) { obj.amtDevices[event.nodeid] = dev = { conn: event.conn }; fetchIntelAmtInformation(event.nodeid); } else { dev.conn = event.conn; }
54
- } else {
55
- removeDevice(event.nodeid);
43
+ // React to nodes connecting and disconnecting
44
+ if (event.action == 'nodeconnect') {
45
+ if ((event.conn & 14) != 0) { // connectType: Bitmask, 1 = MeshAgent, 2 = Intel AMT CIRA, 4 = Intel AMT local, 8 = Intel AMT Relay, 16 = MQTT
46
+ // We have an OOB connection to Intel AMT, update our information
47
+ var dev = obj.amtDevices[event.nodeid];
48
+ if (dev == null) { obj.amtDevices[event.nodeid] = dev = { conn: event.conn }; fetchIntelAmtInformation(event.nodeid); } else { dev.conn = event.conn; }
49
+ } else if (((event.conn & 1) != 0) && (parent.webserver != null)) {
50
+ // We have an agent connection without OOB, check if this agent supports Intel AMT
51
+ var agent = parent.webserver.wsagents[event.nodeid];
52
+ if ((agent == null) || (agent.agentInfo == null) || (parent.meshAgentsArchitectureNumbers[agent.agentInfo.agentId].amt == false)) { removeDevice(event.nodeid); return; }
53
+ var dev = obj.amtDevices[event.nodeid];
54
+ if (dev == null) { obj.amtDevices[event.nodeid] = dev = { conn: event.conn }; fetchIntelAmtInformation(event.nodeid); } else { dev.conn = event.conn; }
55
+ } else {
56
+ removeDevice(event.nodeid);
57
+ }
58
}
59
+
60
+ // React to node being removed
61
+ if (event.action == 'removenode') { removeDevice(event.nodeid); }
62
}
63
64
// Remove a device
views/default-mobile.handlebars
+1
-1
@@ -1472,7 +1472,7 @@
1472
}
1473
case 'ifchange': {
1474
// Network interface changed for a device, if we are currently viewing this device, ask for an update.
1475
- if (currentNode._id == message.event.nodeid) { meshserver.send({ action: 'getnetworkinfo', nodeid: currentNode._id }); }
1475
+ if ((currentNode != null) && (currentNode._id == message.event.nodeid)) { meshserver.send({ action: 'getnetworkinfo', nodeid: currentNode._id }); }
1476
break;
1477
}
1478
case 'devicesessions': {
views/default.handlebars
+1
-1
@@ -2955,7 +2955,7 @@
2955
}
2956
case 'ifchange': {
2957
// Network interface changed for a device, if we are currently viewing this device, ask for an update.
2958
- if (currentNode._id == message.event.nodeid) { meshserver.send({ action: 'getnetworkinfo', nodeid: currentNode._id }); }
2958
+ if ((currentNode != null) && (currentNode._id == message.event.nodeid)) { meshserver.send({ action: 'getnetworkinfo', nodeid: currentNode._id }); }
2959
break;
2960
}
2961
case 'devicesessions': {