From e5c58966809d4a46c194f1d8ba142ac2c46e1db7 Mon Sep 17 00:00:00 2001 From: benbierens Date: Wed, 26 Apr 2023 13:57:13 +0200 Subject: [PATCH] exposes peer information via debug/info --- codex/rest/api.nim | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/codex/rest/api.nim b/codex/rest/api.nim index 26cbd76f..da3cb8cc 100644 --- a/codex/rest/api.nim +++ b/codex/rest/api.nim @@ -45,6 +45,33 @@ proc validate( {.gcsafe, raises: [Defect].} = 0 +proc formatEnginePeers(peers: OrderedTable[PeerId, BlockExcPeerCtx]): JsonNode = + let jarray = newJArray() + for key, value in peers: + jarray.add(%* + { + "peerId": $(key.data), + "context": { + "blocks": value.blocks.len, + "peerWants": value.peerWants.len, + "exchanged": value.exchanged, + "lastExchange": $(value.lastExchange), + } + }) + + return jarray + +proc formatSwitchPeers(peers: Table[PeerId, crypto.PublicKey]): JsonNode = + let jarray = newJArray() + for key, value in peers: + jarray.add(%* + { + "peerId": $(key.data), + "key": $value + }) + + return %*{"switch-peers": jarray } + proc initRestApi*(node: CodexNodeRef, conf: CodexConf): RestRouter = var router = RestRouter.init(validate) router.api( @@ -244,6 +271,8 @@ proc initRestApi*(node: CodexNodeRef, conf: CodexConf): RestRouter = node.discovery.dhtRecord.get.toURI else: "", + "engine-peers": formatEnginePeers(node.engine.peers.peers), + "switch-peers": formatSwitchPeers(node.switch.peerStore[KeyBook].book), "codex": { "version": $codexVersion, "revision": $codexRevision