mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-24 21:08:38 +00:00
fix(networkmonitor): break import dependency with wakunode2 app
This commit is contained in:
parent
91baa232fb
commit
043feacdb2
@ -5,6 +5,7 @@ else:
|
|||||||
|
|
||||||
import
|
import
|
||||||
std/[tables,strutils,times,sequtils],
|
std/[tables,strutils,times,sequtils],
|
||||||
|
stew/results,
|
||||||
stew/shims/net,
|
stew/shims/net,
|
||||||
chronicles,
|
chronicles,
|
||||||
chronicles/topics_registry,
|
chronicles/topics_registry,
|
||||||
@ -14,12 +15,11 @@ import
|
|||||||
eth/keys,
|
eth/keys,
|
||||||
eth/p2p/discoveryv5/enr,
|
eth/p2p/discoveryv5/enr,
|
||||||
libp2p/crypto/crypto,
|
libp2p/crypto/crypto,
|
||||||
|
libp2p/nameresolving/dnsresolver,
|
||||||
metrics,
|
metrics,
|
||||||
metrics/chronos_httpserver,
|
metrics/chronos_httpserver,
|
||||||
presto/[route, server, client]
|
presto/[route, server, client]
|
||||||
|
|
||||||
import
|
import
|
||||||
../../apps/wakunode2/wakunode2,
|
|
||||||
../../waku/v2/node/peer_manager,
|
../../waku/v2/node/peer_manager,
|
||||||
../../waku/v2/waku_node,
|
../../waku/v2/waku_node,
|
||||||
../../waku/v2/waku_core,
|
../../waku/v2/waku_core,
|
||||||
@ -148,7 +148,7 @@ proc populateInfoFromIp(allPeersRef: CustomPeersTableRef,
|
|||||||
var location: NodeLocation
|
var location: NodeLocation
|
||||||
try:
|
try:
|
||||||
# IP-API endpoints are now limited to 45 HTTP requests per minute
|
# IP-API endpoints are now limited to 45 HTTP requests per minute
|
||||||
await sleepAsync(1400)
|
await sleepAsync(1400.millis)
|
||||||
let response = await restClient.ipToLocation(allPeersRef[peer].ip)
|
let response = await restClient.ipToLocation(allPeersRef[peer].ip)
|
||||||
location = response.data
|
location = response.data
|
||||||
except CatchableError:
|
except CatchableError:
|
||||||
@ -193,7 +193,33 @@ proc crawlNetwork(node: WakuNode,
|
|||||||
# we dont run ipMajorityLoop
|
# we dont run ipMajorityLoop
|
||||||
# we dont run revalidateLoop
|
# we dont run revalidateLoop
|
||||||
|
|
||||||
await sleepAsync(crawlInterval)
|
await sleepAsync(crawlInterval.millis)
|
||||||
|
|
||||||
|
proc retrieveDynamicBootstrapNodes(dnsDiscovery: bool, dnsDiscoveryUrl: string, dnsDiscoveryNameServers: seq[ValidIpAddress]): Result[seq[RemotePeerInfo], string] =
|
||||||
|
if dnsDiscovery and dnsDiscoveryUrl != "":
|
||||||
|
# DNS discovery
|
||||||
|
debug "Discovering nodes using Waku DNS discovery", url=dnsDiscoveryUrl
|
||||||
|
|
||||||
|
var nameServers: seq[TransportAddress]
|
||||||
|
for ip in dnsDiscoveryNameServers:
|
||||||
|
nameServers.add(initTAddress(ip, Port(53))) # Assume all servers use port 53
|
||||||
|
|
||||||
|
let dnsResolver = DnsResolver.new(nameServers)
|
||||||
|
|
||||||
|
proc resolver(domain: string): Future[string] {.async, gcsafe.} =
|
||||||
|
trace "resolving", domain=domain
|
||||||
|
let resolved = await dnsResolver.resolveTxt(domain)
|
||||||
|
return resolved[0] # Use only first answer
|
||||||
|
|
||||||
|
var wakuDnsDiscovery = WakuDnsDiscovery.init(dnsDiscoveryUrl, resolver)
|
||||||
|
if wakuDnsDiscovery.isOk():
|
||||||
|
return wakuDnsDiscovery.get().findPeers()
|
||||||
|
.mapErr(proc (e: cstring): string = $e)
|
||||||
|
else:
|
||||||
|
warn "Failed to init Waku DNS discovery"
|
||||||
|
|
||||||
|
debug "No method for retrieving dynamic bootstrap nodes specified."
|
||||||
|
ok(newSeq[RemotePeerInfo]()) # Return an empty seq by default
|
||||||
|
|
||||||
proc getBootstrapFromDiscDns(conf: NetworkMonitorConf): Result[seq[enr.Record], string] =
|
proc getBootstrapFromDiscDns(conf: NetworkMonitorConf): Result[seq[enr.Record], string] =
|
||||||
try:
|
try:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user