fixed netclient

This commit is contained in:
afeiszli
2021-07-29 01:03:57 -04:00
parent 8bb65e7a5c
commit 2a42bb23a3

View File

@@ -403,7 +403,7 @@ func SetWGConfig(network string, peerupdate bool) error {
return err return err
} }
if peerupdate && node.Name != "netmaker" { if peerupdate && node.Name != "netmaker" {
SetPeers(node.Interface, peers) SetPeers(node.Interface, node.Keepalive, peers)
} else { } else {
err = InitWireguard(&node, privkey, peers, hasGateway, gateways) err = InitWireguard(&node, privkey, peers, hasGateway, gateways)
} }
@@ -414,10 +414,39 @@ func SetWGConfig(network string, peerupdate bool) error {
return err return err
} }
func SetPeers(iface string, peers []wgtypes.PeerConfig) { func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
client, err := wgctrl.New()
if err != nil {
log.Println("failed to start wgctrl")
return
}
device, err := client.Device(iface)
if err != nil {
log.Println("failed to parse interface")
return
}
for _, peer := range peers { for _, peer := range peers {
for _, currentPeer := range device.Peers {
if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
currentPeer.PublicKey.String() == peer.PublicKey.String() {
err := exec.Command("wg","set",iface,"peer",currentPeer.PublicKey.String(),"delete").Run()
if err != nil {
log.Println("error setting peer",peer.Endpoint.String(),)
}
}
}
udpendpoint := peer.Endpoint.IP.String()+":"+peer.Endpoint.IP.String() udpendpoint := peer.Endpoint.IP.String()+":"+peer.Endpoint.IP.String()
err := exec.Command("wg","set",iface,"peer",peer.PublicKey.String(),"endpoint",udpendpoint,"allowed-ips",peer.AllowedIPs[0].String()).Run() var allowedips string
var iparr []string
for _, ipaddr := range peer.AllowedIPs {
iparr = append(iparr,ipaddr.String())
}
allowedips = strings.Join(iparr,",")
err := exec.Command("wg","set",iface,"peer",peer.PublicKey.String(),
"endpoint",udpendpoint,
"persistent-keepalive",string(keepalive),
"allowed-ips",allowedips)
if err != nil { if err != nil {
log.Println("error setting peer",peer.Endpoint.String(),) log.Println("error setting peer",peer.Endpoint.String(),)
} }