mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	Intel AMT KVM and management fixes.
This commit is contained in:
		
							parent
							
								
									7593e52f6b
								
							
						
					
					
						commit
						c492f2366e
					
				
					 3 changed files with 10 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -108,7 +108,7 @@ module.exports.CreateAmtManager = function (parent) {
 | 
			
		|||
    function addAmtDevice(dev) {
 | 
			
		||||
        var devices = obj.amtDevices[dev.nodeid];
 | 
			
		||||
        if (devices == null) { obj.amtDevices[dev.nodeid] = [dev]; return true; }
 | 
			
		||||
        if (devices.indexOf(dev) >= 0) { return false; } // This device is already in the list
 | 
			
		||||
        if (devices.indexOf(dev) >= 0) return false; // This device is already in the list
 | 
			
		||||
        devices.push(dev); // Add the device to the list
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -725,7 +725,10 @@ module.exports.CreateAmtManager = function (parent) {
 | 
			
		|||
            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'); }
 | 
			
		||||
 | 
			
		||||
            // Intel AMT Warning Flags: 1 = Unknown credentials, 2 = Realm Mismatch, 4 = TLS Cert Mismatch, 8 = Trying credentials
 | 
			
		||||
            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; } }
 | 
			
		||||
            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 != 0) && (dev.aquired.warn != device.intelamt.warn)) { device.intelamt.warn = dev.aquired.warn; change = 1; }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Update Intel AMT flags if needed
 | 
			
		||||
            // dev.aquired.controlMode // 1 = CCM, 2 = ACM
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2939,7 +2939,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
 | 
			
		|||
                        }
 | 
			
		||||
                        if (command.desc != null && (command.desc != node.desc)) { change = 1; node.desc = command.desc; changes.push('description'); }
 | 
			
		||||
                        if (command.intelamt != null) {
 | 
			
		||||
                            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.
 | 
			
		||||
                            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.
 | 
			
		||||
                                if ((command.intelamt.user != null) && (command.intelamt.pass != null) && ((command.intelamt.user != node.intelamt.user) || (command.intelamt.pass != node.intelamt.pass))) {
 | 
			
		||||
                                    change = 1;
 | 
			
		||||
                                    node.intelamt.user = command.intelamt.user;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -818,7 +818,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
 | 
			
		|||
            if ((d.length >= 16) && (d.substring(0, 15) == '\0KvmDataChannel')) {
 | 
			
		||||
                if (obj.kvmDataSupported == false) { obj.kvmDataSupported = true; /*console.log('KVM Data Channel Supported.');*/ }
 | 
			
		||||
                if (((obj.onKvmDataAck == -1) && (d.length == 16)) || (d.charCodeAt(15) != 0)) { obj.onKvmDataAck = true; }
 | 
			
		||||
                if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Recv(' + (d.length - 16) + '): ' + d.substring(16)); }
 | 
			
		||||
                try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Recv(' + (d.length - 16) + '): ' + d.substring(16)); } } catch (ex) { }
 | 
			
		||||
                if (d.length >= 16) { obj.onKvmData(d.substring(16)); } // Event the data and ack
 | 
			
		||||
                if ((obj.onKvmDataAck == true) && (obj.onKvmDataPending.length > 0)) { obj.sendKvmData(obj.onKvmDataPending.shift()); } // Send pending data
 | 
			
		||||
            } else if ((d.length >= 13) && (d.substring(0, 11) == '\0KvmExtCmd\0')) {
 | 
			
		||||
| 
						 | 
				
			
			@ -834,7 +834,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
 | 
			
		|||
                if (cmd == 4) { obj.sendKvmExtCmd(3); }
 | 
			
		||||
            } else {
 | 
			
		||||
                console.log('Got KVM clipboard data:', d);
 | 
			
		||||
                if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Recv(' + d.length + '): ' + rstr2hex(d) + ', ' + d); }
 | 
			
		||||
                try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Recv(' + d.length + '): ' + rstr2hex(d) + ', ' + d); } } catch (ex) { }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // ###END###{DesktopInband}
 | 
			
		||||
| 
						 | 
				
			
			@ -852,7 +852,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
 | 
			
		|||
        if (obj.onKvmDataAck !== true) {
 | 
			
		||||
            obj.onKvmDataPending.push(x);
 | 
			
		||||
        } else {
 | 
			
		||||
            if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Send(' + x.length + '): ' + x); }
 | 
			
		||||
            try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-DataChannel-Send(' + x.length + '): ' + x); } } catch (ex) { }
 | 
			
		||||
            x = '\0KvmDataChannel\0' + x;
 | 
			
		||||
            obj.send(String.fromCharCode(6, 0, 0, 0) + IntToStr(x.length) + x);
 | 
			
		||||
            obj.onKvmDataAck = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -867,7 +867,7 @@ var CreateAmtRemoteDesktop = function (divid, scrolldiv) {
 | 
			
		|||
 | 
			
		||||
    // ###BEGIN###{DesktopClipboard}
 | 
			
		||||
    obj.sendClipboardData = function (x) {
 | 
			
		||||
        if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Send(' + x.length + '): ' + rstr2hex(x) + ', ' + x); }
 | 
			
		||||
        try { if (urlvars && urlvars['kvmdatatrace']) { console.log('KVM-ClipBoard-Send(' + x.length + '): ' + rstr2hex(x) + ', ' + x); } } catch (ex) { }
 | 
			
		||||
        obj.send(String.fromCharCode(6, 0, 0, 0) + IntToStr(x.length) + x);
 | 
			
		||||
    }
 | 
			
		||||
    // ###END###{DesktopClipboard}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue