mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-16 22:01:19 +08:00
fixed netclient
This commit is contained in:
@@ -403,7 +403,7 @@ func SetWGConfig(network string, peerupdate bool) error {
|
||||
return err
|
||||
}
|
||||
if peerupdate && node.Name != "netmaker" {
|
||||
SetPeers(node.Interface, peers)
|
||||
SetPeers(node.Interface, node.Keepalive, peers)
|
||||
} else {
|
||||
err = InitWireguard(&node, privkey, peers, hasGateway, gateways)
|
||||
}
|
||||
@@ -414,10 +414,39 @@ func SetWGConfig(network string, peerupdate bool) error {
|
||||
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 _, 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()
|
||||
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 {
|
||||
log.Println("error setting peer",peer.Endpoint.String(),)
|
||||
}
|
||||
|
Reference in New Issue
Block a user