mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-04 06:53:12 +00:00
fix: dnsresolver (#3440)
Properly transmit the dns name server list parameter to the peer manager
This commit is contained in:
parent
4f181abe0d
commit
5132510bc6
@ -96,7 +96,6 @@ when isMainModule:
|
|||||||
wakuConf.restPort = conf.restPort
|
wakuConf.restPort = conf.restPort
|
||||||
wakuConf.restAllowOrigin = conf.restAllowOrigin
|
wakuConf.restAllowOrigin = conf.restAllowOrigin
|
||||||
|
|
||||||
wakuConf.dnsAddrs = true
|
|
||||||
wakuConf.dnsAddrsNameServers = @[parseIpAddress("8.8.8.8"), parseIpAddress("1.1.1.1")]
|
wakuConf.dnsAddrsNameServers = @[parseIpAddress("8.8.8.8"), parseIpAddress("1.1.1.1")]
|
||||||
|
|
||||||
wakuConf.shards = @[conf.shard]
|
wakuConf.shards = @[conf.shard]
|
||||||
|
|||||||
@ -79,6 +79,7 @@ proc withNetworkConfigurationDetails*(
|
|||||||
wssEnabled: bool = false,
|
wssEnabled: bool = false,
|
||||||
wakuFlags = none(CapabilitiesBitfield),
|
wakuFlags = none(CapabilitiesBitfield),
|
||||||
dns4DomainName = none(string),
|
dns4DomainName = none(string),
|
||||||
|
dnsNameServers = @[parseIpAddress("1.1.1.1"), parseIpAddress("1.0.0.1")],
|
||||||
): WakuNodeBuilderResult {.
|
): WakuNodeBuilderResult {.
|
||||||
deprecated: "use 'builder.withNetworkConfiguration()' instead"
|
deprecated: "use 'builder.withNetworkConfiguration()' instead"
|
||||||
.} =
|
.} =
|
||||||
@ -94,6 +95,7 @@ proc withNetworkConfigurationDetails*(
|
|||||||
wssEnabled = wssEnabled,
|
wssEnabled = wssEnabled,
|
||||||
wakuFlags = wakuFlags,
|
wakuFlags = wakuFlags,
|
||||||
dns4DomainName = dns4DomainName,
|
dns4DomainName = dns4DomainName,
|
||||||
|
dnsNameServers = dnsNameServers,
|
||||||
)
|
)
|
||||||
builder.withNetworkConfiguration(netConfig)
|
builder.withNetworkConfiguration(netConfig)
|
||||||
ok()
|
ok()
|
||||||
@ -166,6 +168,10 @@ proc build*(builder: WakuNodeBuilder): Result[WakuNode, string] =
|
|||||||
if builder.netConfig.isNone():
|
if builder.netConfig.isNone():
|
||||||
return err("network configuration is required")
|
return err("network configuration is required")
|
||||||
|
|
||||||
|
let netConfig = builder.netConfig.get()
|
||||||
|
if netConfig.dnsNameServers.len == 0:
|
||||||
|
return err("DNS name servers are required for WakuNode")
|
||||||
|
|
||||||
if builder.record.isNone():
|
if builder.record.isNone():
|
||||||
return err("node record is required")
|
return err("node record is required")
|
||||||
|
|
||||||
@ -196,8 +202,6 @@ proc build*(builder: WakuNodeBuilder): Result[WakuNode, string] =
|
|||||||
except CatchableError:
|
except CatchableError:
|
||||||
return err("failed to create switch: " & getCurrentExceptionMsg())
|
return err("failed to create switch: " & getCurrentExceptionMsg())
|
||||||
|
|
||||||
let netConfig = builder.netConfig.get()
|
|
||||||
|
|
||||||
let peerManager = PeerManager.new(
|
let peerManager = PeerManager.new(
|
||||||
switch = switch,
|
switch = switch,
|
||||||
storage = builder.peerStorage.get(nil),
|
storage = builder.peerStorage.get(nil),
|
||||||
|
|||||||
@ -21,9 +21,6 @@ proc withEnabled*(b: var DnsDiscoveryConfBuilder, enabled: bool) =
|
|||||||
proc withEnrTreeUrl*(b: var DnsDiscoveryConfBuilder, enrTreeUrl: string) =
|
proc withEnrTreeUrl*(b: var DnsDiscoveryConfBuilder, enrTreeUrl: string) =
|
||||||
b.enrTreeUrl = some(enrTreeUrl)
|
b.enrTreeUrl = some(enrTreeUrl)
|
||||||
|
|
||||||
proc withNameServers*(b: var DnsDiscoveryConfBuilder, nameServers: seq[IpAddress]) =
|
|
||||||
b.nameServers = concat(b.nameServers, nameServers)
|
|
||||||
|
|
||||||
proc build*(b: DnsDiscoveryConfBuilder): Result[Option[DnsDiscoveryConf], string] =
|
proc build*(b: DnsDiscoveryConfBuilder): Result[Option[DnsDiscoveryConf], string] =
|
||||||
if not b.enabled.get(false):
|
if not b.enabled.get(false):
|
||||||
return ok(none(DnsDiscoveryConf))
|
return ok(none(DnsDiscoveryConf))
|
||||||
|
|||||||
@ -107,7 +107,6 @@ type WakuConfBuilder* = object
|
|||||||
extMultiAddrs: seq[string]
|
extMultiAddrs: seq[string]
|
||||||
extMultiAddrsOnly: Option[bool]
|
extMultiAddrsOnly: Option[bool]
|
||||||
|
|
||||||
dnsAddrs: Option[bool]
|
|
||||||
dnsAddrsNameServers: seq[IpAddress]
|
dnsAddrsNameServers: seq[IpAddress]
|
||||||
|
|
||||||
peerPersistence: Option[bool]
|
peerPersistence: Option[bool]
|
||||||
@ -193,9 +192,6 @@ proc withRemotePeerExchangeNode*(
|
|||||||
) =
|
) =
|
||||||
b.remotePeerExchangeNode = some(remotePeerExchangeNode)
|
b.remotePeerExchangeNode = some(remotePeerExchangeNode)
|
||||||
|
|
||||||
proc withDnsAddrs*(b: var WakuConfBuilder, dnsAddrs: bool) =
|
|
||||||
b.dnsAddrs = some(dnsAddrs)
|
|
||||||
|
|
||||||
proc withPeerPersistence*(b: var WakuConfBuilder, peerPersistence: bool) =
|
proc withPeerPersistence*(b: var WakuConfBuilder, peerPersistence: bool) =
|
||||||
b.peerPersistence = some(peerPersistence)
|
b.peerPersistence = some(peerPersistence)
|
||||||
|
|
||||||
@ -208,7 +204,7 @@ proc withMaxConnections*(b: var WakuConfBuilder, maxConnections: int) =
|
|||||||
proc withDnsAddrsNameServers*(
|
proc withDnsAddrsNameServers*(
|
||||||
b: var WakuConfBuilder, dnsAddrsNameServers: seq[IpAddress]
|
b: var WakuConfBuilder, dnsAddrsNameServers: seq[IpAddress]
|
||||||
) =
|
) =
|
||||||
b.dnsAddrsNameServers = concat(b.dnsAddrsNameServers, dnsAddrsNameServers)
|
b.dnsAddrsNameServers.insert(dnsAddrsNameServers)
|
||||||
|
|
||||||
proc withLogLevel*(b: var WakuConfBuilder, logLevel: logging.LogLevel) =
|
proc withLogLevel*(b: var WakuConfBuilder, logLevel: logging.LogLevel) =
|
||||||
b.logLevel = some(logLevel)
|
b.logLevel = some(logLevel)
|
||||||
@ -541,13 +537,6 @@ proc build*(
|
|||||||
warn "Whether to only announce external multiaddresses is not specified, defaulting to false"
|
warn "Whether to only announce external multiaddresses is not specified, defaulting to false"
|
||||||
false
|
false
|
||||||
|
|
||||||
let dnsAddrs =
|
|
||||||
if builder.dnsAddrs.isSome():
|
|
||||||
builder.dnsAddrs.get()
|
|
||||||
else:
|
|
||||||
warn "Whether to resolve DNS multiaddresses was not specified, defaulting to false."
|
|
||||||
false
|
|
||||||
|
|
||||||
let dnsAddrsNameServers =
|
let dnsAddrsNameServers =
|
||||||
if builder.dnsAddrsNameServers.len != 0:
|
if builder.dnsAddrsNameServers.len != 0:
|
||||||
builder.dnsAddrsNameServers
|
builder.dnsAddrsNameServers
|
||||||
@ -627,7 +616,6 @@ proc build*(
|
|||||||
),
|
),
|
||||||
portsShift: portsShift,
|
portsShift: portsShift,
|
||||||
webSocketConf: webSocketConf,
|
webSocketConf: webSocketConf,
|
||||||
dnsAddrs: dnsAddrs,
|
|
||||||
dnsAddrsNameServers: dnsAddrsNameServers,
|
dnsAddrsNameServers: dnsAddrsNameServers,
|
||||||
peerPersistence: peerPersistence,
|
peerPersistence: peerPersistence,
|
||||||
peerStoreCapacity: builder.peerStoreCapacity,
|
peerStoreCapacity: builder.peerStoreCapacity,
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import chronicles, std/[net, options], results
|
import chronicles, std/[net, options], results
|
||||||
import ../network_conf
|
import ../networks_config
|
||||||
|
|
||||||
logScope:
|
logScope:
|
||||||
topics = "waku conf builder websocket"
|
topics = "waku conf builder websocket"
|
||||||
|
|||||||
@ -245,12 +245,6 @@ type WakuNodeConf* = object
|
|||||||
.}: bool
|
.}: bool
|
||||||
|
|
||||||
## DNS addrs config
|
## DNS addrs config
|
||||||
dnsAddrs* {.
|
|
||||||
desc: "Enable resolution of `dnsaddr`, `dns4` or `dns6` multiaddrs",
|
|
||||||
defaultValue: true,
|
|
||||||
name: "dns-addrs"
|
|
||||||
.}: bool
|
|
||||||
|
|
||||||
dnsAddrsNameServers* {.
|
dnsAddrsNameServers* {.
|
||||||
desc:
|
desc:
|
||||||
"DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated.",
|
"DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated.",
|
||||||
@ -567,12 +561,6 @@ with the drawback of consuming some more bandwidth.""",
|
|||||||
name: "dns-discovery-url"
|
name: "dns-discovery-url"
|
||||||
.}: string
|
.}: string
|
||||||
|
|
||||||
dnsDiscoveryNameServers* {.
|
|
||||||
desc: "DNS name server IPs to query. Argument may be repeated.",
|
|
||||||
defaultValue: @[parseIpAddress("1.1.1.1"), parseIpAddress("1.0.0.1")],
|
|
||||||
name: "dns-discovery-name-server"
|
|
||||||
.}: seq[IpAddress]
|
|
||||||
|
|
||||||
## Discovery v5 config
|
## Discovery v5 config
|
||||||
discv5Discovery* {.
|
discv5Discovery* {.
|
||||||
desc: "Enable discovering nodes via Node Discovery v5.",
|
desc: "Enable discovering nodes via Node Discovery v5.",
|
||||||
@ -962,7 +950,6 @@ proc toWakuConf*(n: WakuNodeConf): ConfResult[WakuConf] =
|
|||||||
b.withPeerStoreCapacity(n.peerStoreCapacity.get())
|
b.withPeerStoreCapacity(n.peerStoreCapacity.get())
|
||||||
|
|
||||||
b.withPeerPersistence(n.peerPersistence)
|
b.withPeerPersistence(n.peerPersistence)
|
||||||
b.withDnsAddrs(n.dnsAddrs)
|
|
||||||
b.withDnsAddrsNameServers(n.dnsAddrsNameServers)
|
b.withDnsAddrsNameServers(n.dnsAddrsNameServers)
|
||||||
b.withDns4DomainName(n.dns4DomainName)
|
b.withDns4DomainName(n.dns4DomainName)
|
||||||
b.withCircuitRelayClient(n.isRelayClient)
|
b.withCircuitRelayClient(n.isRelayClient)
|
||||||
@ -1024,7 +1011,6 @@ proc toWakuConf*(n: WakuNodeConf): ConfResult[WakuConf] =
|
|||||||
|
|
||||||
b.dnsDiscoveryConf.withEnabled(n.dnsDiscovery)
|
b.dnsDiscoveryConf.withEnabled(n.dnsDiscovery)
|
||||||
b.dnsDiscoveryConf.withEnrTreeUrl(n.dnsDiscoveryUrl)
|
b.dnsDiscoveryConf.withEnrTreeUrl(n.dnsDiscoveryUrl)
|
||||||
b.dnsDiscoveryConf.withNameServers(n.dnsDiscoveryNameServers)
|
|
||||||
|
|
||||||
if n.discv5Discovery.isSome():
|
if n.discv5Discovery.isSome():
|
||||||
b.discv5Conf.withEnabled(n.discv5Discovery.get())
|
b.discv5Conf.withEnabled(n.discv5Discovery.get())
|
||||||
|
|||||||
@ -12,7 +12,7 @@ import
|
|||||||
../waku_enr,
|
../waku_enr,
|
||||||
../waku_core,
|
../waku_core,
|
||||||
./waku_conf,
|
./waku_conf,
|
||||||
./network_conf
|
./networks_config
|
||||||
|
|
||||||
proc enrConfiguration*(
|
proc enrConfiguration*(
|
||||||
conf: WakuConf, netConfig: NetConfig
|
conf: WakuConf, netConfig: NetConfig
|
||||||
@ -139,6 +139,7 @@ proc networkConfiguration*(
|
|||||||
dns4DomainName = conf.dns4DomainName,
|
dns4DomainName = conf.dns4DomainName,
|
||||||
discv5UdpPort = discv5UdpPort,
|
discv5UdpPort = discv5UdpPort,
|
||||||
wakuFlags = some(wakuFlags),
|
wakuFlags = some(wakuFlags),
|
||||||
|
dnsNameServers = dnsAddrsNameServers,
|
||||||
)
|
)
|
||||||
|
|
||||||
return netConfigRes
|
return netConfigRes
|
||||||
|
|||||||
@ -1,34 +0,0 @@
|
|||||||
import std/[net, options, strutils]
|
|
||||||
import libp2p/multiaddress
|
|
||||||
|
|
||||||
type WebSocketSecureConf* {.requiresInit.} = object
|
|
||||||
keyPath*: string
|
|
||||||
certPath*: string
|
|
||||||
|
|
||||||
type WebSocketConf* = object
|
|
||||||
port*: Port
|
|
||||||
secureConf*: Option[WebSocketSecureConf]
|
|
||||||
|
|
||||||
type NetworkConf* = object
|
|
||||||
natStrategy*: string # TODO: make enum
|
|
||||||
p2pTcpPort*: Port
|
|
||||||
dns4DomainName*: Option[string]
|
|
||||||
p2pListenAddress*: IpAddress
|
|
||||||
extMultiAddrs*: seq[MultiAddress]
|
|
||||||
extMultiAddrsOnly*: bool
|
|
||||||
webSocketConf*: Option[WebSocketConf]
|
|
||||||
|
|
||||||
proc validateNoEmptyStrings(networkConf: NetworkConf): Result[void, string] =
|
|
||||||
if networkConf.dns4DomainName.isSome() and
|
|
||||||
isEmptyOrWhiteSpace(networkConf.dns4DomainName.get().string):
|
|
||||||
return err("dns4DomainName is an empty string, set it to none(string) instead")
|
|
||||||
|
|
||||||
if networkConf.webSocketConf.isSome() and
|
|
||||||
networkConf.webSocketConf.get().secureConf.isSome():
|
|
||||||
let secureConf = networkConf.webSocketConf.get().secureConf.get()
|
|
||||||
if isEmptyOrWhiteSpace(secureConf.keyPath):
|
|
||||||
return err("websocket.secureConf.keyPath is an empty string")
|
|
||||||
if isEmptyOrWhiteSpace(secureConf.certPath):
|
|
||||||
return err("websocket.secureConf.certPath is an empty string")
|
|
||||||
|
|
||||||
return ok()
|
|
||||||
@ -1,6 +1,14 @@
|
|||||||
{.push raises: [].}
|
{.push raises: [].}
|
||||||
|
|
||||||
import stint
|
import stint, std/[nativesockets, options]
|
||||||
|
|
||||||
|
type WebSocketSecureConf* {.requiresInit.} = object
|
||||||
|
keyPath*: string
|
||||||
|
certPath*: string
|
||||||
|
|
||||||
|
type WebSocketConf* = object
|
||||||
|
port*: Port
|
||||||
|
secureConf*: Option[WebSocketSecureConf]
|
||||||
|
|
||||||
# TODO: Rename this type to match file name
|
# TODO: Rename this type to match file name
|
||||||
|
|
||||||
|
|||||||
@ -67,17 +67,6 @@ proc initNode(
|
|||||||
## file. Optionally include persistent peer storage.
|
## file. Optionally include persistent peer storage.
|
||||||
## No protocols are mounted yet.
|
## No protocols are mounted yet.
|
||||||
|
|
||||||
var dnsResolver: DnsResolver
|
|
||||||
if conf.dnsAddrs:
|
|
||||||
# Support for DNS multiaddrs
|
|
||||||
var nameServers: seq[TransportAddress]
|
|
||||||
for ip in conf.dnsAddrsNameServers:
|
|
||||||
nameServers.add(initTAddress(ip, Port(53))) # Assume all servers use port 53
|
|
||||||
|
|
||||||
dnsResolver = DnsResolver.new(nameServers)
|
|
||||||
|
|
||||||
var node: WakuNode
|
|
||||||
|
|
||||||
let pStorage =
|
let pStorage =
|
||||||
if peerStore.isNone():
|
if peerStore.isNone():
|
||||||
nil
|
nil
|
||||||
@ -91,6 +80,9 @@ proc initNode(
|
|||||||
else:
|
else:
|
||||||
(none(string), none(string))
|
(none(string), none(string))
|
||||||
|
|
||||||
|
let nameResolver =
|
||||||
|
DnsResolver.new(conf.dnsAddrsNameServers.mapIt(initTAddress(it, Port(53))))
|
||||||
|
|
||||||
# Build waku node instance
|
# Build waku node instance
|
||||||
var builder = WakuNodeBuilder.init()
|
var builder = WakuNodeBuilder.init()
|
||||||
builder.withRng(rng)
|
builder.withRng(rng)
|
||||||
@ -102,7 +94,7 @@ proc initNode(
|
|||||||
maxConnections = some(conf.maxConnections.int),
|
maxConnections = some(conf.maxConnections.int),
|
||||||
secureKey = secureKey,
|
secureKey = secureKey,
|
||||||
secureCert = secureCert,
|
secureCert = secureCert,
|
||||||
nameResolver = dnsResolver,
|
nameResolver = nameResolver,
|
||||||
sendSignedPeerRecord = conf.relayPeerExchange,
|
sendSignedPeerRecord = conf.relayPeerExchange,
|
||||||
# We send our own signed peer record when peer exchange enabled
|
# We send our own signed peer record when peer exchange enabled
|
||||||
agentString = some(conf.agentString),
|
agentString = some(conf.agentString),
|
||||||
@ -132,7 +124,7 @@ proc initNode(
|
|||||||
builder.withRateLimit(conf.rateLimits)
|
builder.withRateLimit(conf.rateLimits)
|
||||||
builder.withCircuitRelay(relay)
|
builder.withCircuitRelay(relay)
|
||||||
|
|
||||||
node =
|
let node =
|
||||||
?builder.build().mapErr(
|
?builder.build().mapErr(
|
||||||
proc(err: string): string =
|
proc(err: string): string =
|
||||||
"failed to create waku node instance: " & err
|
"failed to create waku node instance: " & err
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import
|
|||||||
../node/waku_metrics,
|
../node/waku_metrics,
|
||||||
../common/logging,
|
../common/logging,
|
||||||
../waku_enr/capabilities,
|
../waku_enr/capabilities,
|
||||||
./network_conf
|
./networks_config
|
||||||
|
|
||||||
export RlnRelayConf, RlnRelayCreds, RestServerConf, Discv5Conf, MetricsServerConf
|
export RlnRelayConf, RlnRelayCreds, RestServerConf, Discv5Conf, MetricsServerConf
|
||||||
|
|
||||||
@ -95,7 +95,6 @@ type WakuConf* {.requiresInit.} = ref object
|
|||||||
webSocketConf*: Option[WebSocketConf]
|
webSocketConf*: Option[WebSocketConf]
|
||||||
|
|
||||||
portsShift*: uint16
|
portsShift*: uint16
|
||||||
dnsAddrs*: bool
|
|
||||||
dnsAddrsNameServers*: seq[IpAddress]
|
dnsAddrsNameServers*: seq[IpAddress]
|
||||||
networkConf*: NetworkConfig
|
networkConf*: NetworkConfig
|
||||||
wakuFlags*: CapabilitiesBitfield
|
wakuFlags*: CapabilitiesBitfield
|
||||||
|
|||||||
@ -78,7 +78,7 @@ proc init*(
|
|||||||
discv5UdpPort = none(Port),
|
discv5UdpPort = none(Port),
|
||||||
clusterId: uint16 = 0,
|
clusterId: uint16 = 0,
|
||||||
wakuFlags = none(CapabilitiesBitfield),
|
wakuFlags = none(CapabilitiesBitfield),
|
||||||
dnsNameServers = newSeq[IpAddress](),
|
dnsNameServers = @[parseIpAddress("1.1.1.1"), parseIpAddress("1.0.0.1")],
|
||||||
): NetConfigResult =
|
): NetConfigResult =
|
||||||
## Initialize and validate waku node network configuration
|
## Initialize and validate waku node network configuration
|
||||||
|
|
||||||
|
|||||||
@ -1048,7 +1048,7 @@ proc new*(
|
|||||||
maxFailedAttempts = MaxFailedAttempts,
|
maxFailedAttempts = MaxFailedAttempts,
|
||||||
colocationLimit = DefaultColocationLimit,
|
colocationLimit = DefaultColocationLimit,
|
||||||
shardedPeerManagement = false,
|
shardedPeerManagement = false,
|
||||||
dnsNameServers = newSeq[IpAddress](),
|
dnsNameServers = @[parseIpAddress("1.1.1.1"), parseIpAddress("1.0.0.1")],
|
||||||
): PeerManager {.gcsafe.} =
|
): PeerManager {.gcsafe.} =
|
||||||
let capacity = switch.peerStore.capacity
|
let capacity = switch.peerStore.capacity
|
||||||
let maxConnections = switch.connManager.inSema.size
|
let maxConnections = switch.connManager.inSema.size
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user