mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-31 18:13:38 +01:00
Wifi: support macOS
This commit is contained in:
@@ -26,8 +26,7 @@ struct FFWifiSecurity
|
||||
{
|
||||
bool enabled;
|
||||
bool oneXEnabled;
|
||||
FFstrbuf authAlgo;
|
||||
FFstrbuf cipherAlgo;
|
||||
FFstrbuf algorithm;
|
||||
};
|
||||
|
||||
typedef struct FFWifiResult
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
#include "wifi.h"
|
||||
|
||||
#import <CoreWLAN/CoreWLAN.h>
|
||||
|
||||
const char* ffDetectWifi(const FFinstance* instance, FFlist* result)
|
||||
{
|
||||
FF_UNUSED(instance);
|
||||
|
||||
NSArray<CWInterface*>* interfaces = CWWiFiClient.sharedWiFiClient.interfaces;
|
||||
if(!interfaces)
|
||||
return "CWWiFiClient.sharedWiFiClient.interfaces is nil";
|
||||
|
||||
if(interfaces.count == 0)
|
||||
return "No wifi interfaces found";
|
||||
|
||||
for(CWInterface* inf in interfaces)
|
||||
{
|
||||
FFWifiResult* item = (FFWifiResult*)ffListAdd(result);
|
||||
ffStrbufInit(&item->inf.description);
|
||||
ffStrbufInit(&item->inf.status);
|
||||
ffStrbufInit(&item->conn.status);
|
||||
ffStrbufInit(&item->conn.ssid);
|
||||
ffStrbufInit(&item->conn.macAddress);
|
||||
ffStrbufInit(&item->conn.phyType);
|
||||
item->conn.signalQuality = 0.0/0.0;
|
||||
item->conn.rxRate = 0.0/0.0;
|
||||
item->conn.txRate = 0.0/0.0;
|
||||
item->security.enabled = false;
|
||||
item->security.oneXEnabled = false;
|
||||
ffStrbufInit(&item->security.algorithm);
|
||||
|
||||
ffStrbufAppendS(&item->inf.description, inf.interfaceName.UTF8String);
|
||||
ffStrbufAppendS(&item->inf.status, inf.powerOn ? "Power On" : "Power Off");
|
||||
if(!inf.powerOn)
|
||||
continue;
|
||||
|
||||
ffStrbufAppendS(&item->conn.status, inf.serviceActive ? "Active" : "Inactive");
|
||||
if(!inf.serviceActive)
|
||||
continue;
|
||||
|
||||
ffStrbufAppendS(&item->conn.ssid, inf.ssid.UTF8String);
|
||||
ffStrbufAppendS(&item->conn.macAddress, inf.hardwareAddress.UTF8String);
|
||||
switch(inf.activePHYMode)
|
||||
{
|
||||
case kCWPHYModeNone:
|
||||
ffStrbufAppendS(&item->conn.phyType, "none");
|
||||
break;
|
||||
case kCWPHYMode11a:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11a");
|
||||
break;
|
||||
case kCWPHYMode11b:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11b");
|
||||
break;
|
||||
case kCWPHYMode11g:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11g");
|
||||
break;
|
||||
case kCWPHYMode11n:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11n (Wi-Fi 4)");
|
||||
break;
|
||||
case kCWPHYMode11ac:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11ac (Wi-Fi 5)");
|
||||
break;
|
||||
case kCWPHYMode11ax:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11ax (Wi-Fi 6)");
|
||||
break;
|
||||
case 7 /*kCWPHYMode11be?*/:
|
||||
ffStrbufAppendS(&item->conn.phyType, "802.11be (Wi-Fi 7)");
|
||||
break;
|
||||
default:
|
||||
ffStrbufAppendF(&item->conn.phyType, "Unknown (%ld)", inf.activePHYMode);
|
||||
break;
|
||||
}
|
||||
item->conn.signalQuality = inf.rssiValue >= -50 ? 100 : inf.rssiValue <= -100 ? 0 : (inf.rssiValue + 100) * 2;
|
||||
item->conn.txRate = inf.transmitRate;
|
||||
item->security.enabled = inf.security != kCWSecurityNone;
|
||||
switch(inf.security)
|
||||
{
|
||||
case kCWSecurityNone:
|
||||
ffStrbufAppendS(&item->security.algorithm, "None");
|
||||
break;
|
||||
case kCWSecurityWEP:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WEP");
|
||||
break;
|
||||
case kCWSecurityWPAPersonal:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA Personal");
|
||||
break;
|
||||
case kCWSecurityWPAPersonalMixed:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA Persional Mixed");
|
||||
break;
|
||||
case kCWSecurityWPA2Personal:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA2 Personal");
|
||||
break;
|
||||
case kCWSecurityPersonal:
|
||||
ffStrbufAppendS(&item->security.algorithm, "Personal");
|
||||
break;
|
||||
case kCWSecurityDynamicWEP:
|
||||
ffStrbufAppendS(&item->security.algorithm, "Dynamic WEP");
|
||||
break;
|
||||
case kCWSecurityWPAEnterprise:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA Enterprise");
|
||||
break;
|
||||
case kCWSecurityWPAEnterpriseMixed:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA Enterprise Mixed");
|
||||
break;
|
||||
case kCWSecurityWPA2Enterprise:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA2 Enterprise");
|
||||
break;
|
||||
case kCWSecurityEnterprise:
|
||||
ffStrbufAppendS(&item->security.algorithm, "Enterprise");
|
||||
break;
|
||||
case kCWSecurityWPA3Personal:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA3 Personal");
|
||||
break;
|
||||
case kCWSecurityWPA3Enterprise:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA3 Enterprise");
|
||||
break;
|
||||
case kCWSecurityWPA3Transition:
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA3 Transition");
|
||||
break;
|
||||
case 14 /*kCWSecurityOWE*/:
|
||||
ffStrbufAppendS(&item->security.algorithm, "OWE");
|
||||
break;
|
||||
case 15 /*kCWSecurityOWETransition*/:
|
||||
ffStrbufAppendS(&item->security.algorithm, "OWE Transition");
|
||||
break;
|
||||
default:
|
||||
ffStrbufAppendF(&item->security.algorithm, "Unknown (%ld)", inf.security);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -88,8 +88,7 @@ const char* ffDetectWifi(const FFinstance* instance, FFlist* result)
|
||||
item->conn.txRate = 0.0/0.0;
|
||||
item->security.enabled = false;
|
||||
item->security.oneXEnabled = false;
|
||||
ffStrbufInit(&item->security.authAlgo);
|
||||
ffStrbufInit(&item->security.cipherAlgo);
|
||||
ffStrbufInit(&item->security.algorithm);
|
||||
|
||||
ffStrbufSetWS(&item->inf.description, ifInfo->strInterfaceDescription);
|
||||
convertIfStateToString(ifInfo->isState, &item->inf.status);
|
||||
@@ -168,85 +167,86 @@ const char* ffDetectWifi(const FFinstance* instance, FFlist* result)
|
||||
switch (connInfo->wlanSecurityAttributes.dot11AuthAlgorithm)
|
||||
{
|
||||
case DOT11_AUTH_ALGO_80211_OPEN:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "802.11 Open");
|
||||
ffStrbufAppendS(&item->security.algorithm, "802.11 Open");
|
||||
break;
|
||||
case DOT11_AUTH_ALGO_80211_SHARED_KEY:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "802.11 Shared");
|
||||
ffStrbufAppendS(&item->security.algorithm, "802.11 Shared");
|
||||
break;
|
||||
case DOT11_AUTH_ALGO_WPA:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "WPA");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA");
|
||||
break;
|
||||
case DOT11_AUTH_ALGO_WPA_PSK:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "WPA-PSK");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA-PSK");
|
||||
break;
|
||||
case DOT11_AUTH_ALGO_WPA_NONE:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "WPA-None");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA-None");
|
||||
break;
|
||||
case DOT11_AUTH_ALGO_RSNA:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "RSNA");
|
||||
ffStrbufAppendS(&item->security.algorithm, "RSNA");
|
||||
break;
|
||||
case DOT11_AUTH_ALGO_RSNA_PSK:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "RSNA with PSK");
|
||||
ffStrbufAppendS(&item->security.algorithm, "RSNA with PSK");
|
||||
break;
|
||||
case 8 /* DOT11_AUTH_ALGO_WPA3 */:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "WPA3");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA3");
|
||||
break;
|
||||
case 9 /* DOT11_AUTH_ALGO_WPA3_SAE */:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "WPA3-SAE");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WPA3-SAE");
|
||||
break;
|
||||
case 10 /* DOT11_AUTH_ALGO_OWE */:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "OWE");
|
||||
ffStrbufAppendS(&item->security.algorithm, "OWE");
|
||||
break;
|
||||
case 11 /* DOT11_AUTH_ALGO_WPA3_ENT */:
|
||||
ffStrbufAppendS(&item->security.authAlgo, "OWE-ENT");
|
||||
ffStrbufAppendS(&item->security.algorithm, "OWE-ENT");
|
||||
break;
|
||||
default:
|
||||
ffStrbufAppendF(&item->security.authAlgo, "Unknown (%u)", (unsigned)connInfo->wlanSecurityAttributes.dot11AuthAlgorithm);
|
||||
ffStrbufAppendF(&item->security.algorithm, "Unknown (%u)", (unsigned)connInfo->wlanSecurityAttributes.dot11AuthAlgorithm);
|
||||
break;
|
||||
}
|
||||
ffStrbufAppendS(&item->security.algorithm, " - ");
|
||||
switch (connInfo->wlanSecurityAttributes.dot11CipherAlgorithm)
|
||||
{
|
||||
case DOT11_CIPHER_ALGO_NONE:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "None");
|
||||
ffStrbufAppendS(&item->security.algorithm, "None");
|
||||
break;
|
||||
case DOT11_CIPHER_ALGO_WEP40:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "WEP-40");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WEP-40");
|
||||
break;
|
||||
case DOT11_CIPHER_ALGO_TKIP:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "TKIP");
|
||||
ffStrbufAppendS(&item->security.algorithm, "TKIP");
|
||||
break;
|
||||
case DOT11_CIPHER_ALGO_CCMP:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "CCMP");
|
||||
ffStrbufAppendS(&item->security.algorithm, "CCMP");
|
||||
break;
|
||||
case DOT11_CIPHER_ALGO_WEP104:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "WEP-104");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WEP-104");
|
||||
break;
|
||||
case 0x06 /* DOT11_CIPHER_ALGO_BIP */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "BIP-CMAC-128");
|
||||
ffStrbufAppendS(&item->security.algorithm, "BIP-CMAC-128");
|
||||
break;
|
||||
case 0x08 /* DOT11_CIPHER_ALGO_GCMP */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "GCMP-128");
|
||||
ffStrbufAppendS(&item->security.algorithm, "GCMP-128");
|
||||
break;
|
||||
case 0x09 /* DOT11_CIPHER_ALGO_GCMP_256 */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "GCMP-256");
|
||||
ffStrbufAppendS(&item->security.algorithm, "GCMP-256");
|
||||
break;
|
||||
case 0x0a /* DOT11_CIPHER_ALGO_CCMP_256 */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "CCMP-256");
|
||||
ffStrbufAppendS(&item->security.algorithm, "CCMP-256");
|
||||
break;
|
||||
case 0x0b /* DOT11_CIPHER_ALGO_BIP_GMAC_128 */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "BIP-GMAC-128");
|
||||
ffStrbufAppendS(&item->security.algorithm, "BIP-GMAC-128");
|
||||
break;
|
||||
case 0x0c /* DOT11_CIPHER_ALGO_BIP_GMAC_256 */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "BIP-GMAC-256");
|
||||
ffStrbufAppendS(&item->security.algorithm, "BIP-GMAC-256");
|
||||
break;
|
||||
case 0x0d /* DOT11_CIPHER_ALGO_BIP_CMAC_256 */:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "BIP-CMAC-256");
|
||||
ffStrbufAppendS(&item->security.algorithm, "BIP-CMAC-256");
|
||||
break;
|
||||
case DOT11_CIPHER_ALGO_WEP:
|
||||
ffStrbufAppendS(&item->security.cipherAlgo, "WEP");
|
||||
ffStrbufAppendS(&item->security.algorithm, "WEP");
|
||||
break;
|
||||
default:
|
||||
ffStrbufAppendF(&item->security.cipherAlgo, "Unknown (%u)", (unsigned)connInfo->wlanSecurityAttributes.dot11CipherAlgorithm);
|
||||
ffStrbufAppendF(&item->security.algorithm, "Unknown (%u)", (unsigned)connInfo->wlanSecurityAttributes.dot11CipherAlgorithm);
|
||||
break;
|
||||
}
|
||||
ffWlanFreeMemory(connInfo);
|
||||
|
||||
Reference in New Issue
Block a user