Intel AMT KVM user consent will now follow device group consent policy. #2957
Ylian Saint-Hilaire committed
Jul 29, 2021 at 13:51 UTC
56a51735ebe4995120308d3b3783de1cd1d6bae7
1 file changed
+18
-5
amtmanager.js
+18
-5
@@ -1609,16 +1609,29 @@ module.exports.CreateAmtManager = function (parent) {
1609
// If this device does not have KVM, ignore the response. This can happen for Intel Standard Manageability (Intel(R) SM).
1610
if ((responses['CIM_KVMRedirectionSAP'] == null) || (responses['CIM_KVMRedirectionSAP'].status == 400)) { responses['CIM_KVMRedirectionSAP'] = null; }
1611
1612
- // Clear user consent requirements
1613
- if ((responses['IPS_OptInService'] != null) && (responses['IPS_OptInService'].response['OptInRequired'] != 0)) {
1614
- responses['IPS_OptInService'].response['OptInRequired'] = 0; // 0 = Not Required, 1 = Required for KVM only, 0xFFFFFFFF = Always Required
1612
+ // Set user consent requirement to match device group user consent
1613
+ const mesh = parent.webserver.meshes[dev.meshid];
1614
+ if (mesh == null) { removeAmtDevice(dev, 35); return; }
1615
+ const userConsentRequirement = ((typeof mesh.consent == 'number') && ((mesh.consent & 8) != 0)) ? 1 : 0; // Enable user consent for KVM if device group desktop "Prompt for user consent" is enabled.
1616
+
1617
+ // Check user consent requirements
1618
+ if ((responses['IPS_OptInService'] != null) && (responses['IPS_OptInService'].response['OptInRequired'] != userConsentRequirement)) {
1619
+ responses['IPS_OptInService'].response['OptInRequired'] = userConsentRequirement; // 0 = Not Required, 1 = Required for KVM only, 0xFFFFFFFF = Always Required
1620
dev.amtstack.Put('IPS_OptInService', responses['IPS_OptInService'].response, function (stack, name, responses, status) {
1621
const dev = stack.dev;
1622
if (isAmtDeviceValid(dev) == false) return; // Device no longer exists, ignore this request.
1618
- if (status == 200) { dev.consoleMsg("Cleared user consent requirements."); }
1623
+ if (status == 200) {
1624
+ if (userConsentRequirement == 0) {
1625
+ dev.consoleMsg("Cleared user consent requirements.");
1626
+ } else if (userConsentRequirement == 1) {
1627
+ dev.consoleMsg("Enabled KVM user consent requirement.");
1628
+ } else if (userConsentRequirement == 0xFFFFFFFF) {
1629
+ dev.consoleMsg("Enabled all user consent requirement.");
1630
+ }
1631
+ }
1632
}, 0, 1);
1633
}
1621
-
1634
+
1635
// Enable SOL & IDER
1636
if ((responses['AMT_RedirectionService'].response['EnabledState'] != 32771) || (responses['AMT_RedirectionService'].response['ListenerEnabled'] == false)) {
1637
dev.redirObj = responses['AMT_RedirectionService'].response;