Intel AMT KVM and management fixes.

Ylian Saint-Hilaire committed Jan 31, 2022 at 18:35 UTC c492f2366e0df0e3b8aadf0d267368552afb8e30
3 files changed +10 -7
amtmanager.js
+5 -2
@@ -108,7 +108,7 @@ module.exports.CreateAmtManager = function (parent) {
108 function addAmtDevice(dev) {
109 var devices = obj.amtDevices[dev.nodeid];
110 if (devices == null) { obj.amtDevices[dev.nodeid] = [dev]; return true; }
111 - if (devices.indexOf(dev) >= 0) { return false; } // This device is already in the list
111 + if (devices.indexOf(dev) >= 0) return false; // This device is already in the list
112 devices.push(dev); // Add the device to the list
113 return true;
114 }
@@ -725,7 +725,10 @@ module.exports.CreateAmtManager = function (parent) {
725 if ((typeof dev.aquired.state == 'number') && (dev.aquired.state != device.intelamt.state)) { change = 1; log = 1; device.intelamt.state = dev.aquired.state; changes.push('AMT state'); }
726
727 // Intel AMT Warning Flags: 1 = Unknown credentials, 2 = Realm Mismatch, 4 = TLS Cert Mismatch, 8 = Trying credentials
728 - if ((typeof dev.aquired.warn == 'number')) { if ((dev.aquired.warn == 0) && (device.intelamt.warn != null)) { delete device.intelamt.warn; change = 1; } else if (dev.aquired.warn != device.intelamt.warn) { device.intelamt.warn = dev.aquired.warn; change = 1; } }
728 + if ((typeof dev.aquired.warn == 'number')) {
729 + if ((dev.aquired.warn == 0) && (device.intelamt.warn != null)) { delete device.intelamt.warn; change = 1; }
730 + else if ((dev.aquired.warn != 0) && (dev.aquired.warn != device.intelamt.warn)) { device.intelamt.warn = dev.aquired.warn; change = 1; }
731 + }
732
733 // Update Intel AMT flags if needed
734 // dev.aquired.controlMode // 1 = CCM, 2 = ACM
meshuser.js
+1 -1
@@ -2939,7 +2939,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2939 }
2940 if (command.desc != null && (command.desc != node.desc)) { change = 1; node.desc = command.desc; changes.push('description'); }
2941 if (command.intelamt != null) {
2942 - if ((parent.parent.amtManager == null) || (node.intelamt.user == null) || (node.intelamt.user == '') || ((node.intelamt.warn != null) && (((node.intelamt.warn) & 9) != 0))) { // Only allow changes to Intel AMT credentials if AMT manager is not running, or manager warned of unknown/trying credentials.
2942 + if ((parent.parent.amtManager == null) || (node.intelamt.pass == null) || (node.intelamt.pass == '') || ((node.intelamt.warn != null) && (((node.intelamt.warn) & 9) != 0))) { // Only allow changes to Intel AMT credentials if AMT manager is not running, or manager warned of unknown/trying credentials.
2943 if ((command.intelamt.user != null) && (command.intelamt.pass != null) && ((command.intelamt.user != node.intelamt.user) || (command.intelamt.pass != node.intelamt.pass))) {
2944 change = 1;
2945 node.intelamt.user = command.intelamt.user;
public/scripts/amt-desktop-0.0.2.js
+4 -4
@@ -818,7 +818,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
818 if ((d.length >= 16) && (d.substring(0, 15) == '\0KvmDataChannel')) {
819 if (obj.kvmDataSupported == false) { obj.kvmDataSupported = true; /*console.log('KVM Data Channel Supported.');*/ }
820 if (((obj.onKvmDataAck == -1) && (d.length == 16)) || (d.charCodeAt(15) != 0)) { obj.onKvmDataAck = true; }
821 - if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Recv(' + (d.length - 16) + '): ' + d.substring(16)); }
821 + try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Recv(' + (d.length - 16) + '): ' + d.substring(16)); } } catch (ex) { }
822 if (d.length >= 16) { obj.onKvmData(d.substring(16)); } // Event the data and ack
823 if ((obj.onKvmDataAck == true) && (obj.onKvmDataPending.length > 0)) { obj.sendKvmData(obj.onKvmDataPending.shift()); } // Send pending data
824 } else if ((d.length >= 13) && (d.substring(0, 11) == '\0KvmExtCmd\0')) {
@@ -834,7 +834,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
834 if (cmd == 4) { obj.sendKvmExtCmd(3); }
835 } else {
836 console.log('Got KVM clipboard data:', d);
837 - if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Recv(' + d.length + '): ' + rstr2hex(d) + ', ' + d); }
837 + try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Recv(' + d.length + '): ' + rstr2hex(d) + ', ' + d); } } catch (ex) { }
838 }
839 }
840 // ###END###{DesktopInband}
@@ -852,7 +852,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
852 if (obj.onKvmDataAck !== true) {
853 obj.onKvmDataPending.push(x);
854 } else {
855 - if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Send(' + x.length + '): ' + x); }
855 + try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Send(' + x.length + '): ' + x); } } catch (ex) { }
856 x = '\0KvmDataChannel\0' + x;
857 obj.send(String.fromCharCode(6, 0, 0, 0) + IntToStr(x.length) + x);
858 obj.onKvmDataAck = false;
@@ -867,7 +867,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
867
868 // ###BEGIN###{DesktopClipboard}
869 obj.sendClipboardData = function (x) {
870 - if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Send(' + x.length + '): ' + rstr2hex(x) + ', ' + x); }
870 + try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Send(' + x.length + '): ' + rstr2hex(x) + ', ' + x); } } catch (ex) { }
871 obj.send(String.fromCharCode(6, 0, 0, 0) + IntToStr(x.length) + x);
872 }
873 // ###END###{DesktopClipboard}