Skip to content

Instantly share code, notes, and snippets.

@parrotmac
Created August 23, 2019 21:05
Show Gist options
  • Save parrotmac/68252b72da5ce760afe9d9b8356be1e4 to your computer and use it in GitHub Desktop.
Save parrotmac/68252b72da5ce760afe9d9b8356be1e4 to your computer and use it in GitHub Desktop.
package main
import (
"github.com/godbus/dbus"
"go.uber.org/zap"
)
const hotspotConnectionUUID = "45b366f6-e56c-4b46-8699-e5fb62ce292e"
const (
serviceName = "org.freedesktop.NetworkManager"
settings = "org.freedesktop.NetworkManager.Settings"
settingsObjPath = "/org/freedesktop/NetworkManager/Settings"
)
var connData = map[string]interface{}{
"type": "802-11-wireless",
"uuid": hotspotConnectionUUID,
"id": "AutomatedHotspot",
}
var wifiData = map[string]interface{}{
"ssid": []byte("ThinkPad"),
"mode": "ap",
"band": "bg",
"channel": uint32(6),
}
var wifiSecData = map[string]interface{}{
"key-mgmt": "wpa-psk",
"psk": "great-password",
}
var addrData = []map[string]interface{}{
{
"address": "172.24.1.1",
"prefix": uint32(24),
},
}
var ipv4Data = map[string]interface{}{
"method": "shared",
"address-data": addrData,
"gateway": "172.24.1.1",
}
var ipv6Data = map[string]interface{}{
"method": "ignore",
}
var con = map[string]map[string]interface{} {
"connection": connData,
"802-11-wireless": wifiData,
"802-11-wireless-security": wifiSecData,
"ipv4": ipv4Data,
"ipv6": ipv6Data,
}
func main() {
logger := zap.NewExample()
bus, err := dbus.SystemBus()
if err != nil {
logger.Fatal("unable to get system bus", zap.Error(err))
}
settingsObj := bus.Object(serviceName, settingsObjPath)
addRes := settingsObj.Call(settings + ".AddConnection", 0, con)
if addRes.Err != nil {
logger.Fatal("unable to add connection", zap.Error(err))
}
logger.Info("add connection result", zap.Any("body", addRes.Body))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment