Merge pull request #578 from zprjk/improve-wifi-networks-win32

improve wifiNetworks detection (win)
This commit is contained in:
Sebastian Hildebrandt 2021-09-11 17:16:28 +02:00 committed by GitHub
commit ba5ff9f053
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -417,29 +417,36 @@ function wifiNetworks(callback) {
let cmd = 'chcp 65001 && netsh wlan show networks mode=Bssid'; let cmd = 'chcp 65001 && netsh wlan show networks mode=Bssid';
exec(cmd, util.execOptsWin, function (error, stdout) { exec(cmd, util.execOptsWin, function (error, stdout) {
const parts = stdout.toString('utf8').split(os.EOL + os.EOL + 'SSID '); const ssidParts = stdout.toString('utf8').split(os.EOL + os.EOL + 'SSID ');
parts.shift(); ssidParts.shift();
ssidParts.forEach(ssidPart => {
const ssidLines = ssidPart.split(os.EOL);
if (ssidLines && ssidLines.length >= 8 && ssidLines[0].indexOf(':') >= 0) {
const bssidsParts = ssidPart.split('BSSID ');
bssidsParts.shift();
bssidsParts.forEach((bssidPart) => {
const bssidLines = bssidPart.split(os.EOL);
const bssidLine = bssidLines[0].split(':');
bssidLine.shift();
const bssid = bssidLine.join(':').trim().toLowerCase();
const channel = bssidLines[3].split(':').pop().trim();
const quality = bssidLines[1].split(':').pop().trim();
parts.forEach(part => {
const lines = part.split(os.EOL);
if (lines && lines.length >= 8 && lines[0].indexOf(':') >= 0) {
let bssid = lines[4].split(':');
bssid.shift();
bssid = bssid.join(':').trim().toLowerCase();
const channel = lines[7].split(':').pop().trim();
const quality = lines[5].split(':').pop().trim();
result.push({ result.push({
ssid: lines[0].split(':').pop().trim(), ssid: ssidLines[0].split(':').pop().trim(),
bssid, bssid,
mode: '', mode: '',
channel: channel ? parseInt(channel, 10) : null, channel: channel ? parseInt(channel, 10) : null,
frequency: wifiFrequencyFromChannel(channel), frequency: wifiFrequencyFromChannel(channel),
signalLevel: wifiDBFromQuality(quality), signalLevel: wifiDBFromQuality(quality),
quality: quality ? parseInt(quality, 10) : null, quality: quality ? parseInt(quality, 10) : null,
security: [lines[2].split(':').pop().trim()], security: [ssidLines[2].split(':').pop().trim()],
wpaFlags: [lines[3].split(':').pop().trim()], wpaFlags: [ssidLines[3].split(':').pop().trim()],
rsnFlags: [] rsnFlags: []
}); });
});
} }
}); });