Merge pull request #1136 from jsastriawan/master

Add MeshCmd AMT Wifi setting capability
This commit is contained in:
Ylian Saint-Hilaire 2020-04-09 13:55:11 -07:00 committed by GitHub
commit 91ab68db74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -114,7 +114,7 @@ function run(argv) {
//console.log('addedModules = ' + JSON.stringify(addedModules));
var actionpath = 'meshaction.txt';
if (args.actionfile != null) { actionpath = args.actionfile; }
var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTSCAN', 'AMTPOWER', 'AMTFEATURES', 'AMTNETWORK', 'AMTLOADWEBAPP', 'AMTLOADSMALLWEBAPP', 'AMTLOADLARGEWEBAPP', 'AMTCLEARWEBAPP', 'AMTSTORAGESTATE', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTSCRIPT', 'AMTUUID', 'AMTCCM', 'AMTACM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTEVENTLOG', 'AMTPRESENCE'];
var actions = ['HELP', 'ROUTE', 'MICROLMS', 'AMTSCAN', 'AMTPOWER', 'AMTFEATURES', 'AMTNETWORK', 'AMTLOADWEBAPP', 'AMTLOADSMALLWEBAPP', 'AMTLOADLARGEWEBAPP', 'AMTCLEARWEBAPP', 'AMTSTORAGESTATE', 'AMTINFO', 'AMTINFODEBUG', 'AMTVERSIONS', 'AMTHASHES', 'AMTSAVESTATE', 'AMTSCRIPT', 'AMTUUID', 'AMTCCM', 'AMTACM', 'AMTDEACTIVATE', 'AMTACMDEACTIVATE', 'SMBIOS', 'RAWSMBIOS', 'MESHCOMMANDER', 'AMTAUDITLOG', 'AMTEVENTLOG', 'AMTPRESENCE', 'AMTWIFI'];
// Load the action file
var actionfile = null;
@ -200,6 +200,7 @@ function run(argv) {
console.log(' AmtFeatures - Intel AMT features & user consent.');
console.log(' AmtNetwork - Intel AMT network interface settings.');
console.log(' AmtScan - Search local network for Intel AMT devices.');
console.log(' AmtWifi - Intel AMT Wifi interface settings.');
console.log('\r\nHelp on a specific action using:\r\n');
console.log(' meshcmd help [action]');
exit(1); return;
@ -385,6 +386,24 @@ function run(argv) {
console.log('AmtSCAN will look for Intel AMT device on the network. Example usage:\r\n\r\n meshcmd amtscan --scan 192.168.1.0/24');
console.log('\r\Required arguments:\r\n');
console.log(' --scan [ip range] The IP address range to perform the scan on.');
} else if (action == 'amtwifi') {
console.log('AmtWifi is used to get/set Intel AMT Wifi configuration. Example usage:\r\n\r\n meshcmd amtwifi --host 1.2.3.4 --user admin --pass mypassword --list');
console.log('\r\nRequired arguments:\r\n');
console.log(' --host [hostname] The IP address or DNS name of Intel AMT, 127.0.0.1 is default.');
console.log(' --pass [password] The Intel AMT login password.');
console.log(' --[action] Action options are list, add, del.');
console.log('\r\nOptional arguments:\r\n');
console.log(' --user [username] The Intel AMT login username, admin is default.');
console.log(' --tls Specifies that TLS must be used.');
console.log(' --list List of stored Wifi profile');
console.log(' --add Add new Wifi profile');
console.log(' --name New Wifi profile name');
console.log(' --priority Priority of this profile - default 0');
console.log(' --ssid Wifi SSID');
console.log(' --auth Wifi Authentication method (4 - WPA, 6 - WPA2/RSN) - default 6');
console.log(' --enc Wifi Encryption type (3 - TKIP, 4 - CCMP) - default 3');
console.log(' --psk Wifi password/pre-shared key');
console.log(' --del [profile-name] Delete new Wifi profile');
} else {
actions.shift();
console.log('Invalid action, usage:\r\n\r\n meshcmd help [action]\r\n\r\nValid actions are: ' + actions.join(', ') + '.');
@ -690,6 +709,27 @@ function run(argv) {
if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
if ((settings.username == null) || (typeof settings.username != 'string') || (settings.username == '')) { settings.username = 'admin'; }
performAmtNetConfig(args);
} else if (settings.action == 'amtwifi') { // Perform remote Intel AMT Wifi configuration operation
if (settings.hostname == null) { settings.hostname = '127.0.0.1'; }
if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
if ((settings.username == null) || (typeof settings.username != 'string') || (settings.username == '')) { settings.username = 'admin'; }
if (args.add != null) {
if ((args.name == null) || (typeof args.name != 'string') || args.name == '') {
console.log("Wifi profile name is required."); exit(1); return;
}
if ((args.ssid == null) || (typeof args.ssid != 'string') || args.ssid == '') {
console.log("Wifi SSID is required."); exit(1); return;
}
if ((args.psk == null) || (typeof args.psk != 'string') || args.psk == '') {
console.log("Wifi password is required."); exit(1); return;
}
}
if (args.del !=null) {
if ((settings.name == null) || (typeof settings.name != 'string') || settings.name == '') {
console.log("Wifi profile name is required."); exit(1); return;
}
}
performAmtWifiConfig(args);
} else if (settings.action == 'amtfeatures') { // Perform remote Intel AMT feature configuration operation
if (settings.hostname == null) { settings.hostname = '127.0.0.1'; }
if ((settings.password == null) || (typeof settings.password != 'string') || (settings.password == '')) { console.log('No or invalid \"password\" specified, use --password [password].'); exit(1); return; }
@ -2472,6 +2512,104 @@ function performAmtNetConfig1(stack, name, response, status, args) {
}
}
//
// Intel AMT Wifi configuration
//
function performAmtWifiConfig(args) {
if ((settings.hostname == '127.0.0.1') || (settings.hostname.toLowerCase() == 'localhost')) {
settings.noconsole = true; startLms(performAmtWifiConfig0, false, args);
} else {
performAmtWifiConfig0(1, args);
}
}
function performAmtWifiConfig0(state, args) {
var transport = require('amt-wsman-duk');
var wsman = require('amt-wsman');
var amt = require('amt');
wsstack = new wsman(transport, settings.hostname, settings.tls ? 16993 : 16992, settings.username, settings.password, settings.tls);
amtstack = new amt(wsstack);
amtstack.BatchEnum(null, ['CIM_WiFiEndpointSettings'], performAmtWifiConfig1, args);
}
function performAmtWifiConfig1(stack, name, response, status, args) {
if ( status == 200 ) {
var wifiAuthMethod = {1: "Other", 2: "Open", 3: "Shared Key", 4: "WPA PSK", 5: "WPA 802.1x", 6: "WPA2 PSK", 7: "WPA2 802.1x", 32768 : "WPA3 802.1x"};
var wifiEncMethod = {1: "Other", 2: "WEP", 3: "TKIP", 4: "CCMP", 5: "None"}
var wifiProfiles = {};
for (var y in response['CIM_WiFiEndpointSettings'].responses) {
var z = response['CIM_WiFiEndpointSettings'].responses[y];
var n = z['ElementName'];
wifiProfiles[n]= {'Priority': z['Priority'], 'SSID':z['SSID'],'AuthenticationMethod': z['AuthenticationMethod'], 'EncryptionMethod': z['EncryptionMethod']};
}
if (args) {
if (args.list) {
console.log('List of AMT Wifi profiles:');
if (wifiProfiles.length==0) {
console.log('No Wifi profiles is stored.');
}
for (var t in wifiProfiles) {
var w = wifiProfiles[t];
console.log('Profile Name: '+t+'; Priority: '+w['Priority']+ '; SSID: '+w['SSID']+'; Security: '+wifiAuthMethod[w['AuthenticationMethod']]+'/'+wifiEncMethod[w['EncryptionMethod']]);
}
process.exit(0);
} else if (args.add) {
if (args.auth==null) {args.auth=6}//if not set, default to WPA2 PSK
if (args.enc==null) {args.enc=3}//if not set, default to TKIP
if (args.priority==null) {args.priority=0}//if not set, default to 0
var wifiep = {
__parameterType: 'reference',
__resourceUri: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint',
Name: 'WiFi Endpoint 0'
};
var wifiepsettinginput = {
__parameterType: 'instance',
__namespace: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings',
ElementName: args.name,
InstanceID: 'Intel(r) AMT:WiFi Endpoint Settings ' + args.name,
AuthenticationMethod: args.auth,
EncryptionMethod: args.enc,
SSID: args.ssid,
Priority: args.priority,
PSKPassPhrase: args.psk
}
stack.AMT_WiFiPortConfigurationService_AddWiFiSettings(wifiep, wifiepsettinginput, null, null, null,
function(stck, nm, resp, sts) {
if (sts==200) {
console.log("Wifi profile " + args.name + " successfully added.");
} else {
console.log("Failed to add wifi profile " + args.name + ".");
}
process.exit(0);
});
} else if (args.del) {
if (wifiProfiles[args.name]==null) {
console.log("Profile "+args.name+" could not be found.");
process.exit(0);
}
stack.Delete('CIM_WiFiEndpointSettings', { InstanceID : 'Intel(r) AMT:WiFi Endpoint Settings ' + args.name },
function(stck, nm, resp, sts){
if (sts==200) {
console.log("Wifi profile " + args.name + " successfully deleted.");
} else {
console.log("Failed to delete wifi profile " + args.name + ".");
}
process.exit(0);
},
0, 1);
}
} else {
process.exit(0);
}
} else {
console.log("Error, status " + status + ".");
process.exit(1);
}
}
//
// Intel AMT feature configuration action
@ -2679,4 +2817,4 @@ if (serviceName == null) {
// Called when the executable is not running as a service, run normally.
meshcmdService.on('normalStart', function onNormalStart() { try { run(process.argv); } catch (e) { console.log("ERROR: " + e); } });
meshcmdService.run();
}
}