From 0fa865a29e45db31a94e976a54905a4aed0dd3cc Mon Sep 17 00:00:00 2001 From: DL6ER Date: Mon, 2 Sep 2024 06:49:53 +0200 Subject: [PATCH] Add GET /api/stats/summary -> .gravity.last_update timestamp exposing the last gravity update via the API Signed-off-by: DL6ER --- src/api/docs/content/specs/stats.yaml | 4 ++++ src/api/stats.c | 1 + src/database/gravity-db.c | 5 +++++ src/database/gravity-db.h | 2 ++ 4 files changed, 12 insertions(+) diff --git a/src/api/docs/content/specs/stats.yaml b/src/api/docs/content/specs/stats.yaml index b2dfba01a..1ee832280 100644 --- a/src/api/docs/content/specs/stats.yaml +++ b/src/api/docs/content/specs/stats.yaml @@ -560,6 +560,10 @@ components: type: integer description: Number of domain on your Pi-hole's gravity list example: 104756 + last_update: + type: integer + description: Unix timestamp of last gravity update (may be `0` if unknown) + example: 1725194639 upstreams: type: object properties: diff --git a/src/api/stats.c b/src/api/stats.c index 60525d9cd..ae98f9df1 100644 --- a/src/api/stats.c +++ b/src/api/stats.c @@ -165,6 +165,7 @@ int api_stats_summary(struct ftl_conn *api) cJSON *gravity = JSON_NEW_OBJECT(); JSON_ADD_NUMBER_TO_OBJECT(gravity, "domains_being_blocked", num_gravity); + JSON_ADD_NUMBER_TO_OBJECT(gravity, "last_update", gravity_last_updated()); cJSON *json = JSON_NEW_OBJECT(); JSON_ADD_ITEM_TO_OBJECT(json, "queries", queries); diff --git a/src/database/gravity-db.c b/src/database/gravity-db.c index f6744b0bf..a90ac7efe 100644 --- a/src/database/gravity-db.c +++ b/src/database/gravity-db.c @@ -2796,3 +2796,8 @@ bool gravity_updated(void) return changed; } + +time_t __attribute__((pure)) gravity_last_updated(void) +{ + return last_updated > 0 ? (time_t)last_updated : 0; +} diff --git a/src/database/gravity-db.h b/src/database/gravity-db.h index 7bded00c8..996569e87 100644 --- a/src/database/gravity-db.h +++ b/src/database/gravity-db.h @@ -70,4 +70,6 @@ bool gravityDB_delFromTable(const enum gravity_list_type listtype, const cJSON* bool gravityDB_edit_groups(const enum gravity_list_type listtype, cJSON *groups, const tablerow *row, const char **message); +time_t gravity_last_updated(void) __attribute__((pure)); + #endif //GRAVITY_H