added time to prevent UDP reset

This commit is contained in:
0xdcarns
2022-02-03 09:51:16 -05:00
parent a693217feb
commit 06e2603c20
6 changed files with 27 additions and 42 deletions

View File

@@ -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

View File

@@ -121,19 +121,27 @@ 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)
sleepTime := 2 var configPath = fmt.Sprintf("%sconfig/netconfig-%s", ncutils.GetNetclientPathSpecific(), network)
for { fileInfo, err := os.Stat(configPath)
_, err := Pull(network, true) if err != nil {
if err == nil { ncutils.Log("could not stat config file: " + configPath)
break }
// speed up UDP
if time.Now().After(fileInfo.ModTime().Add(time.Minute)) {
sleepTime := 2
for {
_, err := Pull(network, true)
if err == nil {
break
}
if sleepTime > 3600 {
sleepTime = 3600
}
ncutils.Log("failed to pull for network " + network)
ncutils.Log(fmt.Sprintf("waiting %d seconds to retry...", sleepTime))
time.Sleep(time.Second * time.Duration(sleepTime))
sleepTime = sleepTime * 2
} }
if sleepTime > 3600 {
sleepTime = 3600
}
ncutils.Log("failed to pull for network " + network)
ncutils.Log(fmt.Sprintf("waiting %d seconds to retry...", sleepTime))
time.Sleep(time.Second * time.Duration(sleepTime))
sleepTime = sleepTime * 2
} }
time.Sleep(time.Second << 1) time.Sleep(time.Second << 1)
cfg.ReadConfig() cfg.ReadConfig()

View File

@@ -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"
} }

View File

@@ -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)

View File

@@ -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

View File

@@ -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 {
} }
} }