feat: added wifi network name from networksetup (#1723)

This commit is contained in:
Serhiy Mytrovtsiy
2023-12-18 16:44:06 +01:00
parent b3a399c287
commit dca3c03acd
2 changed files with 38 additions and 23 deletions

View File

@@ -45,6 +45,7 @@ internal class Popup: PopupWrapper {
private var publicIPv4Field: ValueField? = nil
private var publicIPv6Field: ValueField? = nil
private var ssidField: ValueField? = nil
private var standardField: ValueField? = nil
private var channelField: ValueField? = nil
@@ -245,6 +246,7 @@ internal class Popup: PopupWrapper {
self.latencyField = popupRow(container, n: 0, title: "\(localizedString("Latency")):", value: "0 ms").1
self.interfaceField = popupRow(container, n: 0, title: "\(localizedString("Interface")):", value: localizedString("Unknown")).1
self.ssidField = popupRow(container, n: 0, title: "\(localizedString("Network")):", value: localizedString("Unknown")).1
self.standardField = popupRow(container, n: 0, title: "\(localizedString("Standard")):", value: localizedString("Unknown")).1
self.channelField = popupRow(container, n: 0, title: "\(localizedString("Channel")):", value: localizedString("Unknown")).1
@@ -371,11 +373,7 @@ internal class Popup: PopupWrapper {
}
if let interface = value.interface {
var details = interface.BSDName
if value.connectionType == .wifi, let v = value.wifiDetails.RSSI {
details += ", \(v)"
}
self.interfaceField?.stringValue = "\(interface.displayName) (\(details))"
self.interfaceField?.stringValue = "\(interface.displayName) (\(interface.BSDName))"
self.macAddressField?.stringValue = interface.address
} else {
self.interfaceField?.stringValue = localizedString("Unknown")
@@ -383,6 +381,10 @@ internal class Popup: PopupWrapper {
}
if value.connectionType == .wifi {
self.ssidField?.stringValue = value.wifiDetails.ssid ?? localizedString("Unknown")
if let v = value.wifiDetails.RSSI {
self.ssidField?.stringValue += " (\(v))"
}
var rssi = localizedString("Unknown")
if let v = value.wifiDetails.RSSI {
rssi = "\(v) dBm"
@@ -404,6 +406,7 @@ internal class Popup: PopupWrapper {
let width = value.wifiDetails.channelWidth ?? localizedString("Unknown")
self.channelField?.toolTip = "RSSI: \(rssi)\nNoise: \(noise)\nChannel number: \(number)\nChannel band: \(band)\nChannel width: \(width)\nTransmit rate: \(txRate)"
} else {
self.ssidField?.stringValue = localizedString("Unavailable")
self.standardField?.stringValue = localizedString("Unavailable")
self.channelField?.stringValue = localizedString("Unavailable")
}

View File

@@ -328,25 +328,37 @@ internal class UsageReader: Reader<Network_Usage> {
guard self.usage.interface != nil else { return }
if let interface = CWWiFiClient.shared().interface(withName: self.interfaceID), self.usage.connectionType == .wifi {
self.usage.wifiDetails.ssid = interface.ssid()
self.usage.wifiDetails.bssid = interface.bssid()
self.usage.wifiDetails.countryCode = interface.countryCode()
self.usage.wifiDetails.RSSI = interface.rssiValue()
self.usage.wifiDetails.noise = interface.noiseMeasurement()
self.usage.wifiDetails.transmitRate = interface.transmitRate()
self.usage.wifiDetails.standard = interface.activePHYMode().description
self.usage.wifiDetails.mode = interface.interfaceMode().description
self.usage.wifiDetails.security = interface.security().description
if let ch = interface.wlanChannel() {
self.usage.wifiDetails.channel = ch.description
if self.usage.connectionType == .wifi {
if let interface = CWWiFiClient.shared().interface(withName: self.interfaceID) {
self.usage.wifiDetails.ssid = interface.ssid()
self.usage.wifiDetails.bssid = interface.bssid()
self.usage.wifiDetails.countryCode = interface.countryCode()
self.usage.wifiDetails.channelBand = ch.channelBand.description
self.usage.wifiDetails.channelWidth = ch.channelWidth.description
self.usage.wifiDetails.channelNumber = ch.channelNumber.description
self.usage.wifiDetails.RSSI = interface.rssiValue()
self.usage.wifiDetails.noise = interface.noiseMeasurement()
self.usage.wifiDetails.transmitRate = interface.transmitRate()
self.usage.wifiDetails.standard = interface.activePHYMode().description
self.usage.wifiDetails.mode = interface.interfaceMode().description
self.usage.wifiDetails.security = interface.security().description
if let ch = interface.wlanChannel() {
self.usage.wifiDetails.channel = ch.description
self.usage.wifiDetails.channelBand = ch.channelBand.description
self.usage.wifiDetails.channelWidth = ch.channelWidth.description
self.usage.wifiDetails.channelNumber = ch.channelNumber.description
}
}
if self.usage.wifiDetails.ssid == nil || self.usage.wifiDetails.ssid == "" {
let networksetupResponse = syncShell("networksetup -getairportnetwork \(self.interfaceID)")
if networksetupResponse.split(separator: "\n").count == 1 {
let arr = networksetupResponse.split(separator: ":")
if let ssid = arr.last {
self.usage.wifiDetails.ssid = ssid.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
}
}
}
}
}