From 097f62b226bb20a07480d7fa1b70ecbb691d2e8b Mon Sep 17 00:00:00 2001 From: ufm Date: Wed, 2 Oct 2024 13:31:09 +0300 Subject: [PATCH] Add broadcast regexp parameter --- cmd/yggmail/main.go | 4 +++- internal/transport/yggdrasil.go | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/cmd/yggmail/main.go b/cmd/yggmail/main.go index fac50ba..f361b02 100644 --- a/cmd/yggmail/main.go +++ b/cmd/yggmail/main.go @@ -55,6 +55,7 @@ func main() { smtpaddr := flag.String("smtp", "localhost:1025", "SMTP listen address") imapaddr := flag.String("imap", "localhost:1143", "IMAP listen address") multicast := flag.Bool("multicast", false, "Connect to Yggdrasil peers on your LAN") + mcastregexp := flag.String("mcastregexp", ".*", "Regexp for multicast") password := flag.Bool("password", false, "Set a new IMAP/SMTP password") flag.Var(&peerAddrs, "peer", "Connect to a specific Yggdrasil static peer (this option can be given more than once)") flag.Parse() @@ -135,6 +136,7 @@ func main() { case (multicast == nil || !*multicast) && len(peerAddrs) == 0: log.Printf("You must specify either -peer, -multicast or both!") os.Exit(0) + } cfg := &config.Config{ @@ -142,7 +144,7 @@ func main() { PrivateKey: sk, } - transport, err := transport.NewYggdrasilTransport(rawlog, sk, pk, peerAddrs, *multicast) + transport, err := transport.NewYggdrasilTransport(rawlog, sk, pk, peerAddrs, *multicast, *mcastregexp) if err != nil { panic(err) } diff --git a/internal/transport/yggdrasil.go b/internal/transport/yggdrasil.go index 7a50bca..59edd74 100644 --- a/internal/transport/yggdrasil.go +++ b/internal/transport/yggdrasil.go @@ -50,7 +50,7 @@ type yggdrasilDial struct { context.CancelFunc } -func NewYggdrasilTransport(log *log.Logger, sk ed25519.PrivateKey, pk ed25519.PublicKey, peers []string, mcast bool) (*YggdrasilTransport, error) { +func NewYggdrasilTransport(log *log.Logger, sk ed25519.PrivateKey, pk ed25519.PublicKey, peers []string, mcast bool, mcastregexp string) (*YggdrasilTransport, error) { yellow := color.New(color.FgYellow).SprintfFunc() glog := gologme.New(log.Writer(), fmt.Sprintf("[ %s ] ", yellow("Yggdrasil")), gologme.LstdFlags|gologme.Lmsgprefix) glog.EnableLevel("warn") @@ -86,7 +86,7 @@ func NewYggdrasilTransport(log *log.Logger, sk ed25519.PrivateKey, pk ed25519.Pu { options := []multicast.SetupOption{ multicast.MulticastInterface{ - Regex: regexp.MustCompile(".*"), + Regex: regexp.MustCompile(mcastregexp), Beacon: mcast, Listen: mcast, },