|
@@ -25,8 +25,10 @@ const (
|
|
|
)
|
|
|
|
|
|
// SetPeers - sets peers on a given WireGuard interface
|
|
|
-func SetPeers(iface, currentNodeAddr string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
|
|
+func SetPeers(iface string, node *models.Node, peers []wgtypes.PeerConfig) error {
|
|
|
var devicePeers []wgtypes.Peer
|
|
|
+ var currentNodeAddr = node.Address
|
|
|
+ var keepalive = node.PersistentKeepalive
|
|
|
var oldPeerAllowedIps = make(map[string][]net.IPNet, len(peers))
|
|
|
var err error
|
|
|
if ncutils.IsFreeBSD() {
|
|
@@ -73,13 +75,14 @@ func SetPeers(iface, currentNodeAddr string, keepalive int32, peers []wgtypes.Pe
|
|
|
if keepAliveString == "0" {
|
|
|
keepAliveString = "15"
|
|
|
}
|
|
|
- if peer.Endpoint != nil {
|
|
|
+ if node.IsHub == "yes" || peer.Endpoint == nil {
|
|
|
_, err = ncutils.RunCmd("wg set "+iface+" peer "+peer.PublicKey.String()+
|
|
|
- " endpoint "+udpendpoint+
|
|
|
" persistent-keepalive "+keepAliveString+
|
|
|
" allowed-ips "+allowedips, true)
|
|
|
+
|
|
|
} else {
|
|
|
_, err = ncutils.RunCmd("wg set "+iface+" peer "+peer.PublicKey.String()+
|
|
|
+ " endpoint "+udpendpoint+
|
|
|
" persistent-keepalive "+keepAliveString+
|
|
|
" allowed-ips "+allowedips, true)
|
|
|
}
|
|
@@ -207,7 +210,7 @@ func InitWireguard(node *models.Node, privkey string, peers []wgtypes.PeerConfig
|
|
|
err = SyncWGQuickConf(ifacename, confPath)
|
|
|
}
|
|
|
if !ncutils.HasWgQuick() && ncutils.IsLinux() {
|
|
|
- err = SetPeers(ifacename, node.Address, node.PersistentKeepalive, peers)
|
|
|
+ err = SetPeers(ifacename, node, peers)
|
|
|
if err != nil {
|
|
|
ncutils.PrintLog("error setting peers: "+err.Error(), 1)
|
|
|
}
|
|
@@ -251,7 +254,7 @@ func SetWGConfig(network string, peerupdate bool) error {
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
- err = SetPeers(iface, nodecfg.Address, nodecfg.PersistentKeepalive, peers)
|
|
|
+ err = SetPeers(iface, &nodecfg, peers)
|
|
|
} else if peerupdate {
|
|
|
err = InitWireguard(&nodecfg, privkey, peers, hasGateway, gateways, true)
|
|
|
} else {
|