package main import ( "log" "net" "time" "golang.zx2c4.com/wireguard/wgctrl" "golang.zx2c4.com/wireguard/wgctrl/wgtypes" ) func main() { client, _ := wgctrl.New() defer client.Close() newcfg(client, "OiR2n329loGJaadqvxFKScX4lK7cOpbAcSrBUmyCFD0=") } func newcfg(client *wgctrl.Client, pubkey string) { peerPubKey, err := wgtypes.ParseKey(pubkey) if err != nil { log.Fatalf("invalid peer public key: %v", err) } allowedIP1 := net.IPNet{IP: net.ParseIP("10.0.0.3"), Mask: net.CIDRMask(32, 32)} persistentKeepalive := 25 * time.Second peerCfg := wgtypes.PeerConfig{ PublicKey: peerPubKey, AllowedIPs: []net.IPNet{allowedIP1}, PersistentKeepaliveInterval: &persistentKeepalive, } cfg := wgtypes.Config{ Peers: []wgtypes.PeerConfig{peerCfg}, } if err := client.ConfigureDevice("wg0", cfg); err != nil { log.Fatalf("failed to add peer: %v", err) } log.Println("Peer added") }