mirror of
https://github.com/waku-org/nwaku.git
synced 2025-01-27 07:06:42 +00:00
Fix nim-waku config inconsistencies (#543)
* Fix nim-waku config inconsistencies * Revert staticnode to singular form * Fix reference to deprecated config item * Revert nodekey config item to be consistent with Waku v1
This commit is contained in:
parent
4f132a1d35
commit
50f2235bfc
@ -242,15 +242,15 @@ proc processInput(rfd: AsyncFD, rng: ref BrHmacDrbgContext) {.async.} =
|
||||
(extIp, extTcpPort, extUdpPort) = setupNat(conf.nat, clientId,
|
||||
Port(uint16(conf.tcpPort) + conf.portsShift),
|
||||
Port(uint16(conf.udpPort) + conf.portsShift))
|
||||
node = WakuNode.init(conf.nodeKey, conf.listenAddress,
|
||||
node = WakuNode.init(conf.nodekey, conf.listenAddress,
|
||||
Port(uint16(conf.tcpPort) + conf.portsShift), extIp, extTcpPort)
|
||||
|
||||
await node.start()
|
||||
|
||||
if conf.filternode != "":
|
||||
node.mountRelay(conf.topics.split(" "), rlnRelayEnabled = conf.rlnrelay, keepAlive = conf.keepAlive)
|
||||
node.mountRelay(conf.topics.split(" "), rlnRelayEnabled = (conf.rlnrelay_depr or conf.rlnRelay), keepAlive = conf.keepAlive) # @TODO remove deprecated config item
|
||||
else:
|
||||
node.mountRelay(@[], rlnRelayEnabled = conf.rlnrelay, keepAlive = conf.keepAlive)
|
||||
node.mountRelay(@[], rlnRelayEnabled = (conf.rlnrelay_depr or conf.rlnRelay), keepAlive = conf.keepAlive) # @TODO remove deprecated config item
|
||||
|
||||
let nick = await readNick(transp)
|
||||
echo "Welcome, " & nick & "!"
|
||||
@ -277,7 +277,7 @@ proc processInput(rfd: AsyncFD, rng: ref BrHmacDrbgContext) {.async.} =
|
||||
node.mountSwap()
|
||||
|
||||
if (conf.storenode != "") or (conf.store == true):
|
||||
node.mountStore(persistMessages = conf.persistmessages)
|
||||
node.mountStore(persistMessages = conf.persistMessages)
|
||||
|
||||
var storenode: string
|
||||
|
||||
|
@ -66,6 +66,7 @@ type
|
||||
name: "metrics-server-port" .}: uint16
|
||||
|
||||
### Waku v2 options
|
||||
|
||||
staticnodes* {.
|
||||
desc: "Multiaddr of peer to directly connect with. Argument may be repeated"
|
||||
name: "staticnode" }: seq[string]
|
||||
|
@ -77,20 +77,38 @@ type
|
||||
name: "metrics-server-port" .}: uint16
|
||||
|
||||
### Waku v1 options
|
||||
fleetv1* {.
|
||||
# @TODO: deprecate this item. Name changed from `fleetv1` -> `fleet-v1`
|
||||
fleetv1_depr* {.
|
||||
desc: "Select the Waku v1 fleet to connect to"
|
||||
defaultValue: FleetV1.none
|
||||
name: "fleetv1" .}: FleetV1
|
||||
|
||||
fleetV1* {.
|
||||
desc: "Select the Waku v1 fleet to connect to"
|
||||
defaultValue: FleetV1.none
|
||||
name: "fleet-v1" .}: FleetV1
|
||||
|
||||
staticnodesv1* {.
|
||||
# @TODO: deprecate this item. Name changed from `staticnodev1` -> `staticnodes-v1`
|
||||
staticnodesv1_depr* {.
|
||||
desc: "Enode URL to directly connect with. Argument may be repeated"
|
||||
name: "staticnodev1" .}: seq[string]
|
||||
|
||||
staticnodesV1* {.
|
||||
desc: "Enode URL to directly connect with. Argument may be repeated"
|
||||
name: "staticnode-v1" .}: seq[string]
|
||||
|
||||
nodekeyv1* {.
|
||||
# @TODO: deprecate this item. Name changed from `nodekeyv1` -> `node-key-v1`
|
||||
nodekeyv1_depr* {.
|
||||
desc: "DevP2P node private key as hex",
|
||||
# TODO: can the rng be passed in somehow via Load?
|
||||
defaultValue: keys.KeyPair.random(keys.newRng()[])
|
||||
name: "nodekeyv1" .}: keys.KeyPair
|
||||
|
||||
nodekeyV1* {.
|
||||
desc: "DevP2P node private key as hex",
|
||||
# TODO: can the rng be passed in somehow via Load?
|
||||
defaultValue: keys.KeyPair.random(keys.newRng()[])
|
||||
name: "nodekey-v1" .}: keys.KeyPair
|
||||
|
||||
wakuPow* {.
|
||||
desc: "PoW requirement of Waku node.",
|
||||
@ -98,14 +116,25 @@ type
|
||||
name: "waku-pow" .}: float64
|
||||
|
||||
### Waku v2 options
|
||||
staticnodesv2* {.
|
||||
# @TODO: deprecate this item. Name changed from `staticnodev2` -> `staticnodes-v2`
|
||||
staticnodesv2_depr* {.
|
||||
desc: "Multiaddr of peer to directly connect with. Argument may be repeated"
|
||||
name: "staticnodev2" }: seq[string]
|
||||
|
||||
staticnodesV2* {.
|
||||
desc: "Multiaddr of peer to directly connect with. Argument may be repeated"
|
||||
name: "staticnode-v2" }: seq[string]
|
||||
|
||||
nodekeyv2* {.
|
||||
# @TODO: deprecate this item. Name changed from `nodekeyv2` -> `node-key-v2`
|
||||
nodekeyv2_depr* {.
|
||||
desc: "P2P node private key as hex"
|
||||
defaultValue: crypto.PrivateKey.random(Secp256k1, keys.newRng()[]).tryGet()
|
||||
name: "nodekeyv2" }: crypto.PrivateKey
|
||||
|
||||
nodekeyV2* {.
|
||||
desc: "P2P node private key as hex"
|
||||
defaultValue: crypto.PrivateKey.random(Secp256k1, keys.newRng()[]).tryGet()
|
||||
name: "nodekey-v2" }: crypto.PrivateKey
|
||||
|
||||
topics* {.
|
||||
desc: "Default topics to subscribe to (space separated list)"
|
||||
@ -116,11 +145,6 @@ type
|
||||
desc: "Flag whether to start store protocol",
|
||||
defaultValue: true
|
||||
name: "store" }: bool
|
||||
|
||||
persistmessages* {.
|
||||
desc: "Enable message persistence: true|false",
|
||||
defaultValue: false
|
||||
name: "persist-messages" }: bool
|
||||
|
||||
filter* {.
|
||||
desc: "Flag whether to start filter protocol",
|
||||
|
@ -200,11 +200,11 @@ when isMainModule:
|
||||
Port(uint16(conf.udpPort) + conf.portsShift))
|
||||
|
||||
let
|
||||
bridge = WakuBridge.new(nodev1Key = conf.nodekeyv1,
|
||||
bridge = WakuBridge.new(nodev1Key = conf.nodekeyv1_depr, # @TODO remove deprecated config item
|
||||
nodev1Address = nodev1Address,
|
||||
powRequirement = conf.wakuPow,
|
||||
rng = rng,
|
||||
nodev2Key = conf.nodeKeyv2,
|
||||
nodev2Key = conf.nodekeyv2_depr, # @TODO remove deprecated config item
|
||||
nodev2BindIp = conf.listenAddress, nodev2BindPort = Port(uint16(conf.libp2pTcpPort) + conf.portsShift),
|
||||
nodev2ExtIp = nodev2ExtIp, nodev2ExtPort = nodev2ExtPort)
|
||||
|
||||
@ -212,20 +212,28 @@ when isMainModule:
|
||||
|
||||
# Now load rest of config
|
||||
# Optionally direct connect nodev1 with a set of nodes
|
||||
if conf.staticnodesv1.len > 0: connectToNodes(bridge.nodev1, conf.staticnodesv1)
|
||||
elif conf.fleetv1 == prod: connectToNodes(bridge.nodev1, WhisperNodes)
|
||||
elif conf.fleetv1 == staging: connectToNodes(bridge.nodev1, WhisperNodesStaging)
|
||||
elif conf.fleetv1 == test: connectToNodes(bridge.nodev1, WhisperNodesTest)
|
||||
# @TODO remove deprecated config items
|
||||
if conf.staticnodesv1_depr.len > 0: connectToNodes(bridge.nodev1, conf.staticnodesv1_depr)
|
||||
elif conf.fleetv1_depr == prod: connectToNodes(bridge.nodev1, WhisperNodes)
|
||||
elif conf.fleetv1_depr == staging: connectToNodes(bridge.nodev1, WhisperNodesStaging)
|
||||
elif conf.fleetv1_depr == test: connectToNodes(bridge.nodev1, WhisperNodesTest)
|
||||
|
||||
if conf.staticnodesV1.len > 0: connectToNodes(bridge.nodev1, conf.staticnodesV1)
|
||||
elif conf.fleetV1 == prod: connectToNodes(bridge.nodev1, WhisperNodes)
|
||||
elif conf.fleetV1 == staging: connectToNodes(bridge.nodev1, WhisperNodesStaging)
|
||||
elif conf.fleetV1 == test: connectToNodes(bridge.nodev1, WhisperNodesTest)
|
||||
|
||||
# Mount configured Waku v2 protocols
|
||||
if conf.store:
|
||||
mountStore(bridge.nodev2, persistMessages = conf.persistmessages)
|
||||
mountStore(bridge.nodev2, persistMessages = false) # Bridge does not persist messages
|
||||
|
||||
if conf.filter:
|
||||
mountFilter(bridge.nodev2)
|
||||
|
||||
if conf.staticnodesv2.len > 0:
|
||||
waitFor connectToNodes(bridge.nodev2, conf.staticnodesv2)
|
||||
if conf.staticnodesv2_depr.len > 0: # @TODO remove deprecated config item
|
||||
waitFor connectToNodes(bridge.nodev2, conf.staticnodesv2_depr)
|
||||
elif conf.staticnodesV2.len > 0:
|
||||
waitFor connectToNodes(bridge.nodev2, conf.staticnodesV2)
|
||||
|
||||
if conf.storenode != "":
|
||||
setStorePeer(bridge.nodev2, conf.storenode)
|
||||
|
@ -9,10 +9,17 @@ import
|
||||
|
||||
type
|
||||
WakuNodeConf* = object
|
||||
## General node config
|
||||
|
||||
logLevel* {.
|
||||
desc: "Sets the log level."
|
||||
defaultValue: LogLevel.INFO
|
||||
name: "log-level" }: LogLevel
|
||||
|
||||
nodekey* {.
|
||||
desc: "P2P node private key as 64 char hex string.",
|
||||
defaultValue: crypto.PrivateKey.random(Secp256k1, keys.newRng()[]).tryGet()
|
||||
name: "nodekey" }: crypto.PrivateKey
|
||||
|
||||
listenAddress* {.
|
||||
defaultValue: defaultListenAddress(config)
|
||||
@ -38,81 +45,107 @@ type
|
||||
desc: "Specify method to use for determining public address. " &
|
||||
"Must be one of: any, none, upnp, pmp, extip:<IP>."
|
||||
defaultValue: "any" }: string
|
||||
|
||||
staticnodes* {.
|
||||
desc: "Peer multiaddr to directly connect with. Argument may be repeated."
|
||||
name: "staticnode" }: seq[string]
|
||||
|
||||
peerpersist* {.
|
||||
## Persistence config
|
||||
|
||||
# @TODO: deprecate this item. Name changed from `dbpath` -> `db-path`
|
||||
dbpath_depr* {.
|
||||
desc: "The database path for peristent storage",
|
||||
defaultValue: ""
|
||||
name: "dbpath" }: string
|
||||
|
||||
dbPath* {.
|
||||
desc: "The database path for peristent storage",
|
||||
defaultValue: ""
|
||||
name: "db-path" }: string
|
||||
|
||||
# @TODO: deprecate this item. Name changed from `peerpersist` -> `persist-peers`
|
||||
peerpersist_depr* {.
|
||||
desc: "Enable peer persistence: true|false",
|
||||
defaultValue: false
|
||||
name: "peerpersist" }: bool
|
||||
|
||||
storenode* {.
|
||||
desc: "Peer multiaddr to query for storage.",
|
||||
defaultValue: ""
|
||||
name: "storenode" }: string
|
||||
|
||||
persistmessages* {.
|
||||
|
||||
persistPeers* {.
|
||||
desc: "Enable peer persistence: true|false",
|
||||
defaultValue: false
|
||||
name: "persist-peers" }: bool
|
||||
|
||||
persistMessages* {.
|
||||
desc: "Enable message persistence: true|false",
|
||||
defaultValue: false
|
||||
name: "persist-messages" }: bool
|
||||
|
||||
store* {.
|
||||
desc: "Enable store protocol: true|false",
|
||||
defaultValue: true
|
||||
name: "store" }: bool
|
||||
|
||||
filter* {.
|
||||
desc: "Enable filter protocol: true|false",
|
||||
defaultValue: false
|
||||
name: "filter" }: bool
|
||||
## Relay config
|
||||
|
||||
relay* {.
|
||||
desc: "Enable relay protocol: true|false",
|
||||
defaultValue: true
|
||||
name: "relay" }: bool
|
||||
|
||||
rlnrelay* {.
|
||||
# @TODO: deprecate this item. Name changed from `rlnrelay` -> `rln-relay`
|
||||
rlnrelay_depr* {.
|
||||
desc: "Enable spam protection through rln-relay: true|false",
|
||||
defaultValue: false
|
||||
name: "rlnrelay" }: bool
|
||||
|
||||
rlnRelay* {.
|
||||
desc: "Enable spam protection through rln-relay: true|false",
|
||||
defaultValue: false
|
||||
name: "rln-relay" }: bool
|
||||
|
||||
staticnodes* {.
|
||||
desc: "Peer multiaddr to directly connect with. Argument may be repeated."
|
||||
name: "staticnode" }: seq[string]
|
||||
|
||||
keepAlive* {.
|
||||
desc: "Enable keep-alive for idle connections: true|false",
|
||||
defaultValue: false
|
||||
name: "keep-alive" }: bool
|
||||
|
||||
swap* {.
|
||||
desc: "Enable swap protocol: true|false",
|
||||
defaultValue: false
|
||||
name: "swap" }: bool
|
||||
|
||||
lightpush* {.
|
||||
desc: "Enable lightpush protocol: true|false",
|
||||
defaultValue: false
|
||||
name: "lightpush" }: bool
|
||||
|
||||
filternode* {.
|
||||
desc: "Peer multiaddr to request content filtering of messages.",
|
||||
defaultValue: ""
|
||||
name: "filternode" }: string
|
||||
|
||||
dbpath* {.
|
||||
desc: "The database path for the store protocol.",
|
||||
defaultValue: ""
|
||||
name: "dbpath" }: string
|
||||
|
||||
topics* {.
|
||||
desc: "Default topics to subscribe to (space separated list)."
|
||||
defaultValue: "/waku/2/default-waku/proto"
|
||||
name: "topics" .}: string
|
||||
|
||||
# NOTE: Signature is different here, we return PrivateKey and not KeyPair
|
||||
nodekey* {.
|
||||
desc: "P2P node private key as 64 char hex string.",
|
||||
defaultValue: crypto.PrivateKey.random(Secp256k1, keys.newRng()[]).tryGet()
|
||||
name: "nodekey" }: crypto.PrivateKey
|
||||
## Store config
|
||||
|
||||
store* {.
|
||||
desc: "Enable store protocol: true|false",
|
||||
defaultValue: true
|
||||
name: "store" }: bool
|
||||
|
||||
storenode* {.
|
||||
desc: "Peer multiaddr to query for storage.",
|
||||
defaultValue: ""
|
||||
name: "storenode" }: string
|
||||
|
||||
## Filter config
|
||||
|
||||
filter* {.
|
||||
desc: "Enable filter protocol: true|false",
|
||||
defaultValue: false
|
||||
name: "filter" }: bool
|
||||
|
||||
filternode* {.
|
||||
desc: "Peer multiaddr to request content filtering of messages.",
|
||||
defaultValue: ""
|
||||
name: "filternode" }: string
|
||||
|
||||
## Swap config
|
||||
|
||||
swap* {.
|
||||
desc: "Enable swap protocol: true|false",
|
||||
defaultValue: false
|
||||
name: "swap" }: bool
|
||||
|
||||
## Lightpush config
|
||||
|
||||
lightpush* {.
|
||||
desc: "Enable lightpush protocol: true|false",
|
||||
defaultValue: false
|
||||
name: "lightpush" }: bool
|
||||
|
||||
## JSON-RPC config
|
||||
|
||||
rpc* {.
|
||||
desc: "Enable Waku JSON-RPC server: true|false",
|
||||
@ -138,6 +171,8 @@ type
|
||||
desc: "Enable access to JSON-RPC Private API: true|false",
|
||||
defaultValue: false
|
||||
name: "rpc-private" }: bool
|
||||
|
||||
## Metrics config
|
||||
|
||||
metricsServer* {.
|
||||
desc: "Enable the metrics server: true|false"
|
||||
@ -154,11 +189,17 @@ type
|
||||
defaultValue: 8008
|
||||
name: "metrics-server-port" }: uint16
|
||||
|
||||
logMetrics* {.
|
||||
# @TODO: deprecate this item. Name changed from `log-metrics` -> `metrics-logging`
|
||||
logMetrics_depr* {.
|
||||
desc: "Enable metrics logging: true|false"
|
||||
defaultValue: false
|
||||
name: "log-metrics" }: bool
|
||||
|
||||
metricsLogging* {.
|
||||
desc: "Enable metrics logging: true|false"
|
||||
defaultValue: false
|
||||
name: "metrics-logging" }: bool
|
||||
|
||||
# NOTE: Keys are different in nim-libp2p
|
||||
proc parseCmdArg*(T: type crypto.PrivateKey, p: TaintedString): T =
|
||||
try:
|
||||
|
@ -630,8 +630,15 @@ when isMainModule:
|
||||
# Storage setup
|
||||
var sqliteDatabase: SqliteDatabase
|
||||
|
||||
if conf.dbpath != "":
|
||||
let dbRes = SqliteDatabase.init(conf.dbpath)
|
||||
if conf.dbpath_depr != "": # @TODO remove deprecated config item
|
||||
let dbRes = SqliteDatabase.init(conf.dbpath_depr)
|
||||
if dbRes.isErr:
|
||||
warn "failed to init database", err = dbRes.error
|
||||
waku_node_errors.inc(labelValues = ["init_db_failure"])
|
||||
else:
|
||||
sqliteDatabase = dbRes.value
|
||||
elif conf.dbPath != "":
|
||||
let dbRes = SqliteDatabase.init(conf.dbPath)
|
||||
if dbRes.isErr:
|
||||
warn "failed to init database", err = dbRes.error
|
||||
waku_node_errors.inc(labelValues = ["init_db_failure"])
|
||||
@ -640,7 +647,7 @@ when isMainModule:
|
||||
|
||||
var pStorage: WakuPeerStorage
|
||||
|
||||
if conf.peerpersist and not sqliteDatabase.isNil:
|
||||
if (conf.peerpersist_depr or conf.persistPeers) and not sqliteDatabase.isNil: # @TODO remove deprecated config item
|
||||
let res = WakuPeerStorage.new(sqliteDatabase)
|
||||
if res.isErr:
|
||||
warn "failed to init new WakuPeerStorage", err = res.error
|
||||
@ -657,7 +664,7 @@ when isMainModule:
|
||||
## config, the external port is the same as the bind port.
|
||||
extPort = if extIp.isSome() and extTcpPort.isNone(): some(Port(uint16(conf.tcpPort) + conf.portsShift))
|
||||
else: extTcpPort
|
||||
node = WakuNode.init(conf.nodeKey,
|
||||
node = WakuNode.init(conf.nodekey,
|
||||
conf.listenAddress, Port(uint16(conf.tcpPort) + conf.portsShift),
|
||||
extIp, extPort,
|
||||
pStorage)
|
||||
@ -673,7 +680,7 @@ when isMainModule:
|
||||
if (conf.storenode != "") or (conf.store):
|
||||
var store: WakuMessageStore
|
||||
|
||||
if (not sqliteDatabase.isNil) and conf.persistmessages:
|
||||
if (not sqliteDatabase.isNil) and conf.persistMessages:
|
||||
let res = WakuMessageStore.init(sqliteDatabase)
|
||||
if res.isErr:
|
||||
warn "failed to init WakuMessageStore", err = res.error
|
||||
@ -681,7 +688,7 @@ when isMainModule:
|
||||
else:
|
||||
store = res.value
|
||||
|
||||
mountStore(node, store, conf.persistmessages)
|
||||
mountStore(node, store, conf.persistMessages)
|
||||
|
||||
if conf.storenode != "":
|
||||
setStorePeer(node, conf.storenode)
|
||||
@ -689,7 +696,7 @@ when isMainModule:
|
||||
# Relay setup
|
||||
mountRelay(node,
|
||||
conf.topics.split(" "),
|
||||
rlnRelayEnabled = conf.rlnrelay,
|
||||
rlnRelayEnabled = conf.rlnrelay_depr or conf.rlnRelay, # @TODO remove deprecated config item
|
||||
keepAlive = conf.keepAlive,
|
||||
relayMessages = conf.relay) # Indicates if node is capable to relay messages
|
||||
|
||||
@ -710,7 +717,7 @@ when isMainModule:
|
||||
if conf.rpc:
|
||||
startRpc(node, conf.rpcAddress, Port(conf.rpcPort + conf.portsShift), conf)
|
||||
|
||||
if conf.logMetrics:
|
||||
if conf.logMetrics_depr or conf.metricsLogging: # @TODO remove deprecated config item
|
||||
startMetricsLog()
|
||||
|
||||
when defined(insecure):
|
||||
|
Loading…
x
Reference in New Issue
Block a user