Files
rikkei_simple_care/client/internal/winapi/wifi_darwin.go
2026-07-01 09:49:27 +07:00

47 lines
1.2 KiB
Go

//go:build darwin
package winapi
import (
"bytes"
"os/exec"
"strings"
)
// GetWifiConnection đọc SSID và BSSID từ ipconfig (macOS)
func GetWifiConnection() WifiConnection {
// Find Wi-Fi interface dynamically
wifiInterface := "en0"
cmdPort := exec.Command("networksetup", "-listallhardwareports")
if outPort, err := cmdPort.Output(); err == nil {
lines := strings.Split(string(outPort), "\n")
for i := 0; i < len(lines)-1; i++ {
if strings.Contains(lines[i], "Hardware Port: Wi-Fi") {
next := strings.TrimSpace(lines[i+1])
if strings.HasPrefix(next, "Device:") {
wifiInterface = strings.TrimSpace(strings.TrimPrefix(next, "Device:"))
break
}
}
}
}
cmd := exec.Command("ipconfig", "getsummary", wifiInterface)
var out bytes.Buffer
cmd.Stdout = &out
if err := cmd.Run(); err != nil {
return WifiConnection{}
}
var conn WifiConnection
for _, line := range strings.Split(out.String(), "\n") {
trimmed := strings.TrimSpace(line)
if strings.HasPrefix(trimmed, "SSID :") {
conn.SSID = strings.TrimSpace(strings.TrimPrefix(trimmed, "SSID :"))
} else if strings.HasPrefix(trimmed, "BSSID :") {
conn.BSSID = normalizeMAC(strings.TrimSpace(strings.TrimPrefix(trimmed, "BSSID :")))
}
}
return conn
}