mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-01-02 14:03:06 +00:00
Merge branch 'master' into release/v0.37
This commit is contained in:
commit
1d8860a2b1
@ -32,21 +32,31 @@ $ make wakucanary
|
||||
And used as follows. A reachable node that supports both `store` and `filter` protocols.
|
||||
|
||||
```console
|
||||
$ ./build/wakucanary --address=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/30303/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV --protocol=store --protocol=filter
|
||||
$ ./build/wakucanary \
|
||||
--address=/dns4/store-01.do-ams3.status.staging.status.im/tcp/30303/p2p/16Uiu2HAm3xVDaz6SRJ6kErwC21zBJEZjavVXg7VSkoWzaV1aMA3F \
|
||||
--protocol=store \
|
||||
--protocol=filter \
|
||||
--cluster-id=16 \
|
||||
--shard=64
|
||||
$ echo $?
|
||||
0
|
||||
```
|
||||
|
||||
A node that can't be reached.
|
||||
```console
|
||||
$ ./build/wakucanary --address=/dns4/node-01.ac-cn-hongkong-c.waku.sandbox.status.im/tcp/1000/p2p/16Uiu2HAmSJvSJphxRdbnigUV5bjRRZFBhTtWFTSyiKaQByCjwmpV --protocol=store --protocol=filter
|
||||
$ ./build/wakucanary \
|
||||
--address=/dns4/store-01.do-ams3.status.staging.status.im/tcp/1000/p2p/16Uiu2HAm3xVDaz6SRJ6kErwC21zBJEZjavVXg7VSkoWzaV1aMA3F \
|
||||
--protocol=store \
|
||||
--protocol=filter \
|
||||
--cluster-id=16 \
|
||||
--shard=64
|
||||
$ echo $?
|
||||
1
|
||||
```
|
||||
|
||||
Note that a domain name can also be used.
|
||||
```console
|
||||
$ ./build/wakucanary --address=/dns4/node-01.do-ams3.status.test.status.im/tcp/30303/p2p/16Uiu2HAkukebeXjTQ9QDBeNDWuGfbaSg79wkkhK4vPocLgR6QFDf --protocol=store --protocol=filter
|
||||
--- not defined yet
|
||||
$ echo $?
|
||||
0
|
||||
```
|
||||
|
||||
50
apps/wakucanary/scripts/run_waku_canary.sh
Executable file
50
apps/wakucanary/scripts/run_waku_canary.sh
Executable file
@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
|
||||
#this script build the canary app and make basic run to connect to well-known peer via TCP .
|
||||
set -e
|
||||
|
||||
PEER_ADDRESS="/dns4/store-01.do-ams3.status.staging.status.im/tcp/30303/p2p/16Uiu2HAm3xVDaz6SRJ6kErwC21zBJEZjavVXg7VSkoWzaV1aMA3F"
|
||||
PROTOCOL="relay"
|
||||
LOG_DIR="logs"
|
||||
CLUSTER="16"
|
||||
SHARD="64"
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
LOG_FILE="$LOG_DIR/canary_run_$TIMESTAMP.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
echo "Building Waku Canary app..."
|
||||
( cd ../../../ && make wakucanary ) >> "$LOG_FILE" 2>&1
|
||||
|
||||
echo "Running Waku Canary against:"
|
||||
echo " Peer : $PEER_ADDRESS"
|
||||
echo " Protocol: $PROTOCOL"
|
||||
echo "Log file : $LOG_FILE"
|
||||
echo "-----------------------------------"
|
||||
|
||||
{
|
||||
echo "=== Canary Run: $TIMESTAMP ==="
|
||||
echo "Peer : $PEER_ADDRESS"
|
||||
echo "Protocol : $PROTOCOL"
|
||||
echo "LogLevel : DEBUG"
|
||||
echo "-----------------------------------"
|
||||
../../../build/wakucanary \
|
||||
--address="$PEER_ADDRESS" \
|
||||
--protocol="$PROTOCOL" \
|
||||
--cluster-id="$CLUSTER"\
|
||||
--shard="$SHARD"\
|
||||
--log-level=DEBUG
|
||||
echo "-----------------------------------"
|
||||
echo "Exit code: $?"
|
||||
} 2>&1 | tee "$LOG_FILE"
|
||||
|
||||
EXIT_CODE=${PIPESTATUS[0]}
|
||||
|
||||
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "SUCCESS: Connected to peer and protocol '$PROTOCOL' is supported."
|
||||
else
|
||||
echo "FAILURE: Could not connect or protocol '$PROTOCOL' is unsupported."
|
||||
fi
|
||||
|
||||
exit $EXIT_CODE
|
||||
46
apps/wakucanary/scripts/test_protocols.sh
Executable file
46
apps/wakucanary/scripts/test_protocols.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/bash
|
||||
|
||||
# === Configuration ===
|
||||
WAKUCANARY_BINARY="../../../build/wakucanary"
|
||||
PEER_ADDRESS="/dns4/store-01.do-ams3.status.staging.status.im/tcp/30303/p2p/16Uiu2HAm3xVDaz6SRJ6kErwC21zBJEZjavVXg7VSkoWzaV1aMA3F"
|
||||
TIMEOUT=5
|
||||
LOG_LEVEL="info"
|
||||
PROTOCOLS=("store" "relay" "lightpush" "filter")
|
||||
|
||||
# === Logging Setup ===
|
||||
LOG_DIR="logs"
|
||||
mkdir -p "$LOG_DIR"
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
LOG_FILE="$LOG_DIR/ping_test_$TIMESTAMP.log"
|
||||
|
||||
echo "Building Waku Canary app..."
|
||||
( cd ../../../ && make wakucanary ) >> "$LOG_FILE" 2>&1
|
||||
|
||||
echo "Protocol Support Test - $TIMESTAMP" | tee -a "$LOG_FILE"
|
||||
echo "Peer: $PEER_ADDRESS" | tee -a "$LOG_FILE"
|
||||
echo "---------------------------------------" | tee -a "$LOG_FILE"
|
||||
|
||||
# === Protocol Testing Loop ===
|
||||
for PROTOCOL in "${PROTOCOLS[@]}"; do
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
LOG_FILE="$LOG_DIR/ping_test_${PROTOCOL}_$TIMESTAMP.log"
|
||||
|
||||
{
|
||||
echo "=== Canary Run: $TIMESTAMP ==="
|
||||
echo "Peer : $PEER_ADDRESS"
|
||||
echo "Protocol : $PROTOCOL"
|
||||
echo "LogLevel : DEBUG"
|
||||
echo "-----------------------------------"
|
||||
$WAKUCANARY_BINARY \
|
||||
--address="$PEER_ADDRESS" \
|
||||
--protocol="$PROTOCOL" \
|
||||
--log-level=DEBUG
|
||||
echo "-----------------------------------"
|
||||
echo "Exit code: $?"
|
||||
} 2>&1 | tee "$LOG_FILE"
|
||||
|
||||
echo "✅ Log saved to: $LOG_FILE"
|
||||
echo ""
|
||||
done
|
||||
|
||||
echo "All protocol checks completed. Log saved to: $LOG_FILE"
|
||||
51
apps/wakucanary/scripts/web_socket.sh
Executable file
51
apps/wakucanary/scripts/web_socket.sh
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
#this script build the canary app and make basic run to connect to well-known peer via TCP .
|
||||
set -e
|
||||
|
||||
PEER_ADDRESS="/ip4/127.0.0.1/tcp/7777/ws/p2p/16Uiu2HAm4ng2DaLPniRoZtMQbLdjYYWnXjrrJkGoXWCoBWAdn1tu"
|
||||
PROTOCOL="relay"
|
||||
LOG_DIR="logs"
|
||||
CLUSTER="16"
|
||||
SHARD="64"
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
LOG_FILE="$LOG_DIR/canary_run_$TIMESTAMP.log"
|
||||
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
echo "Building Waku Canary app..."
|
||||
( cd ../../../ && make wakucanary ) >> "$LOG_FILE" 2>&1
|
||||
|
||||
|
||||
echo "Running Waku Canary against:"
|
||||
echo " Peer : $PEER_ADDRESS"
|
||||
echo " Protocol: $PROTOCOL"
|
||||
echo "Log file : $LOG_FILE"
|
||||
echo "-----------------------------------"
|
||||
|
||||
{
|
||||
echo "=== Canary Run: $TIMESTAMP ==="
|
||||
echo "Peer : $PEER_ADDRESS"
|
||||
echo "Protocol : $PROTOCOL"
|
||||
echo "LogLevel : DEBUG"
|
||||
echo "-----------------------------------"
|
||||
../../../build/wakucanary \
|
||||
--address="$PEER_ADDRESS" \
|
||||
--protocol="$PROTOCOL" \
|
||||
--cluster-id="$CLUSTER"\
|
||||
--shard="$SHARD"\
|
||||
--log-level=DEBUG
|
||||
echo "-----------------------------------"
|
||||
echo "Exit code: $?"
|
||||
} 2>&1 | tee "$LOG_FILE"
|
||||
|
||||
EXIT_CODE=${PIPESTATUS[0]}
|
||||
|
||||
|
||||
if [ $EXIT_CODE -eq 0 ]; then
|
||||
echo "SUCCESS: Connected to peer and protocol '$PROTOCOL' is supported."
|
||||
else
|
||||
echo "FAILURE: Could not connect or protocol '$PROTOCOL' is unsupported."
|
||||
fi
|
||||
|
||||
exit $EXIT_CODE
|
||||
43
apps/wakucanary/scripts/web_socket_certitficate.sh
Normal file
43
apps/wakucanary/scripts/web_socket_certitficate.sh
Normal file
@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
WAKUCANARY_BINARY="../../../build/wakucanary"
|
||||
NODE_PORT=60000
|
||||
WSS_PORT=$((NODE_PORT + 1000))
|
||||
PEER_ID="16Uiu2HAmB6JQpewXScGoQ2syqmimbe4GviLxRwfsR8dCpwaGBPSE"
|
||||
PROTOCOL="relay"
|
||||
KEY_PATH="./certs/client.key"
|
||||
CERT_PATH="./certs/client.crt"
|
||||
LOG_DIR="logs"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
PEER_ADDRESS="/ip4/127.0.0.1/tcp/$WSS_PORT/wss/p2p/$PEER_ID"
|
||||
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
|
||||
LOG_FILE="$LOG_DIR/wss_cert_test_$TIMESTAMP.log"
|
||||
|
||||
echo "Building Waku Canary app..."
|
||||
( cd ../../../ && make wakucanary ) >> "$LOG_FILE" 2>&1
|
||||
|
||||
{
|
||||
echo "=== Canary WSS + Cert Test ==="
|
||||
echo "Timestamp : $TIMESTAMP"
|
||||
echo "Node Port : $NODE_PORT"
|
||||
echo "WSS Port : $WSS_PORT"
|
||||
echo "Peer ID : $PEER_ID"
|
||||
echo "Protocol : $PROTOCOL"
|
||||
echo "Key Path : $KEY_PATH"
|
||||
echo "Cert Path : $CERT_PATH"
|
||||
echo "Address : $PEER_ADDRESS"
|
||||
echo "------------------------------------------"
|
||||
|
||||
$WAKUCANARY_BINARY \
|
||||
--address="$PEER_ADDRESS" \
|
||||
--protocol="$PROTOCOL" \
|
||||
--log-level=DEBUG \
|
||||
--websocket-secure-key-path="$KEY_PATH" \
|
||||
--websocket-secure-cert-path="$CERT_PATH"
|
||||
|
||||
echo "------------------------------------------"
|
||||
echo "Exit code: $?"
|
||||
} 2>&1 | tee "$LOG_FILE"
|
||||
|
||||
echo "✅ Log saved to: $LOG_FILE"
|
||||
@ -298,6 +298,7 @@ int main(int argc, char** argv) {
|
||||
snprintf(jsonConfig, 5000, "{ \
|
||||
\"clusterId\": 16, \
|
||||
\"shards\": [ 1, 32, 64, 128, 256 ], \
|
||||
\"numShardsInNetwork\": 257, \
|
||||
\"listenAddress\": \"%s\", \
|
||||
\"tcpPort\": %d, \
|
||||
\"relay\": %s, \
|
||||
|
||||
@ -16,7 +16,9 @@ when isMainModule:
|
||||
if (args.ethRpcEndpoint == ""):
|
||||
# Create a basic configuration for the Waku node
|
||||
# No RLN as we don't have an ETH RPC Endpoint
|
||||
NodeConfig.init(wakuConfig = WakuConfig.init(entryNodes = @[], clusterId = 42))
|
||||
NodeConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(entryNodes = @[], clusterId = 42)
|
||||
)
|
||||
else:
|
||||
# Connect to TWN, use ETH RPC Endpoint for RLN
|
||||
NodeConfig.init(ethRpcEndpoints = @[args.ethRpcEndpoint])
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
import std/[options, atomics, os, net, locks]
|
||||
import chronicles, chronos, chronos/threadsync, taskpools/channels_spsc_single, results
|
||||
import
|
||||
waku/common/logging,
|
||||
waku/factory/waku,
|
||||
waku/node/peer_manager,
|
||||
waku/waku_relay/[protocol, topic_health],
|
||||
@ -155,6 +156,8 @@ proc watchdogThreadBody(ctx: ptr WakuContext) {.thread.} =
|
||||
proc wakuThreadBody(ctx: ptr WakuContext) {.thread.} =
|
||||
## Waku thread that attends library user requests (stop, connect_to, etc.)
|
||||
|
||||
logging.setupLog(logging.LogLevel.DEBUG, logging.LogFormat.TEXT)
|
||||
|
||||
let wakuRun = proc(ctx: ptr WakuContext) {.async.} =
|
||||
var waku: Waku
|
||||
while true:
|
||||
|
||||
@ -23,9 +23,9 @@ suite "LibWaku Conf - toWakuConf":
|
||||
|
||||
test "Core mode configuration":
|
||||
## Given
|
||||
let wakuConfig = WakuConfig.init(entryNodes = @[], clusterId = 1)
|
||||
let protocolsConfig = ProtocolsConfig.init(entryNodes = @[], clusterId = 1)
|
||||
|
||||
let nodeConfig = NodeConfig.init(mode = Core, wakuConfig = wakuConfig)
|
||||
let nodeConfig = NodeConfig.init(mode = Core, protocolsConfig = protocolsConfig)
|
||||
|
||||
## When
|
||||
let wakuConfRes = toWakuConf(nodeConfig)
|
||||
@ -44,7 +44,7 @@ suite "LibWaku Conf - toWakuConf":
|
||||
## Given
|
||||
let nodeConfig = NodeConfig.init(
|
||||
mode = Core,
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes = @[],
|
||||
staticStoreNodes = @[],
|
||||
clusterId = 42,
|
||||
@ -72,8 +72,9 @@ suite "LibWaku Conf - toWakuConf":
|
||||
]
|
||||
let libConf = NodeConfig.init(
|
||||
mode = Core,
|
||||
wakuConfig =
|
||||
WakuConfig.init(entryNodes = entryNodes, staticStoreNodes = @[], clusterId = 1),
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes = entryNodes, staticStoreNodes = @[], clusterId = 1
|
||||
),
|
||||
)
|
||||
|
||||
## When
|
||||
@ -95,7 +96,7 @@ suite "LibWaku Conf - toWakuConf":
|
||||
"/ip4/192.168.1.1/tcp/60001/p2p/16Uuu2HBmAcHvhLqQKwSSbX6BG5JLWUDRcaLVrehUVqpw7fz1hbYd",
|
||||
]
|
||||
let nodeConf = NodeConfig.init(
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes = @[], staticStoreNodes = staticStoreNodes, clusterId = 1
|
||||
)
|
||||
)
|
||||
@ -113,7 +114,7 @@ suite "LibWaku Conf - toWakuConf":
|
||||
test "Message validation with max message size":
|
||||
## Given
|
||||
let nodeConfig = NodeConfig.init(
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes = @[],
|
||||
staticStoreNodes = @[],
|
||||
clusterId = 1,
|
||||
@ -135,7 +136,7 @@ suite "LibWaku Conf - toWakuConf":
|
||||
test "Message validation with RLN config":
|
||||
## Given
|
||||
let nodeConfig = NodeConfig.init(
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes = @[],
|
||||
clusterId = 1,
|
||||
messageValidation = MessageValidation(
|
||||
@ -174,7 +175,7 @@ suite "LibWaku Conf - toWakuConf":
|
||||
## Given
|
||||
let nodeConfig = NodeConfig.init(
|
||||
mode = Core,
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes =
|
||||
@[
|
||||
"enr:-QESuEC1p_s3xJzAC_XlOuuNrhVUETmfhbm1wxRGis0f7DlqGSw2FM-p2Vn7gmfkTTnAe8Ys2cgGBN8ufJnvzKQFZqFMBgmlkgnY0iXNlY3AyNTZrMaEDS8-D878DrdbNwcuY-3p1qdDp5MOoCurhdsNPJTXZ3c5g3RjcIJ2X4N1ZHCCd2g"
|
||||
@ -254,8 +255,9 @@ suite "LibWaku Conf - toWakuConf":
|
||||
|
||||
let nodeConfig = NodeConfig.init(
|
||||
mode = Core,
|
||||
wakuConfig =
|
||||
WakuConfig.init(entryNodes = entryNodes, staticStoreNodes = @[], clusterId = 1),
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes = entryNodes, staticStoreNodes = @[], clusterId = 1
|
||||
),
|
||||
)
|
||||
|
||||
## When
|
||||
|
||||
@ -7,8 +7,9 @@ import waku
|
||||
suite "Waku API - Create node":
|
||||
asyncTest "Create node with minimal configuration":
|
||||
## Given
|
||||
let nodeConfig =
|
||||
NodeConfig.init(wakuConfig = WakuConfig.init(entryNodes = @[], clusterId = 1))
|
||||
let nodeConfig = NodeConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(entryNodes = @[], clusterId = 1)
|
||||
)
|
||||
|
||||
# This is the actual minimal config but as the node auto-start, it is not suitable for tests
|
||||
# NodeConfig.init(ethRpcEndpoints = @["http://someaddress"])
|
||||
@ -27,7 +28,7 @@ suite "Waku API - Create node":
|
||||
## Given
|
||||
let nodeConfig = NodeConfig.init(
|
||||
mode = Core,
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes =
|
||||
@[
|
||||
"enr:-QESuEC1p_s3xJzAC_XlOuuNrhVUETmfhbm1wxRGis0f7DlqGSw2FM-p2Vn7gmfkTTnAe8Ys2cgGBN8ufJnvzKQFZqFMBgmlkgnY0iXNlY3AyNTZrMaEDS8-D878DrdbNwcuY-3p1qdDp5MOoCurhdsNPJTXZ3c5g3RjcIJ2X4N1ZHCCd2g"
|
||||
@ -63,7 +64,7 @@ suite "Waku API - Create node":
|
||||
## Given
|
||||
let nodeConfig = NodeConfig.init(
|
||||
mode = Core,
|
||||
wakuConfig = WakuConfig.init(
|
||||
protocolsConfig = ProtocolsConfig.init(
|
||||
entryNodes =
|
||||
@[
|
||||
"enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im",
|
||||
|
||||
@ -26,7 +26,7 @@ type MessageValidation* {.requiresInit.} = object
|
||||
maxMessageSize*: string # Accepts formats like "150 KiB", "1500 B"
|
||||
rlnConfig*: Option[RlnConfig]
|
||||
|
||||
type WakuConfig* {.requiresInit.} = object
|
||||
type ProtocolsConfig* {.requiresInit.} = object
|
||||
entryNodes: seq[string]
|
||||
staticStoreNodes: seq[string]
|
||||
clusterId: uint16
|
||||
@ -42,7 +42,7 @@ const DefaultMessageValidation* =
|
||||
MessageValidation(maxMessageSize: "150 KiB", rlnConfig: none(RlnConfig))
|
||||
|
||||
proc init*(
|
||||
T: typedesc[WakuConfig],
|
||||
T: typedesc[ProtocolsConfig],
|
||||
entryNodes: seq[string],
|
||||
staticStoreNodes: seq[string] = @[],
|
||||
clusterId: uint16,
|
||||
@ -57,7 +57,7 @@ proc init*(
|
||||
messageValidation: messageValidation,
|
||||
)
|
||||
|
||||
const TheWakuNetworkPreset* = WakuConfig(
|
||||
const TheWakuNetworkPreset* = ProtocolsConfig(
|
||||
entryNodes:
|
||||
@[
|
||||
"enrtree://AIRVQ5DDA4FFWLRBCHJWUWOO6X6S4ZTZ5B667LQ6AJU6PEYDLRD5O@sandbox.waku.nodes.status.im"
|
||||
@ -83,20 +83,20 @@ type WakuMode* {.pure.} = enum
|
||||
|
||||
type NodeConfig* {.requiresInit.} = object
|
||||
mode: WakuMode
|
||||
wakuConfig: WakuConfig
|
||||
protocolsConfig: ProtocolsConfig
|
||||
networkingConfig: NetworkingConfig
|
||||
ethRpcEndpoints: seq[string]
|
||||
|
||||
proc init*(
|
||||
T: typedesc[NodeConfig],
|
||||
mode: WakuMode = WakuMode.Core,
|
||||
wakuConfig: WakuConfig = TheWakuNetworkPreset,
|
||||
protocolsConfig: ProtocolsConfig = TheWakuNetworkPreset,
|
||||
networkingConfig: NetworkingConfig = DefaultNetworkingConfig,
|
||||
ethRpcEndpoints: seq[string] = @[],
|
||||
): T =
|
||||
return T(
|
||||
mode: mode,
|
||||
wakuConfig: wakuConfig,
|
||||
protocolsConfig: protocolsConfig,
|
||||
networkingConfig: networkingConfig,
|
||||
ethRpcEndpoints: ethRpcEndpoints,
|
||||
)
|
||||
@ -134,20 +134,20 @@ proc toWakuConf*(nodeConfig: NodeConfig): Result[WakuConf, string] =
|
||||
return err("Edge mode is not implemented")
|
||||
|
||||
## Network Conf
|
||||
let wakuConfig = nodeConfig.wakuConfig
|
||||
let protocolsConfig = nodeConfig.protocolsConfig
|
||||
|
||||
# Set cluster ID
|
||||
b.withClusterId(wakuConfig.clusterId)
|
||||
b.withClusterId(protocolsConfig.clusterId)
|
||||
|
||||
# Set sharding configuration
|
||||
b.withShardingConf(ShardingConfKind.AutoSharding)
|
||||
let autoShardingConfig = wakuConfig.autoShardingConfig
|
||||
let autoShardingConfig = protocolsConfig.autoShardingConfig
|
||||
b.withNumShardsInCluster(autoShardingConfig.numShardsInCluster)
|
||||
|
||||
# Process entry nodes - supports enrtree:, enr:, and multiaddress formats
|
||||
if wakuConfig.entryNodes.len > 0:
|
||||
if protocolsConfig.entryNodes.len > 0:
|
||||
let (enrTreeUrls, bootstrapEnrs, staticNodesFromEntry) = processEntryNodes(
|
||||
wakuConfig.entryNodes
|
||||
protocolsConfig.entryNodes
|
||||
).valueOr:
|
||||
return err("Failed to process entry nodes: " & error)
|
||||
|
||||
@ -169,11 +169,11 @@ proc toWakuConf*(nodeConfig: NodeConfig): Result[WakuConf, string] =
|
||||
|
||||
# TODO: verify behaviour
|
||||
# Set static store nodes
|
||||
if wakuConfig.staticStoreNodes.len > 0:
|
||||
b.withStaticNodes(wakuConfig.staticStoreNodes)
|
||||
if protocolsConfig.staticStoreNodes.len > 0:
|
||||
b.withStaticNodes(protocolsConfig.staticStoreNodes)
|
||||
|
||||
# Set message validation
|
||||
let msgValidation = wakuConfig.messageValidation
|
||||
let msgValidation = protocolsConfig.messageValidation
|
||||
let maxSizeBytes = parseMsgSize(msgValidation.maxMessageSize).valueOr:
|
||||
return err("Failed to parse max message size: " & error)
|
||||
b.withMaxMessageSize(maxSizeBytes)
|
||||
|
||||
@ -58,6 +58,9 @@ proc sendSubscribeRequest(
|
||||
|
||||
let connection = connOpt.get()
|
||||
|
||||
defer:
|
||||
await connection.closeWithEOF()
|
||||
|
||||
try:
|
||||
await connection.writeLP(filterSubscribeRequest.encode().buffer)
|
||||
except CatchableError:
|
||||
|
||||
@ -293,6 +293,9 @@ proc initProtocolHandler(wf: WakuFilter) =
|
||||
|
||||
var response: FilterSubscribeResponse
|
||||
|
||||
defer:
|
||||
await conn.closeWithEOF()
|
||||
|
||||
wf.peerRequestRateLimiter.checkUsageLimit(WakuFilterSubscribeCodec, conn):
|
||||
var buf: seq[byte]
|
||||
try:
|
||||
|
||||
@ -43,6 +43,9 @@ proc sendPushRequest(
|
||||
dialFailure & ": " & $peer & " is not accessible",
|
||||
)
|
||||
|
||||
defer:
|
||||
await connection.closeWithEOF()
|
||||
|
||||
await connection.writeLP(req.encode().buffer)
|
||||
|
||||
var buffer: seq[byte]
|
||||
|
||||
@ -107,6 +107,9 @@ proc handleRequest*(
|
||||
proc initProtocolHandler(wl: WakuLightPush) =
|
||||
proc handler(conn: Connection, proto: string) {.async: (raises: [CancelledError]).} =
|
||||
var rpc: LightPushResponse
|
||||
defer:
|
||||
await conn.closeWithEOF()
|
||||
|
||||
wl.requestRateLimiter.checkUsageLimit(WakuLightPushCodec, conn):
|
||||
var buffer: seq[byte]
|
||||
try:
|
||||
|
||||
@ -40,6 +40,9 @@ proc sendPushRequest(
|
||||
return err(dialFailure)
|
||||
let connection = connOpt.get()
|
||||
|
||||
defer:
|
||||
await connection.closeWithEOF()
|
||||
|
||||
let rpc = PushRPC(requestId: generateRequestId(wl.rng), request: some(req))
|
||||
await connection.writeLP(rpc.encode().buffer)
|
||||
|
||||
|
||||
@ -67,6 +67,9 @@ proc handleRequest*(
|
||||
proc initProtocolHandler(wl: WakuLegacyLightPush) =
|
||||
proc handler(conn: Connection, proto: string) {.async: (raises: [CancelledError]).} =
|
||||
var rpc: PushRPC
|
||||
defer:
|
||||
await conn.closeWithEOF()
|
||||
|
||||
wl.requestRateLimiter.checkUsageLimit(WakuLegacyLightPushCodec, conn):
|
||||
var buffer: seq[byte]
|
||||
try:
|
||||
|
||||
@ -176,8 +176,8 @@ proc initProtocolHandler(wpx: WakuPeerExchange) =
|
||||
return
|
||||
|
||||
let enrs = wpx.getEnrsFromCache(decBuf.get().request.numPeers)
|
||||
debug "peer exchange request received", enrs = $enrs
|
||||
|
||||
debug "peer exchange request received"
|
||||
trace "px enrs to respond", enrs = $enrs
|
||||
try:
|
||||
(await wpx.respond(enrs, conn)).isErrOr:
|
||||
waku_px_peers_sent.inc(enrs.len().int64())
|
||||
|
||||
@ -25,6 +25,9 @@ proc sendStoreRequest(
|
||||
): Future[StoreQueryResult] {.async, gcsafe.} =
|
||||
var req = request
|
||||
|
||||
defer:
|
||||
await connection.closeWithEof()
|
||||
|
||||
if req.requestId == "":
|
||||
req.requestId = generateRequestId(self.rng)
|
||||
|
||||
|
||||
@ -92,6 +92,10 @@ proc initProtocolHandler(self: WakuStore) =
|
||||
var successfulQuery = false ## only consider the correct queries in metrics
|
||||
var resBuf: StoreResp
|
||||
var queryDuration: float
|
||||
|
||||
defer:
|
||||
await conn.closeWithEof()
|
||||
|
||||
self.requestRateLimiter.checkUsageLimit(WakuStoreCodec, conn):
|
||||
let readRes = catch:
|
||||
await conn.readLp(DefaultMaxRpcSize.int)
|
||||
|
||||
@ -43,6 +43,9 @@ proc sendHistoryQueryRPC(
|
||||
|
||||
let connection = connOpt.get()
|
||||
|
||||
defer:
|
||||
await connection.closeWithEof()
|
||||
|
||||
let requestId =
|
||||
if req.requestId != "":
|
||||
req.requestId
|
||||
|
||||
@ -114,6 +114,10 @@ proc initProtocolHandler(ws: WakuStore) =
|
||||
var successfulQuery = false ## only consider the correct queries in metrics
|
||||
var resBuf: StoreResp
|
||||
var queryDuration: float
|
||||
|
||||
defer:
|
||||
await conn.closeWithEof()
|
||||
|
||||
ws.requestRateLimiter.checkUsageLimit(WakuLegacyStoreCodec, conn):
|
||||
let readRes = catch:
|
||||
await conn.readLp(DefaultMaxRpcSize.int)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user