47 lines
1.2 KiB
Go
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
|
|
}
|