From 931f77a5f0e35d1775760c659843abc11f116117 Mon Sep 17 00:00:00 2001 From: yakuhito Date: Thu, 30 May 2024 12:43:19 +0300 Subject: [PATCH] add very unoptimized batch check for validator status --- src/index.ts | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 532bbaf..e1ce6eb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,5 @@ import { Hono, Context } from "hono"; import { serve } from "@hono/node-server"; - import { addConnection, isRelayConnected } from "./connections"; import { Validator } from "./types"; import { isPubkeyParticipating } from "./events"; @@ -12,6 +11,34 @@ const config = require(process.env.CONFIG || "../config.json"); // connect to each validator and track events config.validators.forEach(addConnection); +// check route for all validators +// (more efficient for custom monitoring applications) +app.get("/status", async (c: Context) => { + console.log("check all validators") + + const resp: Record = {}; + for(const validator of config.validators) { + const pubkey = validator.pubkey; + + if (!isRelayConnected(validator.relay)) { + console.log("check for", validator.relay, "FAILED (not connected)"); + resp[pubkey] = "Relay is not connected"; + continue; + } + + if (!(await isPubkeyParticipating(pubkey))) { + console.log("check for", validator.relay, "FAILED (not participating)"); + resp[pubkey] = "Pubkey does not participate in signing"; + continue; + } + + console.log("check for", validator.relay, "OK"); + resp[pubkey] = "OK"; + } + + return c.json(resp, 200); +}); + // check route (for use in monitoring application) app.get("/check/:pubkey", async (c: Context) => { const pubkey = c.req.param("pubkey");