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
|
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(),)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user