autonat & config default

This commit is contained in:
Simon-Pierre 2026-05-20 09:50:45 -04:00
parent cae051ba6f
commit 7f98fd1fe9
No known key found for this signature in database
GPG Key ID: C9458A8CB1852951
3 changed files with 28 additions and 65 deletions

View File

@ -28,12 +28,16 @@ import
protobuf/minprotobuf,
extended_peer_record,
nameresolving/dnsresolver,
protocols/connectivity/relay/client,
services/autorelayservice,
services/hpservice,
]
import
waku/[
waku_core,
waku_enr,
discovery/waku_kademlia,
discovery/autonat_service,
waku_node,
node/waku_metrics,
node/peer_manager,
@ -314,6 +318,8 @@ proc processInput(rfd: AsyncFD, rng: crypto.Rng) {.async.} =
error "failed to create enr record", error
quit(QuitFailure)
let circuitRelay = RelayClient.new()
let node = block:
var builder = WakuNodeBuilder.init()
builder.withNodeKey(nodeKey)
@ -330,12 +336,30 @@ proc processInput(rfd: AsyncFD, rng: crypto.Rng) {.async.} =
quit(QuitFailure)
let nameResolver =
DnsResolver.new(conf.dnsAddrsNameServers.mapIt(initTAddress(it, Port(53))))
DnsResolver.new(netConf.dnsNameServers.mapIt(initTAddress(it, Port(53))))
builder.withNetworkConfiguration(netConf)
builder.withSwitchConfiguration(nameResolver = nameResolver)
builder.withCircuitRelay(circuitRelay)
builder.build().tryGet()
proc onReservation(addresses: seq[MultiAddress]) {.gcsafe, raises: [].} =
info "circuit relay handler new reserve event",
addrs_before = $(node.announcedAddresses), addrs = $addresses
node.announcedAddresses.setLen(0) ## remove previous addresses
node.announcedAddresses.add(addresses)
info "chat2disco node announced addresses updated",
announcedAddresses = node.announcedAddresses
let
autonatService = getAutonatService(rng)
autoRelayService = AutoRelayService.new(2, circuitRelay, onReservation, rng)
holePunchService = HPService.new(autonatService, autoRelayService)
node.switch.services = @[Service(holePunchService)]
if conf.relay:
(await node.mountRelay()).isOkOr:
error "failed to mount relay", error

View File

@ -15,7 +15,7 @@ const defaultMetricsAddress* = parseIpAddress("127.0.0.1")
type Chat2DiscoConf* = object ## General node config
logLevel* {.
desc: "Sets the log level.", defaultValue: LogLevel.INFO, name: "log-level"
desc: "Sets the log level.", defaultValue: LogLevel.DEBUG, name: "log-level"
.}: LogLevel
nodekey* {.desc: "P2P node private key as 64 char hex string.", name: "nodekey".}:
@ -47,26 +47,6 @@ type Chat2DiscoConf* = object ## General node config
desc: "Enable relay protocol: true|false", defaultValue: true, name: "relay"
.}: bool
keepAlive* {.
desc: "Enable keep-alive for idle connections: true|false",
defaultValue: false,
name: "keep-alive"
.}: bool
clusterId* {.
desc:
"Cluster id that the node is running in. Node in a different cluster id is disconnected.",
defaultValue: 0,
name: "cluster-id"
.}: uint16
shards* {.
desc:
"Shards index to subscribe to [0..NUM_SHARDS_IN_NETWORK-1]. Argument may be repeated.",
defaultValue: @[uint16(0)],
name: "shard"
.}: seq[uint16]
## Metrics config
metricsServer* {.
desc: "Enable the metrics server: true|false",
@ -92,41 +72,6 @@ type Chat2DiscoConf* = object ## General node config
name: "metrics-logging"
.}: bool
## Chat2 configuration
contentTopic* {.
desc: "Content topic for chat messages.",
defaultValue: "/chat2disco/1/default/proto",
name: "content-topic"
.}: string
## Websocket Configuration
websocketSupport* {.
desc: "Enable websocket: true|false",
defaultValue: false,
name: "websocket-support"
.}: bool
websocketPort* {.
desc: "WebSocket listening port.", defaultValue: 8000, name: "websocket-port"
.}: Port
websocketSecureSupport* {.
desc: "WebSocket Secure Support.",
defaultValue: false,
name: "websocket-secure-support"
.}: bool
## DNS Resolution config
dnsAddrsNameServers* {.
desc:
"DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated.",
defaultValue: @[
IpAddress(family: IpAddressFamily.IPv4, address_v4: [1'u8, 1, 1, 1]),
IpAddress(family: IpAddressFamily.IPv4, address_v4: [1'u8, 0, 0, 1]),
],
name: "dns-addrs-name-server"
.}: seq[IpAddress]
## Kademlia Discovery config
kadBootstrapNodes* {.
desc:

View File

@ -82,11 +82,6 @@ proc newWakuSwitch*(
circuitRelay: Relay,
maxNumRelays: int = 5,
): Switch {.raises: [Defect, IOError, LPError].} =
let
autonatService = AutonatService.new(AutonatClient(), rng)
autoRelayService = AutoRelayService.new(maxNumRelays, RelayClient.new(), nil, rng)
hpService: Service = HPService.new(autonatService, autoRelayService)
var b = SwitchBuilder
.new()
.withRng(rng)
@ -99,9 +94,8 @@ proc newWakuSwitch*(
.withTcpTransport(transportFlags)
.withNameResolver(nameResolver)
.withSignedPeerRecord(sendSignedPeerRecord)
#.withAddressPolicy(publicRoutableAddressPolicy)
#.withCircuitRelay(circuitRelay)
#.withServices(@[hpService])
.withAddressPolicy(publicRoutableAddressPolicy)
.withCircuitRelay(circuitRelay)
if peerStoreCapacity.isSome():
b = b.withPeerStore(peerStoreCapacity.get())