mirror of
				https://github.com/yggdrasil-network/yggdrasil-go.git
				synced 2025-11-03 18:55:08 +03:00 
			
		
		
		
	Move add peer loop into Core, refresh it from active config
This commit is contained in:
		
							parent
							
								
									aed3c7e784
								
							
						
					
					
						commit
						87d393bd9f
					
				
					 2 changed files with 33 additions and 27 deletions
				
			
		| 
						 | 
					@ -12,7 +12,6 @@ import (
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
	"time"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"golang.org/x/text/encoding/unicode"
 | 
						"golang.org/x/text/encoding/unicode"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -243,27 +242,6 @@ func main() {
 | 
				
			||||||
	for _, pBoxStr := range cfg.AllowedEncryptionPublicKeys {
 | 
						for _, pBoxStr := range cfg.AllowedEncryptionPublicKeys {
 | 
				
			||||||
		n.core.AddAllowedEncryptionPublicKey(pBoxStr)
 | 
							n.core.AddAllowedEncryptionPublicKey(pBoxStr)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// If any static peers were provided in the configuration above then we should
 | 
					 | 
				
			||||||
	// configure them. The loop ensures that disconnected peers will eventually
 | 
					 | 
				
			||||||
	// be reconnected with.
 | 
					 | 
				
			||||||
	go func() {
 | 
					 | 
				
			||||||
		if len(cfg.Peers) == 0 && len(cfg.InterfacePeers) == 0 {
 | 
					 | 
				
			||||||
			return
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		for {
 | 
					 | 
				
			||||||
			for _, peer := range cfg.Peers {
 | 
					 | 
				
			||||||
				n.core.AddPeer(peer, "")
 | 
					 | 
				
			||||||
				time.Sleep(time.Second)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			for intf, intfpeers := range cfg.InterfacePeers {
 | 
					 | 
				
			||||||
				for _, peer := range intfpeers {
 | 
					 | 
				
			||||||
					n.core.AddPeer(peer, intf)
 | 
					 | 
				
			||||||
					time.Sleep(time.Second)
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			time.Sleep(time.Minute)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}()
 | 
					 | 
				
			||||||
	// The Stop function ensures that the TUN/TAP adapter is correctly shut down
 | 
						// The Stop function ensures that the TUN/TAP adapter is correctly shut down
 | 
				
			||||||
	// before the program exits.
 | 
						// before the program exits.
 | 
				
			||||||
	defer func() {
 | 
						defer func() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,7 @@ import (
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/yggdrasil-network/yggdrasil-go/src/address"
 | 
						"github.com/yggdrasil-network/yggdrasil-go/src/address"
 | 
				
			||||||
	"github.com/yggdrasil-network/yggdrasil-go/src/config"
 | 
						"github.com/yggdrasil-network/yggdrasil-go/src/config"
 | 
				
			||||||
| 
						 | 
					@ -91,12 +92,37 @@ func (c *Core) init() error {
 | 
				
			||||||
	c.router.init(c)
 | 
						c.router.init(c)
 | 
				
			||||||
	c.switchTable.init(c) // TODO move before peers? before router?
 | 
						c.switchTable.init(c) // TODO move before peers? before router?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err := c.tcp.init(c); err != nil {
 | 
						return nil
 | 
				
			||||||
		c.log.Println("Failed to start TCP interface")
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
					// If any static peers were provided in the configuration above then we should
 | 
				
			||||||
 | 
					// configure them. The loop ensures that disconnected peers will eventually
 | 
				
			||||||
 | 
					// be reconnected with.
 | 
				
			||||||
 | 
					func (c *Core) addPeerLoop() {
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
 | 
							// Get the peers from the config - these could change!
 | 
				
			||||||
 | 
							c.configMutex.RLock()
 | 
				
			||||||
 | 
							peers := c.config.Peers
 | 
				
			||||||
 | 
							interfacepeers := c.config.InterfacePeers
 | 
				
			||||||
 | 
							c.configMutex.RUnlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Add peers from the Peers section
 | 
				
			||||||
 | 
							for _, peer := range peers {
 | 
				
			||||||
 | 
								c.AddPeer(peer, "")
 | 
				
			||||||
 | 
								time.Sleep(time.Second)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Add peers from the InterfacePeers section
 | 
				
			||||||
 | 
							for intf, intfpeers := range interfacepeers {
 | 
				
			||||||
 | 
								for _, peer := range intfpeers {
 | 
				
			||||||
 | 
									c.AddPeer(peer, intf)
 | 
				
			||||||
 | 
									time.Sleep(time.Second)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Sit for a while
 | 
				
			||||||
 | 
							time.Sleep(time.Minute)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdateConfig updates the configuration in Core and then signals the
 | 
					// UpdateConfig updates the configuration in Core and then signals the
 | 
				
			||||||
| 
						 | 
					@ -245,6 +271,8 @@ func (c *Core) Start(nc *config.NodeConfig, log *log.Logger) error {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						go c.addPeerLoop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	c.log.Println("Startup complete")
 | 
						c.log.Println("Startup complete")
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue