1
0
mirror of https://github.com/Ylianst/MeshCommander synced 2026-02-23 16:13:02 +00:00

Added 802.11x support.

This commit is contained in:
Ylian Saint-Hilaire
2022-02-28 17:53:59 -08:00
parent 63f1fba9dd
commit 023d6f2145
22 changed files with 151517 additions and 583 deletions

View File

@@ -886,6 +886,9 @@
<!-- ###BEGIN###{Wireless} -->
<span id="id_TableWifi2"></span>
<!-- ###END###{Wireless} -->
<!-- ###BEGIN###{NetAuth} -->
<span id="id_TableNetAuth"></span>
<!-- ###END###{NetAuth} -->
</div>
<!-- ###END###{NetworkSettings} -->
<div id="p11" style="display:none">
@@ -1069,7 +1072,7 @@
<div id="DeskFocus" style="color:transparent;border:3px dotted rgba(255,0,0,.2);position:absolute;border-radius:5px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)"></div>
<!-- ###END###{DesktopFocus} -->
<!-- ###BEGIN###{DesktopInband} -->
<canvas id="Desk" width=640 height=400 style="-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" onmousewheel="dmousewheel(event)" moz-opaque></canvas>
<canvas id="Desk" width=640 height=400 style="-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" onwheel="dmousewheel(event)" moz-opaque></canvas>
<!-- ###END###{DesktopInband} -->
<!-- ###BEGIN###{!DesktopInband} -->
<canvas id="Desk" width=640 height=400 style="-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" moz-opaque></canvas>
@@ -1725,6 +1728,60 @@
<label><input type="radio" name="d26a" id='idx_d26ocr1' value=1>Enabled<br></label>
<label><input type="radio" name="d26a" id='idx_d26ocr0' value=0>Disabled<br></label>
</div>
<!-- ###BEGIN###{NetAuth} -->
<div id="dialog27" style="margin:auto;margin:3px">
<br>
<div style='height:26px'>
<select id="idx_d27enabled" style="float:right;width:200px" onclick="updateNetAuthDialog()">
<option value="0">Disabled</option>
<option value="1">Enabled</option>
</select>
<div>Enabled</div>
</div>
<div id="idx_d27protocoldiv" style='height:26px'>
<select id='idx_d27protocol' style='float:right;width:200px' onclick='updateNetAuthDialog()'>
<option value='0'>TLS</option>
<option value='1'>TTLS MSCHAPv2</option>
<option value='2'>PEAP MSCHAPv2</option>
<option value='3'>EAP GTC</option>
<option value='4'>EAPFAST MSCHAPv2</option>
<option value='5'>EAPFAST GTC</option>
<option value='6'>EAPFAST TLS</option>
</select>
<div>Protocol</div>
</div>
<div id="idx_d27servernamediv" style='height:26px'><input id='idx_d27servername' style="float:right;width:200px" maxlength="80" onkeyup="updateNetAuthDialog()" title="Maximum 32 characters"><div title="Maximum 32 characters">Server Name</div></div>
<div id="idx_d27servernamecomparediv" style='height:26px'>
<select id='idx_d27servernamecompare' style="float:right;width:200px" onclick="updateNetAuthDialog()">
<option value='0'>Full Name</option>
<option value='1'>Domain Suffix</option>
</select>
<div>Server Name Compare</div>
</div>
<div id="idx_d27domaindiv" style='height:26px'><input id="idx_d27domain" style="float:right;width:200px" maxlength="128" onkeyup="updateNetAuthDialog()" title="Maximum 128 characters"><div title="Maximum 128 characters">Domain</div></div>
<div id="idx_d27usernamediv" style='height:26px'><input id="idx_d27username" style="float:right;width:200px" maxlength="128" onkeyup="updateNetAuthDialog()" title="Maximum 128 characters"><div title="Maximum 128 characters">Username</div></div>
<div id="idx_d27passworddiv" style='height:26px'><input id="idx_d27password" type="password" style="float:right;width:200px" maxlength="32" onkeyup="updateNetAuthDialog()" title="Maximum length is 32 characters"><div title="Maximum length is 32 characters">Password</div></div>
<div id="idx_d27roamingidentitydiv" style='height:26px'><input id="idx_d27roamingidentity" style="float:right;width:200px" maxlength="80" onkeyup="updateNetAuthDialog()" title="Maximum 80 characters"><div title="Maximum 80 characters">Roaming Identity</div></div>
<div id="idx_d27pacdiv" style='height:26px'><input id="idx_d27pac" style="float:right;width:200px" maxlength="256" onkeyup="updateNetAuthDialog()" title="Maximum 256 characters"><div title="Maximum 256 characters">Protected Access Credentials</div></div>
<div id="idx_d27pacpassworddiv" style='height:26px'><input id="idx_d27pacpassword" type="password" style="float:right;width:200px" maxlength="256" onkeyup="updateNetAuthDialog()" title="Maximum length is 256 characters"><div title="Maximum length is 256 characters">PAC Password</div></div>
<div id="idx_d27clientcertdiv" style='height:26px'>
<select id="idx_d27clientcert" style="float:right;width:200px" onclick="updateNetAuthDialog()"></select>
<div>Client Certificate</div>
</div>
<div id="idx_d27servercertdiv" style='height:26px'>
<select id="idx_d27servercert" style="float:right;width:200px" onclick="updateNetAuthDialog()"></select>
<div>Server Issuer Cert</div>
</div>
<div id="idx_d27activeins0div" style='height:26px'>
<select id="idx_d27activeins0" style="float:right;width:200px" onclick="updateNetAuthDialog()">
<option value="0">Enabled</option>
<option value="1">Disabled</option>
</select>
<div>Active in S0</div>
</div>
<div id="idx_d27pxetimeoutdiv" style='height:26px'><input id="idx_d27pxetimeout" style="float:right;width:200px" onkeyup="updateNetAuthDialog()"><div>PXE Timeout</div></div>
</div>
<!-- ###END###{NetAuth} -->
</div>
<div style="padding:10px;margin-bottom:4px">
<input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)">
@@ -1760,7 +1817,7 @@
var LoadingHtml = '<div style=text-align:center;padding-top:20px>' + "Loading..." + '<div>';
var amtversion = 0;
var amtversionmin = 0;
var amtFirstPull = 0; // Bitmask, Set this when the first pull request is made on a device: 1 = HardwareInfo, 2 = WirelessInfo, 4 = SystemDefense, 8 = Storage, 16 = EventLog, 32 = AuditLog
var amtFirstPull = 0; // Bitmask, Set this when the first pull request is made on a device: 1 = HardwareInfo, 2 = WirelessInfo, 4 = SystemDefense, 8 = Storage, 16 = EventLog, 32 = AuditLog, 64 = ExtraInfo, 128 = 802.11x
// ###BEGIN###{NetworkSettings}
var amtwirelessif = -1; // Set to the interface index for the wireless interface, -1 if no wireless.
// ###END###{NetworkSettings}
@@ -5298,6 +5355,9 @@
if (amtversion > 5) query.push('IPS_IPv6PortSettings', '*CIM_KVMRedirectionSAP', '*IPS_OptInService','*IPS_KVMRedirectionSettingData');
if (amtversion > 9) query.push('*IPS_ScreenConfigurationService', '*IPS_PowerManagementService');
if ((amtversion > 15) && (amtstack.wsman.comm.xtls == 1)) query.push('*CIM_BootService');
// ###BEGIN###{NetAuth}
if (amtversion > 2) query.push('*AMT_8021XProfile');
// ###END###{NetAuth}
amtstack.BatchEnum('', query, processSystemStatus, true);
// ###END###{!Look-Intel-SBT}
// ###BEGIN###{Wireless}
@@ -5623,6 +5683,14 @@
ddns = "Update by DHCP server";
}
x += TableEntry("Dynamic DNS", addLinkConditional(ddns, 'showEditDnsDlg()', xxAccountAdminName));
// ###BEGIN###{NetAuth}
// 802.11x
var netAuthProtocols = ["TLS", "TTLS MSCHAPv2", "PEAP MSCHAPv2", "EAP GTC", "EAPFAST MSCHAPv2", "EAPFAST GTC", "EAPFAST TLS"], netAuthStr = "Disabled";
if (amtsysstate['AMT_8021XProfile'].responses.Body['Enabled']) { netAuthStr = "Enabled, " + netAuthProtocols[amtsysstate['AMT_8021XProfile'].responses.Body['AuthenticationProtocol']]; }
x += TableEntry("802.11x", addLinkConditional(netAuthStr, 'editNetAuthProfile()', xxAccountAdminName));
// ###END###{NetAuth}
x += TableEnd();
for (var y in amtsysstate['AMT_EthernetPortSettings'].responses) {
@@ -7713,6 +7781,115 @@
}
// ###END###{Wireless}
// ###BEGIN###{NetAuth}
//
// 802.11x SETTINGS
//
function editNetAuthProfile() {
if (xxdialogMode) return;
// Set certificates
var clientcertoptions = '', servercertoptions = '';
for (var i in xxCertificates) {
if (xxCertificates[i].TrustedRootCertficate) {
servercertoptions += '<option value="' + i + '">' + EscapeHtml(xxCertificates[i].XSubject['CN']) + '</option>';
} else if (xxCertificates[i].XPrivateKey) {
clientcertoptions += '<option value="' + i + '">' + EscapeHtml(xxCertificates[i].XSubject['CN']) + '</option>';
}
}
if (clientcertoptions == '') { messagebox("802.11x Profile", "No client certificates available to enable 802.11x."); return; }
QH('idx_d27clientcert', clientcertoptions);
QH('idx_d27servercert', servercertoptions);
// Set profile
var sc = amtsysstate['AMT_8021XProfile'].responses.Body;
Q('idx_d27enabled').value = sc['Enabled'] ? 1 : 0;
Q('idx_d27activeins0').value = (sc['ActiveInS0'] ? 1 : 0);
Q('idx_d27pxetimeout').value = sc['PxeTimeout'];
if (sc['Enabled']) {
Q('idx_d27protocol').value = sc['AuthenticationProtocol'];
Q('idx_d27roamingidentity').value = sc['RoamingIdentity'] ? sc['RoamingIdentity'] : '';
Q('idx_d27servername').value = sc['ServerCertificateName'] ? sc['ServerCertificateName'] : '';
Q('idx_d27servernamecompare').value = sc['ServerCertificateNameComparison'];
Q('idx_d27username').value = sc['Username'] ? sc['Username'] : '';
Q('idx_d27password').value = sc['Password'] ? sc['Password'] : '';
Q('idx_d27domain').value = sc['Domain'] ? sc['Domain'] : '';
Q('idx_d27pac').value = sc['ProtectedAccessCredential'] ? sc['ProtectedAccessCredential'] : '';
Q('idx_d27pacpassword').value = sc['PACPassword'] ? sc['PACPassword'] : '';
var scInstanceId = sc['ServerCertificateIssuer']['ReferenceParameters']['SelectorSet']['Selector']['Value'];
var ccInstanceId = sc['ClientCertificate']['ReferenceParameters']['SelectorSet']['Selector']['Value'];
for (var i in xxCertificates) {
if (xxCertificates[i]['InstanceID'] == scInstanceId) { Q('idx_d27servercert').value = i; }
if (xxCertificates[i]['InstanceID'] == ccInstanceId) { Q('idx_d27clientcert').value = i; }
}
}
setDialogMode(27, "802.11x Profile", 3, function () { setNetAuthProfile() });
updateNetAuthDialog();
}
function updateNetAuthDialog() {
QV('idx_d27protocoldiv', Q('idx_d27enabled').value == 1);
QV('idx_d27servernamediv', Q('idx_d27enabled').value == 1);
QV('idx_d27servernamecomparediv', (Q('idx_d27enabled').value == 1) && (Q('idx_d27servername').value != ''));
QV('idx_d27domaindiv', Q('idx_d27enabled').value == 1);
QV('idx_d27usernamediv', Q('idx_d27enabled').value == 1);
QV('idx_d27passworddiv', Q('idx_d27enabled').value == 1);
QV('idx_d27roamingidentitydiv', Q('idx_d27enabled').value == 1);
QV('idx_d27pacdiv', (Q('idx_d27enabled').value == 1) && (Q('idx_d27protocol').value > 3));
QV('idx_d27pacpassworddiv', (Q('idx_d27enabled').value == 1) && (Q('idx_d27protocol').value > 3));
QV('idx_d27clientcertdiv', Q('idx_d27enabled').value == 1);
QV('idx_d27servercertdiv', Q('idx_d27enabled').value == 1);
QV('idx_d27activeins0div', Q('idx_d27enabled').value == 1);
QV('idx_d27pxetimeoutdiv', Q('idx_d27enabled').value == 1);
}
function setNetAuthProfile() {
var sc = Clone(amtsysstate['AMT_8021XProfile'].responses.Body);
sc['Enabled'] = (Q('idx_d27enabled').value == 1);
if (sc['Enabled']) {
sc['ActiveInS0'] = (Q('idx_d27activeins0').value == 1);
sc['AuthenticationProtocol'] = Q('idx_d27protocol').value;
if (Q('idx_d27roamingidentity').value != '') { sc['RoamingIdentity'] = Q('idx_d27roamingidentity').value; } else { delete sc['RoamingIdentity']; }
if (Q('idx_d27servername').value != '') {
sc['ServerCertificateName'] = Q('idx_d27servername').value;
sc['ServerCertificateNameComparison'] = Q('idx_d27servernamecompare').value;
} else {
delete sc['ServerCertificateName'];
delete sc['ServerCertificateNameComparison'];
}
if (Q('idx_d27username').value != '') { sc['Username'] = Q('idx_d27username').value; } else { delete sc['Username']; }
if (Q('idx_d27password').value != '') { sc['Password'] = Q('idx_d27password').value; } else { delete sc['Password']; }
if (Q('idx_d27domain').value != '') { sc['Domain'] = Q('idx_d27domain').value; } else { delete sc['Domain']; }
if (Q('idx_d27protocol').value > 3) {
sc['ProtectedAccessCredential'] = Q('idx_d27pac').value;
sc['PACPassword'] = Q('idx_d27pacpassword').value;
} else {
delete sc['ProtectedAccessCredential'];
delete sc['PACPassword'];
}
sc['ClientCertificate'] = '<a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>' + amtstack.CompleteName('AMT_PublicKeyCertificate') + '</w:ResourceURI><w:SelectorSet><w:Selector Name="InstanceID">' + xxCertificates[parseInt(Q('idx_d27clientcert').value)]['InstanceID'] + '</w:Selector></w:SelectorSet></a:ReferenceParameters>';
sc['ServerCertificateIssuer'] = '<a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>' + amtstack.CompleteName('AMT_PublicKeyCertificate') + '</w:ResourceURI><w:SelectorSet><w:Selector Name="InstanceID">' + xxCertificates[parseInt(Q('idx_d27servercert').value)]['InstanceID'] + '</w:Selector></w:SelectorSet></a:ReferenceParameters>';
sc['PxeTimeout'] = Q('idx_d27pxetimeout').value;
}
amtstack.Put('AMT_8021XProfile', sc, setNetAuthProfileEx);
}
function setNetAuthProfileEx(stack, name, response, status) {
if (status == 200) {
amtsysstate['AMT_8021XProfile'].responses.Body = amtsysstate['AMT_8021XProfile'].response = response.Body;
updateSystemStatus();
} else {
if (response.Header['WsmanError']) {
messagebox("802.11x Error", response.Header['WsmanError'].replace(/_/g, ' '));
} else {
messagebox("802.11x Error", "Error, Status = " + status);
}
}
}
// ###END###{NetAuth}
// ###END###{NetworkSettings}
// ###BEGIN###{HardwareInfo}
@@ -13419,7 +13596,7 @@
QV('id_dialogclose', b & 2);
QV('idx_dlgDeleteButton', b & 4);
if (y) QH('id_dialogtitle', y);
for (var i = 1; i < 27; i++) { QV('dialog' + i, i == x); } // Edit this line when more dialogs are added
for (var i = 1; i < 28; i++) { QV('dialog' + i, i == x); } // Edit this line when more dialogs are added
QV('dialog', x);
if (c) { if (x == 11) { QH('id_dialogOptions', c); } else { QH('id_dialogMessage', c); } }