mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-12-25 06:35:54 -05:00
Added Intel AMT power actions.
This commit is contained in:
parent
2b22bfbf19
commit
7bf0681f5b
@ -300,6 +300,11 @@ module.exports.CreateAmtManager = function (parent) {
|
||||
if (Array.isArray(event.nodeids)) { for (var i in event.nodeids) { performOneClickRecoveryAction(event.nodeids[i], event.file); } }
|
||||
break;
|
||||
}
|
||||
case 'amtpoweraction': {
|
||||
if (event.noact == 1) return; // Take no action on these events. We are likely in peering mode and need to only act when the database signals the change in state.
|
||||
if (Array.isArray(event.nodeids)) { for (var i in event.nodeids) { performPowerAction(event.nodeids[i], event.actiontype); } }
|
||||
break;
|
||||
}
|
||||
case 'changenode': { // React to changes in a device
|
||||
var devices = obj.amtDevices[event.nodeid], rescan = false;
|
||||
if (devices != null) {
|
||||
@ -799,6 +804,7 @@ module.exports.CreateAmtManager = function (parent) {
|
||||
var dev = devices[i];
|
||||
// If not LMS, has a AMT stack present and is in connected state, perform power operation.
|
||||
if ((dev.connType != 2) && (dev.state == 1) && (dev.amtstack != null)) {
|
||||
// Action: 2 = Power on, 8 = Power down, 10 = reset
|
||||
try { dev.amtstack.RequestPowerStateChange(action, performPowerActionResponse); } catch (ex) { }
|
||||
}
|
||||
}
|
||||
|
17
meshuser.js
17
meshuser.js
@ -3930,7 +3930,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||
case 'poweraction':
|
||||
{
|
||||
if (common.validateArray(command.nodeids, 1) == false) break; // Check nodeid's
|
||||
if (common.validateInt(command.actiontype, 2, 4) == false) break; // Check actiontype
|
||||
if (common.validateInt(command.actiontype, 2, 310) == false) break; // Check actiontype
|
||||
for (i in command.nodeids) {
|
||||
var nodeid = command.nodeids[i];
|
||||
|
||||
@ -3947,10 +3947,17 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
|
||||
// If this device is connected on MQTT, send a power action.
|
||||
if (parent.parent.mqttbroker != null) { parent.parent.mqttbroker.publish(node._id, 'powerAction', ['', '', 'poweroff', 'reset', 'sleep'][command.actiontype]); }
|
||||
|
||||
// Get this device and send the power command
|
||||
const agent = parent.wsagents[node._id];
|
||||
if (agent != null) {
|
||||
try { agent.send(JSON.stringify({ action: 'poweraction', actiontype: command.actiontype })); } catch (ex) { }
|
||||
if (command.actiontype >= 300) {
|
||||
if ((command.actiontype != 302) && (command.actiontype != 308) && (command.actiontype != 310)) return; // Invalid action type.
|
||||
// Intel AMT power command, actiontype: 2 = Power on, 8 = Power down, 10 = reset
|
||||
parent.parent.DispatchEvent('*', obj, { action: 'amtpoweraction', userid: user._id, username: user.name, nodeids: [node._id], domain: domain.id, nolog: 1, actiontype: command.actiontype - 300 });
|
||||
} else {
|
||||
if ((command.actiontype < 2) && (command.actiontype > 4)) return; // Invalid action type.
|
||||
// Mesh Agent power command, get this device and send the power command
|
||||
const agent = parent.wsagents[node._id];
|
||||
if (agent != null) {
|
||||
try { agent.send(JSON.stringify({ action: 'poweraction', actiontype: command.actiontype })); } catch (ex) { }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -2385,7 +2385,7 @@ a {
|
||||
grid-area: deskarea1;
|
||||
-ms-grid-column: 1;
|
||||
-ms-grid-row: 1;
|
||||
height: 20px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
|
||||
|
@ -4861,7 +4861,8 @@
|
||||
if ((node.intelamt.state == 2) && node.intelamt.flags) { if (node.intelamt.flags & 2) { provisioningMode = (', ' + "Client Control Mode (CCM)"); } else if (node.intelamt.flags & 4) { provisioningMode = (', ' + "Admin Control Mode (ACM)"); } }
|
||||
x += addDetailItem("Provisioning State", ((node.intelamt.state) ? (provisioningStates[node.intelamt.state]) : ('<i>' + "Unknown" + '</i>')) + provisioningMode, s);
|
||||
x += addDetailItem("Security", (node.intelamt.tls == 1) ? "Secured using TLS" : "TLS is not setup", s);
|
||||
x += addDetailItem("Admin Credentials", (node.intelamt.user == null || node.intelamt.user == '') ? "Not Known" : "Known", s);
|
||||
// Check that the Intel AMT user is setup and there is no warnings (1 = invalid credentials, 8 = trying)
|
||||
x += addDetailItem("Admin Credentials", ((node.intelamt.user) == null || (node.intelamt.user == '') || ((node.intelamt.warn != null) && ((node.intelamt.warn & 9) != 0))) ? "Not Known" : "Known", s);
|
||||
if (x != '') { sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt' }); }
|
||||
}
|
||||
|
||||
|
@ -6613,6 +6613,12 @@
|
||||
if (((currentNode.conn & 1) != 0) && ((rights & 131072) != 0)) { count++; y += '<option value=106>' + "Run Commands" + '</option>'; } // Remote command permission
|
||||
if ((currentNode.conn != 0) && ((rights & 262144) != 0)) { count++; y += '<option value=4>' + "Sleep" + '</option><option value=3>' + "Reset" + '</option><option value=2>' + "Power off" + '</option>'; }
|
||||
if ((currentNode.conn & 16) != 0) { count++; y += '<option value=103>' + "Send MQTT Message" + '</option>'; }
|
||||
if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && (rights == 0xFFFFFFFF)) {
|
||||
count++;
|
||||
y += '<option value=310>' + "Intel® AMT Reset" + '</option>';
|
||||
y += '<option value=302>' + "Intel® AMT Power on" + '</option>';
|
||||
y += '<option value=308>' + "Intel® AMT Power off" + '</option>';
|
||||
}
|
||||
if ((getNodeAmtVersion(currentNode) >= 15) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && (rights == 0xFFFFFFFF) && ((features & 0x00000400) == 0)) { count++; y += '<option value=107>' + "Intel® AMT One Click Recovery" + '</option>'; } // CIRA (2) or AMT (4) connected
|
||||
if (((currentNode.conn & 1) != 0) && ((rights & 32768) != 0)) { count++; y += '<option value=104>' + "Uninstall Agent" + '</option>'; }
|
||||
y += '</select>';
|
||||
@ -6658,6 +6664,12 @@
|
||||
Q('d3attrib').value = currentNode._id;
|
||||
setDialogMode(3, "Intel® AMT One Click Recovery", 3, deviceActionOneClickRecovery);
|
||||
d3init();
|
||||
} else if (op == 302) { // Intel AMT power on
|
||||
setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) }); }, "Perform Intel® AMT power on?");
|
||||
} else if (op == 308) { // Intel AMT power off
|
||||
setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) }); }, "Perform Intel® AMT power off?");
|
||||
} else if (op == 310) { // Intel AMT reset
|
||||
setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) }); }, "Perform Intel® AMT reset?");
|
||||
} else {
|
||||
// Power operation
|
||||
meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) });
|
||||
@ -9378,7 +9390,8 @@
|
||||
if ((node.intelamt.state == 2) && node.intelamt.flags) { if (node.intelamt.flags & 2) { provisioningMode = (', ' + "Client Control Mode (CCM)"); } else if (node.intelamt.flags & 4) { provisioningMode = (', ' + "Admin Control Mode (ACM)"); } }
|
||||
x += addDetailItem("Provisioning State", ((node.intelamt.state)?(provisioningStates[node.intelamt.state]):('<i>' + "Unknown" + '</i>')) + provisioningMode, s);
|
||||
x += addDetailItem("Security", (node.intelamt.tls == 1)?"Secured using TLS":"TLS is not setup", s);
|
||||
x += addDetailItem("Admin Credentials", (node.intelamt.user == null || node.intelamt.user == '')?"Not Known":"Known", s);
|
||||
// Check that the Intel AMT user is setup and there is no warnings (1 = invalid credentials, 8 = trying)
|
||||
x += addDetailItem("Admin Credentials", ((node.intelamt.user) == null || (node.intelamt.user == '') || ((node.intelamt.warn != null) && ((node.intelamt.warn & 9) != 0)))?"Not Known":"Known", s);
|
||||
if (x != '') { sections.push({ name: "Intel® Active Management Technology (Intel® AMT)", html: x, img: 'amt64.png' }); }
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user