From 09723e3b9aeae7ffd10d656ef975724438cdcbf4 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Tue, 3 Jan 2023 10:14:59 -0400 Subject: [PATCH] fix: set nameserver via config --- node/status_node_services.go | 1 + params/config.go | 3 +++ wakuv2/config.go | 1 + wakuv2/waku.go | 15 +++++++++++++-- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/node/status_node_services.go b/node/status_node_services.go index b91acce53..c3111b661 100644 --- a/node/status_node_services.go +++ b/node/status_node_services.go @@ -294,6 +294,7 @@ func (b *StatusNode) wakuV2Service(nodeConfig *params.NodeConfig) (*wakuv2.Waku, StoreSeconds: nodeConfig.WakuV2Config.StoreSeconds, DiscoveryLimit: nodeConfig.WakuV2Config.DiscoveryLimit, DiscV5BootstrapNodes: nodeConfig.ClusterConfig.DiscV5BootstrapNodes, + Nameserver: nodeConfig.WakuV2Config.Nameserver, EnableDiscV5: nodeConfig.WakuV2Config.EnableDiscV5, UDPPort: nodeConfig.WakuV2Config.UDPPort, AutoUpdate: nodeConfig.WakuV2Config.AutoUpdate, diff --git a/params/config.go b/params/config.go index a004e8789..b17de5860 100644 --- a/params/config.go +++ b/params/config.go @@ -192,6 +192,9 @@ type WakuV2Config struct { // PeerExchange determines whether WakuV2 Peer Exchange is enabled or not PeerExchange bool + // Nameserver determines which nameserver will be used for dns discovery + Nameserver string + // EnableDiscV5 indicates if DiscoveryV5 is enabled or not EnableDiscV5 bool diff --git a/wakuv2/config.go b/wakuv2/config.go index f2567c483..3dc80e515 100644 --- a/wakuv2/config.go +++ b/wakuv2/config.go @@ -34,6 +34,7 @@ type Config struct { WakuNodes []string `toml:",omitempty"` Rendezvous bool `toml:",omitempty"` DiscV5BootstrapNodes []string `toml:",omitempty"` + Nameserver string `toml:",omitempty"` EnableDiscV5 bool `toml:",omitempty"` DiscoveryLimit int `toml:",omitempty"` AutoUpdate bool `toml:",omitempty"` diff --git a/wakuv2/waku.go b/wakuv2/waku.go index 0289485af..1aef82764 100644 --- a/wakuv2/waku.go +++ b/wakuv2/waku.go @@ -89,6 +89,7 @@ type settings struct { EnableConfirmations bool // Enable sending message confirmations PeerExchange bool // Enable peer exchange DiscoveryLimit int // Indicates the number of nodes to discover + Nameserver string // Optional nameserver to use for dns discovery } // Waku represents a dark communication interface through the Ethereum @@ -197,6 +198,7 @@ func New(nodeKey string, fleet string, cfg *Config, logger *zap.Logger, appDB *s MinPeersForRelay: cfg.MinPeersForRelay, PeerExchange: cfg.PeerExchange, DiscoveryLimit: cfg.DiscoveryLimit, + Nameserver: cfg.Nameserver, } waku.filters = common.NewFilters() @@ -400,8 +402,16 @@ func (w *Waku) dnsDiscover(ctx context.Context, enrtreeAddress string, apply fnA discNodes, ok := w.dnsAddressCache[enrtreeAddress] if !ok { - // NOTE: Temporary fix for DNS resolution on android/ios, as gomobile does not support it - discoveredNodes, err := dnsdisc.RetrieveNodes(ctx, enrtreeAddress, dnsdisc.WithNameserver("1.1.1.1")) + w.settingsMu.RLock() + nameserver := w.settings.Nameserver + w.settingsMu.RUnlock() + + var opts []dnsdisc.DnsDiscoveryOption + if nameserver != "" { + opts = append(opts, dnsdisc.WithNameserver(nameserver)) + } + + discoveredNodes, err := dnsdisc.RetrieveNodes(ctx, enrtreeAddress, opts...) if err != nil { w.logger.Warn("dns discovery error ", zap.Error(err)) return @@ -434,6 +444,7 @@ func (w *Waku) addWakuV2Peers(ctx context.Context, cfg *Config) error { identifyWg := &sync.WaitGroup{} identifyWg.Add(len(cfg.WakuNodes)) for _, addrString := range cfg.WakuNodes { + addrString := addrString if strings.HasPrefix(addrString, "enrtree://") { // Use DNS Discovery go func() {