From fd0378e2d7d9c01869a4710797f914116f7d10b7 Mon Sep 17 00:00:00 2001 From: Vadim Babadzhanyan Date: Mon, 19 Aug 2024 18:48:12 +0300 Subject: [PATCH] fix connecting count[Feat]: Create User with Certificate Expiration Date #1287 --- src/lib/Server.js | 7 +++++++ src/lib/WireGuard.js | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/lib/Server.js b/src/lib/Server.js index 77870ef5..8d5aebcd 100644 --- a/src/lib/Server.js +++ b/src/lib/Server.js @@ -294,6 +294,13 @@ module.exports = class Server { return WireGuard.getMetrics(); } return ''; + })) + .get('/metrics/json', defineEventHandler(async (event) => { + setHeader(event, 'Content-Type', 'application/json'); + if (ENABLE_PROMETHEUS_METRICS === 'true') { + return WireGuard.getMetricsJSON(); + } + return ''; })); const safePathJoin = (base, target) => { diff --git a/src/lib/WireGuard.js b/src/lib/WireGuard.js index 1aa5d207..613190fa 100644 --- a/src/lib/WireGuard.js +++ b/src/lib/WireGuard.js @@ -450,4 +450,25 @@ Endpoint = ${WG_HOST}:${WG_CONFIG_PORT}`; return returnText; } + async getMetricsJSON() { + const clients = await this.getClients(); + let wireguardPeerCount = 0; + let wireguardEnabledPeersCount = 0; + let wireguardConnectedPeersCount = 0; + for (const client of Object.values(clients)) { + wireguardPeerCount++; + if (client.enabled === true) { + wireguardEnabledPeersCount++; + } + if (client.endpoint !== null) { + wireguardConnectedPeersCount++; + } + } + return { + wireguard_configured_peers: Number(wireguardPeerCount), + wireguard_enabled_peers: Number(wireguardEnabledPeersCount), + wireguard_connected_peers: Number(wireguardConnectedPeersCount), + }; + } + };