mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-30 00:37:23 +01:00
@@ -9,48 +9,9 @@ static inline double rssiToSignalQuality(int rssi)
|
||||
return (double) (rssi >= -50 ? 100 : rssi <= -100 ? 0 : (rssi + 100) * 2);
|
||||
}
|
||||
|
||||
static bool queryIpconfig(const char* ifName, FFstrbuf* result)
|
||||
{
|
||||
if (@available(macOS 15.6, *))
|
||||
{
|
||||
// ipconfig reports <redacted> too
|
||||
return false;
|
||||
}
|
||||
|
||||
return ffProcessAppendStdOut(result, (char* const[]) {
|
||||
"/usr/sbin/ipconfig",
|
||||
"getsummary",
|
||||
(char* const) ifName,
|
||||
NULL
|
||||
}) == NULL;
|
||||
}
|
||||
|
||||
static bool getWifiInfoByIpconfig(FFstrbuf* ipconfig, const char* prefix, FFstrbuf* result)
|
||||
{
|
||||
// `ipconfig getsummary <interface>` returns a string like this:
|
||||
// <dictionary> {
|
||||
// BSSID : <redacted>
|
||||
// IPv4 : <array> {
|
||||
// ...
|
||||
// }
|
||||
// IPv6 : <array> {
|
||||
// ...
|
||||
// }
|
||||
// InterfaceType : WiFi
|
||||
// LinkStatusActive : TRUE
|
||||
// NetworkID : XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||||
// SSID : XXXXXX
|
||||
// Security : WPA2_PSK
|
||||
// }
|
||||
|
||||
const char* start = memmem(ipconfig->chars, ipconfig->length, prefix, strlen(prefix));
|
||||
if (!start) return false;
|
||||
start += strlen(prefix);
|
||||
const char* end = strchr(start, '\n');
|
||||
if (!end) return false;
|
||||
ffStrbufSetNS(result, (uint32_t) (end - start), start);
|
||||
return true;
|
||||
}
|
||||
@interface CWNetworkProfile()
|
||||
@property(readonly, retain, nullable) NSArray<NSDictionary *> *bssidList;
|
||||
@end
|
||||
|
||||
const char* ffDetectWifi(FFlist* result)
|
||||
{
|
||||
@@ -85,17 +46,19 @@ const char* ffDetectWifi(FFlist* result)
|
||||
|
||||
FF_STRBUF_AUTO_DESTROY ipconfig = ffStrbufCreate();
|
||||
|
||||
CWNetworkProfile* networkProfile = inf.configuration.networkProfiles.firstObject;
|
||||
|
||||
if (inf.ssid) // https://developer.apple.com/forums/thread/732431
|
||||
ffStrbufAppendS(&item->conn.ssid, inf.ssid.UTF8String);
|
||||
else if (ipconfig.length || (queryIpconfig(item->inf.description.chars, &ipconfig)))
|
||||
getWifiInfoByIpconfig(&ipconfig, "\n SSID : ", &item->conn.ssid);
|
||||
else if (networkProfile.ssid)
|
||||
ffStrbufSetStatic(&item->conn.ssid, inf.configuration.networkProfiles.firstObject.ssid.UTF8String);
|
||||
else
|
||||
ffStrbufSetStatic(&item->conn.ssid, "<redacted>"); // https://developer.apple.com/forums/thread/732431
|
||||
|
||||
if (inf.bssid)
|
||||
ffStrbufAppendS(&item->conn.bssid, inf.bssid.UTF8String);
|
||||
else if (ipconfig.length || (queryIpconfig(item->inf.description.chars, &ipconfig)))
|
||||
getWifiInfoByIpconfig(&ipconfig, "\n BSSID : ", &item->conn.bssid);
|
||||
else if (networkProfile.bssidList)
|
||||
ffStrbufSetStatic(&item->conn.bssid, [networkProfile.bssidList.firstObject[@"BSSID"] UTF8String]);
|
||||
else
|
||||
ffStrbufSetStatic(&item->conn.bssid, "<redacted>");
|
||||
|
||||
@@ -183,11 +146,6 @@ const char* ffDetectWifi(FFlist* result)
|
||||
case 15 /*kCWSecurityOWETransition*/:
|
||||
ffStrbufSetStatic(&item->conn.security, "OWE Transition");
|
||||
break;
|
||||
case kCWSecurityUnknown:
|
||||
// Sonoma?
|
||||
if (ipconfig.length || (queryIpconfig(item->inf.description.chars, &ipconfig)))
|
||||
getWifiInfoByIpconfig(&ipconfig, "\n Security : ", &item->conn.security);
|
||||
break;
|
||||
default:
|
||||
ffStrbufAppendF(&item->conn.security, "Unknown (%ld)", inf.security);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user