mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: added wifi network name from networksetup (#1723)
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user