//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 }