From 50ca0a837b619f68a40354eb8fd0d01897ef33fa Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Wed, 19 Oct 2022 10:48:18 +0100 Subject: [PATCH] Fix Yggdrasil v0.4.5 build --- internal/transport/yggdrasil.go | 60 ++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/internal/transport/yggdrasil.go b/internal/transport/yggdrasil.go index 17b1aae..d87ba42 100644 --- a/internal/transport/yggdrasil.go +++ b/internal/transport/yggdrasil.go @@ -14,12 +14,12 @@ import ( "fmt" "log" "net" + "regexp" iwt "github.com/Arceliar/ironwood/types" "github.com/fatih/color" gologme "github.com/gologme/log" "github.com/neilalexander/utp" - "github.com/yggdrasil-network/yggdrasil-go/src/config" "github.com/yggdrasil-network/yggdrasil-go/src/core" "github.com/yggdrasil-network/yggdrasil-go/src/multicast" ) @@ -29,42 +29,46 @@ type YggdrasilTransport struct { } func NewYggdrasilTransport(log *log.Logger, sk ed25519.PrivateKey, pk ed25519.PublicKey, peers []string, mcast bool) (*YggdrasilTransport, error) { - config := &config.NodeConfig{ - PublicKey: hex.EncodeToString(pk), - PrivateKey: hex.EncodeToString(sk), - Peers: peers, - MulticastInterfaces: []config.MulticastInterfaceConfig{ - { - Regex: ".*", - Beacon: true, - Listen: true, - }, - }, - NodeInfo: map[string]interface{}{ - "name": hex.EncodeToString(pk) + "@yggmail", - }, - NodeInfoPrivacy: true, - } yellow := color.New(color.FgYellow).SprintfFunc() glog := gologme.New(log.Writer(), fmt.Sprintf("[ %s ] ", yellow("Yggdrasil")), gologme.LstdFlags|gologme.Lmsgprefix) glog.EnableLevel("warn") glog.EnableLevel("error") glog.EnableLevel("info") - core := &core.Core{} - if err := core.Start(config, glog); err != nil { - return nil, fmt.Errorf("core.Start: %w", err) - } - if mcast { - multicast := &multicast.Multicast{} - if err := multicast.Init(core, config, glog, nil); err != nil { - return nil, fmt.Errorf("multicast.Init: %w", err) + var ygg *core.Core + var err error + + // Setup the Yggdrasil node itself. + { + options := []core.SetupOption{ + core.NodeInfo(map[string]interface{}{ + "name": hex.EncodeToString(pk) + "@yggmail", + }), + core.NodeInfoPrivacy(true), } - if err := multicast.Start(); err != nil { - return nil, fmt.Errorf("multicast.Start: %w", err) + for _, peer := range peers { + options = append(options, core.Peer{URI: peer}) + } + if ygg, err = core.New(sk[:], glog, options...); err != nil { + panic(err) } } - us, err := utp.NewSocketFromPacketConnNoClose(core) + + // Setup the multicast module. + { + options := []multicast.SetupOption{ + multicast.MulticastInterface{ + Regex: regexp.MustCompile(".*"), + Beacon: true, + Listen: true, + }, + } + if _, err = multicast.New(ygg, glog, options...); err != nil { + panic(err) + } + } + + us, err := utp.NewSocketFromPacketConnNoClose(ygg) if err != nil { return nil, fmt.Errorf("utp.NewSocketFromPacketConnNoClose: %w", err) }