mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-21 07:46:04 +08:00
Merge pull request #815 from gravitl/feature_v0.11.0_hublogic
fixed hub logic
This commit is contained in:
commit
c01b950ca9
|
@ -96,7 +96,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
|
|||
network, err := GetNetwork(networkName)
|
||||
if err != nil {
|
||||
return peers, err
|
||||
} else if network.IsHubAndSpoke == "yes" && refnode.IsHub != "yes" {
|
||||
} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
|
||||
return GetHubPeer(networkName), nil
|
||||
}
|
||||
if relayedNodeAddr == "" {
|
||||
|
|
|
@ -41,7 +41,7 @@ func ServerJoin(networkSettings *models.Network) (models.Node, error) {
|
|||
}
|
||||
var ishub = "no"
|
||||
|
||||
if networkSettings.IsHubAndSpoke == "yes" || networkSettings.IsComms == "yes" {
|
||||
if networkSettings.IsPointToSite == "yes" || networkSettings.IsComms == "yes" {
|
||||
nodes, err := GetNetworkNodes(networkSettings.NetID)
|
||||
if err != nil || nodes == nil {
|
||||
ishub = "yes"
|
||||
|
|
|
@ -24,7 +24,7 @@ type Network struct {
|
|||
IsDualStack string `json:"isdualstack" bson:"isdualstack" validate:"checkyesorno"`
|
||||
IsIPv4 string `json:"isipv4" bson:"isipv4" validate:"checkyesorno"`
|
||||
IsIPv6 string `json:"isipv6" bson:"isipv6" validate:"checkyesorno"`
|
||||
IsHubAndSpoke string `json:"ishubandspoke" bson:"ishubandspoke" validate:"checkyesorno"`
|
||||
IsPointToSite string `json:"ispointtosite" bson:"ispointtosite" validate:"checkyesorno"`
|
||||
IsComms string `json:"iscomms" bson:"iscomms" validate:"checkyesorno"`
|
||||
LocalRange string `json:"localrange" bson:"localrange" validate:"omitempty,cidr"`
|
||||
DefaultUDPHolePunch string `json:"defaultudpholepunch" bson:"defaultudpholepunch" validate:"checkyesorno"`
|
||||
|
@ -57,8 +57,8 @@ func (network *Network) SetDefaults() {
|
|||
if network.IsLocal == "" {
|
||||
network.IsLocal = "no"
|
||||
}
|
||||
if network.IsHubAndSpoke == "" {
|
||||
network.IsHubAndSpoke = "no"
|
||||
if network.IsPointToSite == "" {
|
||||
network.IsPointToSite = "no"
|
||||
}
|
||||
if network.IsComms == "" {
|
||||
network.IsComms = "no"
|
||||
|
|
|
@ -184,7 +184,7 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
|
|||
return
|
||||
}
|
||||
}
|
||||
err = wireguard.SetPeers(iface, cfg.Node.Address, cfg.Node.PersistentKeepalive, peerUpdate.Peers)
|
||||
err = wireguard.SetPeers(iface, &cfg.Node, peerUpdate.Peers)
|
||||
if err != nil {
|
||||
ncutils.Log("error syncing wg after peer update: " + err.Error())
|
||||
return
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -33,7 +33,7 @@ func InitializeCommsNetwork() error {
|
|||
var network models.Network
|
||||
network.NetID = COMMS_NETID
|
||||
network.AddressRange = servercfg.GetCommsCIDR()
|
||||
network.IsHubAndSpoke = "yes"
|
||||
network.IsPointToSite = "yes"
|
||||
network.DefaultUDPHolePunch = "yes"
|
||||
network.IsComms = "yes"
|
||||
return logic.CreateNetwork(network)
|
||||
|
|
Loading…
Reference in a new issue