* message.nim: set max message size to 150KiB according to spec
Using KiB instead of KB because that seems more aligned with
the actual default defined in nim-libp2p (1024 * 1024)
Spec details: https://rfc.vac.dev/spec/64/#message-size
* test_protocol.nim: align test to current WakuMessage limit
* test_waku_client.nim: adapt test to MaxWakuMessageSize change
* make maxMessageSize configurable for wakunode2
* wakunode2 app now accepts max-num-bytes-msg-size with KiB, KB, or B units
* testlib/wakunode.nim: set maxMessageSize: "1024 KiB"
* test_waku_client.nim: remove duplicate check in "Valid Payload Sizes"
* set DefaultMaxWakuMessageSizeStr as the only source of truth
* external_config.nim: rename max-num-bytes-msg-size -> max-msg-size
The "ip colocation" concept refers to the maximum allowed peers
from the same IP address. For example, we allow disabling this limit when the
node works behind a reverse proxy.
This reverts commit dba9820c1f.
We need to revert this commit because
the waku-simulator stopped working. i.e. the nodes couldn't establish
connections among them: 054ba9e33f
Also, the following js-waku test fails due to this commit:
"same cluster, different shard: nodes connect"
* waku_lightpush/protocol.nim: minor changes to make it compile after revert
* 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
/admin rest api implementation and tests
* open api doc
* Add rest admin test to all tests
* Enrich /admin get peers interface, group protocols by peers in response
* chore(networkmonitor): refactor setConnectedPeersMetrics, make it partially concurrent, add version
* add more metrics, refactor how most metrics are calculated
* rework metrics table fillup
* reset connErr to make sure we honour successful reconnection
* dburl.nim: simpler regex that can support db_urls with . and - in hostname
* dbrul.nim: accepting any non-empty sequence for user and password
* dburl.nim: skipping validation for 'sqlite' db paths
RestApi Lightpush endpoint implemented
* Openapi definition for lightpush rest api
* Update waku/node/rest/lightpush/handlers.nim
* Fix install handler naming, added negative test cases and fixes for restapi lightpush
* Fix error handling in lightpush rest handler
* Fix main success case - relay message that comes with pushRequest
* Fix rest relay serdes test with RelayWakuMessage validation changes
* Checking response message tests
Filter v2 rest api support implemented
Filter rest api documentation updated with v1 and v2 interface support.
Separated legacy filter rest interface
Fix code and tests of v2 Filter rest api
Filter v2 message push test added
Applied autoshard to Filter V2
Redesigned FilterPushHandling, code style, catch up apps and tests with filter v2 interface changes
Rename of FilterV1SubscriptionsRequest to FilterLegacySubscribeRequest, fix broken chat2 app, fix tests
Changed Filter v2 push handler subscription to simple register
Separate node's filterUnsubscribe and filterUnsubscribeAll
It starts an asynchronous infinite task that checks the connectivity
with the database. In case of error, the postgres_healthcheck task
tries to reconnect for a while, and if it determines that the connection
cannot be resumed, then it invokes a callback indicating that
situation. For the case of the `wakunode2` app, this callback
quits the application itself and adds a log trace indicating
the connectivity issue with the database.
* chore: remove v1 code
* chore: deprecate support for v1 compatibility from JSON-RPC API
* chore: remove v1 tests from JSON-RPC suite
* chore: remove wakubridge code
* chore: remove v1 compatibility functions
* chore: remove support for v1 payloads from chat2 app
* chore: remove v1 from CI processes
* fix: lingering references to private API functions
* fix: remove v1 compat from chat2
* fix: some more lingering references in tests
* chore(rln-relay): Verify proofs based on bandwidth usage
* fix(rln-relay): make default threshold 0, for backwards compat
* fix(rln-relay): add unit test for bandwidth cutoff
* fix(rln-relay): rlnRelayBandwidthTreshold option
* Move record creation & fix libwaku
* app,external_config,internal_config,libwaku,sharding: refactorgin to make it compile
---------
Co-authored-by: SionoiS <simvivier@status.im>
This change is needed so that the `libwaku.nim` code gets simpler. The
`libwaku.nim` can't import the 'WakuNodeConf' type because this is
related to the wakunode2 app, and the library shouldn't know about it.
- Remove discv5 from node and it's builder
- Require a record to init a node (was previously using discv5 record).
- Fix various tests that assumed nodes with discv5.
- Fix ENR creation
- Fix wakubridge
- Fix networkmonitor
* Fixing issue that prevented the wakunode2 from starting
The issue was introduced in PR#1818.
Before this commit, the `wakunode2` app crashed with the next error:
ERR 2023-06-27 15:57:27.268+00:00 5/7 Starting node and protocols failed
topics="wakunode main" tid=1 file=wakunode2.nim:92 error="failed to
start waku discovery v5: "
* fix tests accordingly
* publisher.nim, subscriber.nim: fix
* Refactoring the Waku Archive. Simplifying the app.nim
This change is needed to accommodate the further PRs where we will integrate Postgres in `wakunode2`.
* chore(rln-relay): pass in the path to the tree db
* fix(rln-relay): address visibility
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
* fix(rln-relay): make db used more explicit
* fix(rln-relay): reduce visibility
---------
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
* feat(discv5): added find random nodes with predicate (#1762)
Co-authored-by: Lorenzo Delgado <lnsdev@proton.me>
* chore: play around with sleep times on tests
* chore: simplify flaky tests
* chore: update waku/v2/node/waku_node.nim
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
* chore: update tests/v2/test_waku_discv5.nim
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
* chore: update examples/v2/subscriber.nim
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
---------
Co-authored-by: Lorenzo Delgado <lnsdev@proton.me>
Co-authored-by: Ivan Folgueira Bande <128452529+Ivansete-status@users.noreply.github.com>
Notice that I had to adapt to use 'rlpx_connected_peers' instead
of 'connected_peers' in 'wakunode1.nim' because due to the update
of the 'vendor/nim-eth', which adds the dependency-break with
'confutils' but also includes another changes.
Aside note: we cannot have 'confutils' dependency in 'nim-eth' because
that will prevent the generation of any waku dynamic library.
* wakunode2 config. adding new 'topic' config parameter.
This new parameter can be repeated and we are starting to deprecate the
parameter 'topics', that expected to receive a space-separated list of
pubsubtopic to subscribe to.
* Appying PR suggestions
* feat: new rest api based on the current store json-rpc api and
following the same structure as the current relay rest api.
* feat: the store api attend GET requests to retrieve historical messages
* feat: unit tests.
* feat: allow return message to rest-client in case error (4XX or 5XX)
* chore: always allow to call the store api endpoints (only rest) without explicit storenode (#1575)
* feat: always mounting the current node as storenode client