From c951e253a584c0eeb7bcce5f74c2630ced95cfab Mon Sep 17 00:00:00 2001 From: DL6ER Date: Sat, 21 Oct 2023 18:44:38 +0200 Subject: [PATCH] Include number of active clients in the response of GET /api/stats/summary Signed-off-by: DL6ER --- src/api/docs/content/specs/stats.yaml | 4 ++++ src/api/stats.c | 14 ++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/api/docs/content/specs/stats.yaml b/src/api/docs/content/specs/stats.yaml index af6ad056..60fa3f69 100644 --- a/src/api/docs/content/specs/stats.yaml +++ b/src/api/docs/content/specs/stats.yaml @@ -469,6 +469,10 @@ components: clients: type: object properties: + active: + type: integer + description: Number of active clients (seen in the last 24 hours) + example: 10 total: type: integer description: Total number of clients seen by FTL diff --git a/src/api/stats.c b/src/api/stats.c index c098e21f..0c06b1f7 100644 --- a/src/api/stats.c +++ b/src/api/stats.c @@ -106,7 +106,21 @@ int api_stats_summary(struct ftl_conn *api) JSON_ADD_NUMBER_TO_OBJECT(replies, get_query_reply_str(reply), counters->reply[reply]); JSON_ADD_ITEM_TO_OBJECT(queries, "replies", replies); + // Count clients that have been active within the most recent 24 hours + unsigned int activeclients = 0; + for(int clientID=0; clientID < counters->clients; clientID++) + { + // Get client pointer + const clientsData* client = getClient(clientID, true); + if(client == NULL) + continue; + + if(client->count > 0) + activeclients++; + } + cJSON *clients = JSON_NEW_OBJECT(); + JSON_ADD_NUMBER_TO_OBJECT(clients, "active", activeclients); JSON_ADD_NUMBER_TO_OBJECT(clients, "total", counters->clients); cJSON *gravity = JSON_NEW_OBJECT();