mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-26 08:21:36 +00:00
Move add peer loop into Core, refresh it from active config
This commit is contained in:
parent
aed3c7e784
commit
87d393bd9f
@ -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
|
|
||||||
|
// 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)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
// 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…
Reference in New Issue
Block a user