mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-05-21 09:49:29 +00:00
autonat & config default
This commit is contained in:
parent
cae051ba6f
commit
7f98fd1fe9
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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())
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user