daemon: use per-interface features

Signed-off-by: Steffen Vogel <post@steffenvogel.de>
This commit is contained in:
Steffen Vogel
2022-09-30 08:32:26 +02:00
parent 70e437d9a6
commit 92a7ad2f7f
99 changed files with 3510 additions and 2599 deletions

View File

@@ -0,0 +1,32 @@
package hsync
import (
"net"
"github.com/stv0g/cunicu/pkg/core"
"go.uber.org/zap"
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
)
func (hs *Interface) OnPeerAdded(p *core.Peer) {
if err := hs.Sync(); err != nil {
hs.logger.Error("Failed to update hosts file", zap.Error(err))
}
p.OnModified(hs)
}
func (hs *Interface) OnPeerRemoved(p *core.Peer) {
if err := hs.Sync(); err != nil {
hs.logger.Error("Failed to update hosts file", zap.Error(err))
}
}
func (hs *Interface) OnPeerModified(p *core.Peer, old *wgtypes.Peer, m core.PeerModifier, ipsAdded, ipsRemoved []net.IPNet) {
// Only update if the name has changed
if m.Is(core.PeerModifiedName) {
if err := hs.Sync(); err != nil {
hs.logger.Error("Failed to update hosts file", zap.Error(err))
}
}
}