1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-31 23:53:21 +00:00

Added AMT detection logic

This commit is contained in:
Bryan Roe
2022-07-12 10:57:19 -07:00
parent 031250ce52
commit 843a8bca54

View File

@@ -188,6 +188,7 @@ if (process.argv.getParameter('RemoteDebug') != null)
var promises =
{
amt: null,
conpty: null,
delay: null,
coreinfo: null,
@@ -747,7 +748,11 @@ server.on('upgrade', function (msg, sck, head)
KVM_Test().finally(function () { endTest(); });
return;
}
if (process.argv.getParameter('AMT') != null)
{
AMT_Detection().finally(function () { endTest(); });
return;
}
//
// Run thru the main tests, becuase no special options were sent
//
@@ -801,6 +806,9 @@ server.on('upgrade', function (msg, sck, head)
process.stdout.write('\r Agent sent CoreInfo to server...........................[OK] \n');
process.stdout.write(' => ' + v + '\n');
}).then(function ()
{
return (AMT_Detection());
}).then(function ()
{
process.stdout.write(' Tunnel Test.............................................[WAITING]');
return (createTunnel(0, 0));
@@ -1174,6 +1182,82 @@ function Terminal_Test()
return (p);
}
function AMT_Detection()
{
process.stdout.write(' AMT Detection\n');
var ret = new promise(promise.defaultInit);
sendEval(" var amtMeiModule=null,amtMei=null; try { amtMeiModule = require('amt-mei'); amtMei = new amtMeiModule(); } catch (ex) { selfTestResponse('amt', false); }")
sendEval("\
try\
{\
amtMei.getVersion(function (result)\
{\
if (result)\
{\
var rs = {};\
for (var version in result.Versions)\
{\
if (result.Versions[version].Description == 'AMT') { rs.version = result.Versions[version].Version; }\
if (result.Versions[version].Description == 'Sku') { rs.sku = parseInt(result.Versions[version].Version); }\
}\
if (rs.sku & 8) { rs.version = 'Intel AMT v' + rs.version; }\
else if (rs.sku & 16) { rs.version = 'Intel SM v' + rs.version }\
else { rs.version = 'Intel ME v' + rs.version;}\
amtMei.getProvisioningState(function (state) { if (state) { rs.ProvisioningState = state.stateStr; } });\
amtMei.getProvisioningMode(function (result) { if (result) { rs.ProvisioningMode = result; } });\
amtMei.getControlMode(function (result) \
{\
if (result) \
{\
rs.controlmode = result;\
if (rs.ProvisioningState == 'PRE') { rs.ProvisioningState = 'pre-provisioning state'; }\
else if (rs.ProvisioningState == 'IN') { rs.ProvisioningState = 'in-provisioning state'; }\
else if (rs.ProvisioningState == 'POST')\
{\
if (rs.ProvisioningMode) \
{\
if (rs.controlmode) \
{\
if (rs.ProvisioningMode.modeStr == 'ENTERPRISE') { rs.ProvisioningState= 'activated in ' + ['none', 'Client Control Mode (CCM)', 'Admin Control Mode (ACM)', 'remote assistance mode'][rs.controlmode.controlMode]; } else { rs.ProvisioningState = 'activated in ' + rs.ProvisioningMode.modeStr; }\
}\
else\
{\
rs.ProvisioningState = 'activated in ' + rs.ProvisioningMode.modeStr;\
}\
}\
}\
selfTestResponse('amt', true, rs);\
}\
});\
}\
});\
}\
catch(ex)\
{\
selfTestResponse('amt', false);\
}");
promises.amt.then(function (j)
{
if (j.reason && j.reason.version)
{
process.stdout.write(' => Version: ' + j.reason.version + '\n');
process.stdout.write(' => Provisioning State: ' + j.reason.ProvisioningState + '\n');
ret.resolve();
}
else
{
process.stdout.write(' => NOT DETECTED\n');
ret.resolve();
}
}).catch(function ()
{
process.stdout.write(' => NOT DETECTED\n');
ret.resolve();
});
return (ret);
}
function KVM_Test()
{
process.stdout.write(' KVM Test\n');