fixed removing peers

This commit is contained in:
worker-9 2021-08-06 11:55:04 -04:00
parent 642a6a930c
commit e4470ae3c9

View file

@ -243,6 +243,7 @@ func SetWGConfig(network string, peerupdate bool) error {
}
func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
client, err := wgctrl.New()
if err != nil {
log.Println("failed to start wgctrl")
@ -253,9 +254,15 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
log.Println("failed to parse interface")
return
}
devicePeers := device.Peers
if len(devicePeers) > 1 && len(peers) == 0 {
log.Println("no peers pulled")
return
}
for _, peer := range peers {
for _, currentPeer := range device.Peers {
for _, currentPeer := range devicePeers {
if currentPeer.AllowedIPs[0].String() == peer.AllowedIPs[0].String() &&
currentPeer.PublicKey.String() != peer.PublicKey.String() {
_, err := local.RunCmd("wg set " + iface + " peer " + currentPeer.PublicKey.String() + " remove")
@ -289,6 +296,23 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) {
log.Println("error setting peer", peer.PublicKey.String(), err)
}
}
for _, currentPeer := range devicePeers {
shouldDelete := true
for _, peer := range peers {
if peer.AllowedIPs[0].String() == currentPeer.AllowedIPs[0].String() {
shouldDelete = false
}
}
if shouldDelete {
_, err := local.RunCmd("wg set " + iface + " peer " + currentPeer.PublicKey.String() + " remove")
if err != nil {
log.Println("error removing peer", currentPeer.PublicKey.String())
} else {
log.Println("removed peer " + currentPeer.PublicKey.String())
}
}
}
}
func StorePrivKey(key string, network string) error {