54 lines
944 B
Go
54 lines
944 B
Go
//go:build darwin
|
|
|
|
package winapi
|
|
|
|
/*
|
|
#cgo LDFLAGS: -framework CoreWLAN -framework CoreLocation -framework Foundation
|
|
#include <stdlib.h>
|
|
|
|
typedef struct {
|
|
char* ssid;
|
|
char* bssid;
|
|
} CWifiInfo;
|
|
|
|
void RequestLocationPermission();
|
|
CWifiInfo GetCurrentWifiInfo();
|
|
*/
|
|
import "C"
|
|
import (
|
|
"unsafe"
|
|
)
|
|
|
|
// RequestLocationAccess requests Location permission on macOS
|
|
func RequestLocationAccess() {
|
|
C.RequestLocationPermission()
|
|
}
|
|
|
|
// GetWifiConnection đọc SSID và BSSID từ CoreWLAN (macOS)
|
|
func GetWifiConnection() WifiConnection {
|
|
info := C.GetCurrentWifiInfo()
|
|
defer func() {
|
|
if info.ssid != nil {
|
|
C.free(unsafe.Pointer(info.ssid))
|
|
}
|
|
if info.bssid != nil {
|
|
C.free(unsafe.Pointer(info.bssid))
|
|
}
|
|
}()
|
|
|
|
ssid := ""
|
|
if info.ssid != nil {
|
|
ssid = C.GoString(info.ssid)
|
|
}
|
|
|
|
bssid := ""
|
|
if info.bssid != nil {
|
|
bssid = C.GoString(info.bssid)
|
|
}
|
|
|
|
return WifiConnection{
|
|
SSID: ssid,
|
|
BSSID: normalizeMAC(bssid),
|
|
}
|
|
}
|