mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 10:22:12 +02:00
Wifi: support macOS
This commit is contained in:
+2
-1
@@ -437,7 +437,7 @@ elseif(APPLE)
|
||||
src/detection/terminalshell/terminalshell_linux.c
|
||||
src/detection/uptime/uptime_bsd.c
|
||||
src/detection/users/users_linux.c
|
||||
src/detection/wifi/wifi_nosupport.c
|
||||
src/detection/wifi/wifi_apple.m
|
||||
src/detection/wmtheme/wmtheme_apple.m
|
||||
src/util/apple/cf_helpers.c
|
||||
src/util/apple/osascript.m
|
||||
@@ -641,6 +641,7 @@ if(APPLE)
|
||||
PRIVATE "-framework OpenGL"
|
||||
PRIVATE "-framework OpenCL"
|
||||
PRIVATE "-framework Cocoa"
|
||||
PRIVATE "-framework CoreWLAN"
|
||||
PRIVATE "-weak_framework MediaRemote -F /System/Library/PrivateFrameworks"
|
||||
)
|
||||
elseif(WIN32)
|
||||
|
||||
@@ -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);
|
||||
|
||||
+1
-2
@@ -364,8 +364,7 @@ static inline void printCommandHelp(const char* command)
|
||||
"Connection TX rate",
|
||||
"Security enabled",
|
||||
"Security 802.1X enabled",
|
||||
"Security auth algorithm",
|
||||
"Security cipher algorithm"
|
||||
"Security algorithm"
|
||||
);
|
||||
}
|
||||
else if(strcasecmp(command, "player-format") == 0)
|
||||
|
||||
+3
-5
@@ -3,7 +3,7 @@
|
||||
#include "detection/wifi/wifi.h"
|
||||
|
||||
#define FF_WIFI_MODULE_NAME "Wifi"
|
||||
#define FF_WIFI_NUM_FORMAT_ARGS 13
|
||||
#define FF_WIFI_NUM_FORMAT_ARGS 12
|
||||
|
||||
void ffPrintWifi(FFinstance* instance)
|
||||
{
|
||||
@@ -49,8 +49,7 @@ void ffPrintWifi(FFinstance* instance)
|
||||
{FF_FORMAT_ARG_TYPE_DOUBLE, &item->conn.txRate},
|
||||
{FF_FORMAT_ARG_TYPE_BOOL, &item->security.enabled},
|
||||
{FF_FORMAT_ARG_TYPE_BOOL, &item->security.oneXEnabled},
|
||||
{FF_FORMAT_ARG_TYPE_STRBUF, &item->security.authAlgo},
|
||||
{FF_FORMAT_ARG_TYPE_STRBUF, &item->security.cipherAlgo},
|
||||
{FF_FORMAT_ARG_TYPE_STRBUF, &item->security.algorithm},
|
||||
});
|
||||
}
|
||||
|
||||
@@ -60,8 +59,7 @@ void ffPrintWifi(FFinstance* instance)
|
||||
ffStrbufDestroy(&item->conn.ssid);
|
||||
ffStrbufDestroy(&item->conn.macAddress);
|
||||
ffStrbufDestroy(&item->conn.phyType);
|
||||
ffStrbufDestroy(&item->security.authAlgo);
|
||||
ffStrbufDestroy(&item->security.cipherAlgo);
|
||||
ffStrbufDestroy(&item->security.algorithm);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user