mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-04 16:33:49 +08:00
added time to prevent UDP reset
This commit is contained in:
@@ -282,29 +282,7 @@ func (s *NodeServiceServer) GetExtPeers(ctx context.Context, req *nodepb.Object)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// == private methods ==
|
// == private methods ==
|
||||||
/*
|
|
||||||
func getNewOrLegacyNode(data string) (models.Node, error) {
|
|
||||||
var reqNode, node models.Node
|
|
||||||
var err error
|
|
||||||
|
|
||||||
if err = json.Unmarshal([]byte(data), &reqNode); err != nil {
|
|
||||||
oldID := strings.Split(data, "###") // handle legacy client IDs
|
|
||||||
if len(oldID) == 2 {
|
|
||||||
if node, err = logic.GetNodeByID(reqNode.ID); err != nil {
|
|
||||||
return models.Node{}, err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return models.Node{}, err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
node, err = logic.GetNodeByID(reqNode.ID)
|
|
||||||
if err != nil {
|
|
||||||
return models.Node{}, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return node, nil
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
func getNodeFromRequestData(data string) (models.Node, error) {
|
func getNodeFromRequestData(data string) (models.Node, error) {
|
||||||
var reqNode models.Node
|
var reqNode models.Node
|
||||||
var err error
|
var err error
|
||||||
|
@@ -121,6 +121,13 @@ func MessageQueue(ctx context.Context, network string) {
|
|||||||
var cfg config.ClientConfig
|
var cfg config.ClientConfig
|
||||||
cfg.Network = network
|
cfg.Network = network
|
||||||
ncutils.Log("pulling latest config for " + cfg.Network)
|
ncutils.Log("pulling latest config for " + cfg.Network)
|
||||||
|
var configPath = fmt.Sprintf("%sconfig/netconfig-%s", ncutils.GetNetclientPathSpecific(), network)
|
||||||
|
fileInfo, err := os.Stat(configPath)
|
||||||
|
if err != nil {
|
||||||
|
ncutils.Log("could not stat config file: " + configPath)
|
||||||
|
}
|
||||||
|
// speed up UDP
|
||||||
|
if time.Now().After(fileInfo.ModTime().Add(time.Minute)) {
|
||||||
sleepTime := 2
|
sleepTime := 2
|
||||||
for {
|
for {
|
||||||
_, err := Pull(network, true)
|
_, err := Pull(network, true)
|
||||||
@@ -135,6 +142,7 @@ func MessageQueue(ctx context.Context, network string) {
|
|||||||
time.Sleep(time.Second * time.Duration(sleepTime))
|
time.Sleep(time.Second * time.Duration(sleepTime))
|
||||||
sleepTime = sleepTime * 2
|
sleepTime = sleepTime * 2
|
||||||
}
|
}
|
||||||
|
}
|
||||||
time.Sleep(time.Second << 1)
|
time.Sleep(time.Second << 1)
|
||||||
cfg.ReadConfig()
|
cfg.ReadConfig()
|
||||||
ncutils.Log("daemon started for network: " + network)
|
ncutils.Log("daemon started for network: " + network)
|
||||||
|
@@ -109,9 +109,9 @@ func JoinNetwork(cfg config.ClientConfig, privateKey string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ncutils.IsLinux() {
|
if ncutils.IsLinux() {
|
||||||
_, err := exec.LookPath("resolvconf")
|
_, err := exec.LookPath("resolvectl")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ncutils.PrintLog("resolvconf not present", 2)
|
ncutils.PrintLog("resolvectl not present", 2)
|
||||||
ncutils.PrintLog("unable to configure DNS automatically, disabling automated DNS management", 2)
|
ncutils.PrintLog("unable to configure DNS automatically, disabling automated DNS management", 2)
|
||||||
cfg.Node.DNSOn = "no"
|
cfg.Node.DNSOn = "no"
|
||||||
}
|
}
|
||||||
|
@@ -7,8 +7,8 @@ import (
|
|||||||
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
"golang.zx2c4.com/wireguard/wgctrl/wgtypes"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SetPeerRoutes - sets/removes ip routes for each peer on a network
|
||||||
func SetPeerRoutes(iface string, oldPeers map[string][]net.IPNet, newPeers []wgtypes.PeerConfig) {
|
func SetPeerRoutes(iface string, oldPeers map[string][]net.IPNet, newPeers []wgtypes.PeerConfig) {
|
||||||
|
|
||||||
// traverse through all recieved peers
|
// traverse through all recieved peers
|
||||||
for _, peer := range newPeers {
|
for _, peer := range newPeers {
|
||||||
// if pubkey found in existing peers, check against existing peer
|
// if pubkey found in existing peers, check against existing peer
|
||||||
@@ -29,9 +29,9 @@ func SetPeerRoutes(iface string, oldPeers map[string][]net.IPNet, newPeers []wgt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete(oldPeers, peer.PublicKey.String())
|
delete(oldPeers, peer.PublicKey.String()) // remove peer as it was found and processed
|
||||||
} else {
|
} else {
|
||||||
for _, allowedIP := range peer.AllowedIPs {
|
for _, allowedIP := range peer.AllowedIPs { // add all routes as peer doesn't exist
|
||||||
if err := setRoute(iface, &allowedIP); err != nil {
|
if err := setRoute(iface, &allowedIP); err != nil {
|
||||||
ncutils.PrintLog(err.Error(), 1)
|
ncutils.PrintLog(err.Error(), 1)
|
||||||
}
|
}
|
||||||
@@ -39,7 +39,7 @@ func SetPeerRoutes(iface string, oldPeers map[string][]net.IPNet, newPeers []wgt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// traverse through all existing peers
|
// traverse through all remaining existing peers
|
||||||
for _, allowedIPs := range oldPeers {
|
for _, allowedIPs := range oldPeers {
|
||||||
for _, allowedIP := range allowedIPs {
|
for _, allowedIP := range allowedIPs {
|
||||||
deleteRoute(iface, &allowedIP)
|
deleteRoute(iface, &allowedIP)
|
||||||
|
@@ -18,6 +18,7 @@ func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool {
|
|||||||
newNode.UDPHolePunch != currentNode.UDPHolePunch ||
|
newNode.UDPHolePunch != currentNode.UDPHolePunch ||
|
||||||
newNode.IsPending != currentNode.IsPending ||
|
newNode.IsPending != currentNode.IsPending ||
|
||||||
newNode.PersistentKeepalive != currentNode.PersistentKeepalive ||
|
newNode.PersistentKeepalive != currentNode.PersistentKeepalive ||
|
||||||
|
newNode.DNSOn != currentNode.DNSOn ||
|
||||||
len(newNode.ExcludedAddrs) != len(currentNode.ExcludedAddrs) ||
|
len(newNode.ExcludedAddrs) != len(currentNode.ExcludedAddrs) ||
|
||||||
len(newNode.AllowedIPs) != len(currentNode.AllowedIPs) {
|
len(newNode.AllowedIPs) != len(currentNode.AllowedIPs) {
|
||||||
return true
|
return true
|
||||||
|
@@ -85,8 +85,6 @@ func SetPeers(iface string, keepalive int32, peers []wgtypes.PeerConfig) error {
|
|||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("error setting peer", peer.PublicKey.String())
|
log.Println("error setting peer", peer.PublicKey.String())
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user