diff --git a/amtmanager.js b/amtmanager.js index b748abea..95f3c593 100644 --- a/amtmanager.js +++ b/amtmanager.js @@ -955,7 +955,7 @@ module.exports.CreateAmtManager = function (parent) { }); } - // Perform a power action: 2 = Power up, 5 = Power cycle, 8 = Power down, 10 = Reset, 11 = Power on to BIOS, 12 = Reset to BIOS, 13 = Power on to BIOS with SOL, 14 = Reset to BIOS with SOL + // Perform a power action: 2 = Power up, 5 = Power cycle, 8 = Power down, 10 = Reset, 11 = Power on to BIOS, 12 = Reset to BIOS, 13 = Power on to BIOS with SOL, 14 = Reset to BIOS with SOL, 15 = Power on to PXE, 16 = Reset to PXE function performPowerAction(nodeid, action) { console.log('performPowerAction', nodeid, action); var devices = obj.amtDevices[nodeid]; @@ -970,7 +970,7 @@ module.exports.CreateAmtManager = function (parent) { // Action: 2 = Power up, 5 = Power cycle, 8 = Power down, 10 = Reset try { dev.amtstack.RequestPowerStateChange(action, performPowerActionResponse); } catch (ex) { } } else { - // 11 = Power on to BIOS, 12 = Reset to BIOS, 13 = Power on to BIOS with SOL, 14 = Reset to BIOS with SOL + // 11 = Power on to BIOS, 12 = Reset to BIOS, 13 = Power on to BIOS with SOL, 14 = Reset to BIOS with SOL, 15 = Power on to PXE, 16 = Reset to PXE dev.amtstack.BatchEnum(null, ['*AMT_BootSettingData'], performAdvancedPowerActionResponse); } } @@ -1003,8 +1003,8 @@ module.exports.CreateAmtManager = function (parent) { // Ready boot parameters bootSettingData['BIOSSetup'] = ((action >= 11) && (action <= 14)); bootSettingData['UseSOL'] = ((action >= 13) && (action <= 14)); - if ((action == 11) || (action == 13)) { dev.powerAction = 2; } // Power on - if ((action == 12) || (action == 14)) { dev.powerAction = 10; } // Reset + if ((action == 11) || (action == 13) || (action == 15)) { dev.powerAction = 2; } // Power on + if ((action == 12) || (action == 14) || (action == 16)) { dev.powerAction = 10; } // Reset // Set boot parameters dev.amtstack.Put('AMT_BootSettingData', bootSettingData, function (stack, name, response, status, tag) { @@ -1015,7 +1015,8 @@ module.exports.CreateAmtManager = function (parent) { const dev = stack.dev; if ((obj.amtDevices[dev.nodeid] == null) || (status != 200)) return; // Device no longer exists or error // Set boot order - dev.amtstack.CIM_BootConfigSetting_ChangeBootOrder(null, function (stack, name, response, status) { + var bootDevice = (action === 15 || action === 16) ? '
http://schemas.xmlsoap.org/ws/2004/08/addressing
http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootSourceSettingIntel(r) AMT: Force PXE Boot' : null; + dev.amtstack.CIM_BootConfigSetting_ChangeBootOrder(bootDevice, function (stack, name, response, status) { const dev = stack.dev; if ((obj.amtDevices[dev.nodeid] == null) || (status != 200)) return; // Device no longer exists or error // Perform power action diff --git a/meshuser.js b/meshuser.js index 1bc37975..01e45e86 100644 --- a/meshuser.js +++ b/meshuser.js @@ -3129,8 +3129,8 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use } if ((command.actiontype >= 300) && (command.actiontype < 400)) { - if ((command.actiontype != 302) && (command.actiontype != 308) && (command.actiontype < 310) && (command.actiontype > 312)) return; // Invalid action type. - // Intel AMT power command, actiontype: 2 = Power on, 8 = Power down, 10 = reset, 11 = Power on to BIOS, 12 = Reset to BIOS, 13 = Power on to BIOS with SOL, 14 = Reset to BIOS with SOL + if ((command.actiontype != 302) && (command.actiontype != 308) && (command.actiontype < 310) && (command.actiontype > 316)) return; // Invalid action type. + // Intel AMT power command, actiontype: 2 = Power on, 8 = Power down, 10 = reset, 11 = Power on to BIOS, 12 = Reset to BIOS, 13 = Power on to BIOS with SOL, 14 = Reset to BIOS with SOL, 15 = Power on to PXE, 16 = Reset to PXE 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. diff --git a/views/default.handlebars b/views/default.handlebars index 781f0c93..aef1ba99 100644 --- a/views/default.handlebars +++ b/views/default.handlebars @@ -8451,6 +8451,8 @@ if ((xxcurrentView == 11) || (xxcurrentView == 12)) { // Only show these options on terminal or desktop tabs y += ''; y += ''; + y += ''; + y += ''; } } if ((currentNode.intelamt != null) && (currentNode.intelamt.state == 2) && ((currentNode.conn & 6) != 0) && ((rights & 64) != 0)) { @@ -8519,6 +8521,10 @@ setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) + ((xxcurrentView == 12) ? 2 : 0) }); }, "Perform Intel® AMT power on to BIOS?"); } else if (op == 312) { // Intel AMT reset to BIOS setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) + ((xxcurrentView == 12) ? 2 : 0) }); }, "Perform Intel® AMT reset to BIOS?"); + } else if (op == 315) { // Intel AMT power to PXE + setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) + ((xxcurrentView == 12) ? 2 : 0) }); }, "Perform Intel® AMT power on to PXE?"); + } else if (op == 316) { // Intel AMT reset to PXE + setDialogMode(2, "Intel® AMT Power Operation", 3, function() { meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op) + ((xxcurrentView == 12) ? 2 : 0) }); }, "Perform Intel® AMT reset to PXE?"); } else if ((op == 400) || (op == 401)) { // Flash / vibrate meshserver.send({ action: 'poweraction', nodeids: [ currentNode._id ], actiontype: parseInt(op), time: parseInt(Q('d2devicetime').value) });