Answering to my own question...
wpa-connect - API for connection Linux device to Wi-Fi Network (Golang)
This package was developed as part of IoT project in order to add Wi-Fi connectivity to headless Raspberry Pi like devices. No need to connman or Network Manager be installed.
wpa-connect communicates with WPA supplicant over D-Bus (linux message bus system).
Github repository
https://github.com/mark2b/wpa-connect
Examples
Connect to Wi-Fi network
import wifi "github.com/mark2b/wpa-connect"
if conn, err := wifi.ConnectManager.Connect(ssid, password, time.Second * 60); err == nil {
fmt.Println("Connected", conn.NetInterface, conn.SSID, conn.IP4.String(), conn.IP6.String())
} else {
fmt.Println(err)
}
Scan for Wi-Fi networks
import wifi "github.com/mark2b/wpa-connect"
if bssList, err := wifi.ScanManager.Scan(); err == nil {
for _, bss := range bssList {
print(bss.SSID, bss.Signal, bss.KeyMgmt)
}
}
Package released under a MIT license.