Start adding support for mid-stream AMTKVM recording.

This commit is contained in:
Ylian Saint-Hilaire 2020-06-20 16:27:31 -07:00
parent 1bad53d516
commit 16b25b04b0
2 changed files with 33 additions and 4 deletions

View File

@ -169,8 +169,8 @@
"maxSingleUserSessions": 10
},
"_amtScanOptions": [
"192.168.15.0/23",
"192.168.8.0/24"
"LabNetwork 192.168.15.0/23",
"SalesNetwork 192.168.8.0/24"
],
"_amtAcmActivation": {
"log": "amtactivation.log",

View File

@ -217,8 +217,11 @@
else if (p == 2) { p = "MeshCentral Desktop"; }
else if (p == 100) { p = "Intel® AMT WSMAN"; }
else if (p == 101) { p = "Intel® AMT Redirection"; }
else if (p == 200) { p = "Intel® AMT KVM"; }
x += addInfoNoEsc("Protocol", p);
}
if (recFileMetadata.bpp == 1) { x += addInfoNoEsc("Color Quality", "256 colors"); }
if (recFileMetadata.bpp == 2) { x += addInfoNoEsc("Color Quality", "65536 colors"); }
if (recFileMetadata.indexInterval) {
recFileIndexBasePtr = recFilePtr;
x += addInfoNoEsc("Seeking", format("Indexed every {0} seconds", recFileMetadata.indexInterval));
@ -264,10 +267,27 @@
recFileStartTime = recFileLastTime = time;
amtDesktop = CreateAmtRemoteDesktop('Desk');
amtDesktop.onScreenSizeChange = deskAdjust;
if (recFileMetadata.bpp) { amtDesktop.bpp = recFileMetadata.bpp; }
amtDesktop.State = 3;
amtDesktop.Start();
deskAdjust();
}
else if (recFileMetadata.protocol == 200) {
// Intel AMT Midstream KVM
recFileProtocol = 200;
x += '<br /><br /><span style=color:gray>Press [space] to play/pause.</span>';
QE('PlayButton', true);
QE('PauseButton', false);
QE('RestartButton', false);
recFileStartTime = recFileLastTime = time;
amtDesktop = CreateAmtRemoteDesktop('Desk');
amtDesktop.onScreenSizeChange = deskAdjust;
amtDesktop.State = 3;
amtDesktop.Start();
if (recFileMetadata.bpp) { amtDesktop.bpp = recFileMetadata.bpp; }
amtDesktop.state = 3;
deskAdjust();
}
QV('metadatadiv', true);
QH('metadatadiv', x);
QH('deskstatus', recFile.name);
@ -323,13 +343,21 @@
}
} else if (recFileProtocol == 101) {
// Intel AMT KVM
var view = new Uint8Array(data.length);
for (var i = 0; i < data.length; i++) { view[i] = data.charCodeAt(i); }
if ((readState == 0) && (rstr2hex(data) == '4100000000000000')) {
// We are not authenticated, KVM data starts here.
readState = 1;
if (data.length > 8) { amtDesktop.ProcessData(data.substring(8)); }
if (data.length > 8) { amtDesktop.ProcessBinaryData(view.slice(8).buffer); }
} else if (readState == 1) {
amtDesktop.ProcessData(data);
amtDesktop.ProcessBinaryData(view.buffer);
}
} else if (recFileProtocol == 200) {
// Intel AMT midstream KVM
var view = new Uint8Array(data.length);
for (var i = 0; i < data.length; i++) { view[i] = data.charCodeAt(i); }
amtDesktop.ProcessBinaryData(view.buffer);
}
} else if ((type == 2) && flagBinary && flagUser) {
// User --> Device data
@ -516,6 +544,7 @@
amtDesktop.onScreenSizeChange = deskAdjust;
amtDesktop.State = 3;
amtDesktop.Start();
if (recFileMetadata.protocol == 200) { if (recFileMetadata.bpp) { amtDesktop.bpp = recFileMetadata.bpp; } amtDesktop.state = 3; }
} else if (agentTerminal) {
agentTerminal = null;
}