mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-22 11:58:36 +00:00
* on_chain/group_manager: use .async: (raises:[Exception]). * bump nim-dnsdisc * update nim-chronos to the latest state * chat2.nim: catch any possible exception when stopping * chat2bridge.nim: make it to compile after vendor bump * ValidIpAddress (deprecated) -> IpAddress * vendor/nim-libp2p additional bump * libwaku: adapt to vendor bump * testlib/wakunode.nim: adapt to vendor bump (ValidIpAddress -> IpAddress) * waku_node: avoid throwing any exception from stop*(node: WakuNode) * test_confutils_envvar.nim: ValidIpAddress -> IpAddress * test_jsonrpc_store: capture exception * test_rln*: handling exceptions * adaptation to make test_rln_* to work properly * signature enhancement of group_manager methods
91 lines
2.6 KiB
Nim
91 lines
2.6 KiB
Nim
import
|
||
std/strutils,
|
||
chronicles,
|
||
chronicles/topics_registry,
|
||
chronos,
|
||
confutils,
|
||
stew/results,
|
||
stew/shims/net
|
||
|
||
type
|
||
NetworkMonitorConf* = object
|
||
logLevel* {.
|
||
desc: "Sets the log level",
|
||
defaultValue: LogLevel.INFO,
|
||
name: "log-level",
|
||
abbr: "l" .}: LogLevel
|
||
|
||
timeout* {.
|
||
desc: "Timeout to consider that the connection failed",
|
||
defaultValue: chronos.seconds(10),
|
||
name: "timeout",
|
||
abbr: "t" }: chronos.Duration
|
||
|
||
bootstrapNodes* {.
|
||
desc: "Bootstrap ENR node. Argument may be repeated.",
|
||
defaultValue: @[""],
|
||
name: "bootstrap-node",
|
||
abbr: "b" }: seq[string]
|
||
|
||
dnsDiscoveryUrl* {.
|
||
desc: "URL for DNS node list in format 'enrtree://<key>@<fqdn>'",
|
||
defaultValue: ""
|
||
name: "dns-discovery-url" }: string
|
||
|
||
refreshInterval* {.
|
||
desc: "How often new peers are discovered and connected to (in seconds)",
|
||
defaultValue: 5,
|
||
name: "refresh-interval",
|
||
abbr: "r" }: int
|
||
|
||
## Prometheus metrics config
|
||
metricsServer* {.
|
||
desc: "Enable the metrics server: true|false"
|
||
defaultValue: true
|
||
name: "metrics-server" }: bool
|
||
|
||
metricsServerAddress* {.
|
||
desc: "Listening address of the metrics server."
|
||
defaultValue: parseIpAddress("127.0.0.1")
|
||
name: "metrics-server-address" }: IpAddress
|
||
|
||
metricsServerPort* {.
|
||
desc: "Listening HTTP port of the metrics server."
|
||
defaultValue: 8008
|
||
name: "metrics-server-port" }: uint16
|
||
|
||
## Custom metrics rest server
|
||
metricsRestAddress* {.
|
||
desc: "Listening address of the metrics rest server.",
|
||
defaultValue: "127.0.0.1",
|
||
name: "metrics-rest-address" }: string
|
||
metricsRestPort* {.
|
||
desc: "Listening HTTP port of the metrics rest server.",
|
||
defaultValue: 8009,
|
||
name: "metrics-rest-port" }: uint16
|
||
|
||
proc parseCmdArg*(T: type IpAddress, p: string): T =
|
||
try:
|
||
result = parseIpAddress(p)
|
||
except CatchableError as e:
|
||
raise newException(ValueError, "Invalid IP address")
|
||
|
||
proc completeCmdArg*(T: type IpAddress, val: string): seq[string] =
|
||
return @[]
|
||
|
||
proc parseCmdArg*(T: type chronos.Duration, p: string): T =
|
||
try:
|
||
result = chronos.seconds(parseInt(p))
|
||
except CatchableError as e:
|
||
raise newException(ValueError, "Invalid duration value")
|
||
|
||
proc completeCmdArg*(T: type chronos.Duration, val: string): seq[string] =
|
||
return @[]
|
||
|
||
proc loadConfig*(T: type NetworkMonitorConf): Result[T, string] =
|
||
try:
|
||
let conf = NetworkMonitorConf.load(version=git_version)
|
||
ok(conf)
|
||
except CatchableError:
|
||
err(getCurrentExceptionMsg())
|