From 07f1f7df4408ebbad03f04ae3f91bb2c5f3995d1 Mon Sep 17 00:00:00 2001 From: DL6ER Date: Thu, 15 Jun 2023 09:35:45 +0200 Subject: [PATCH] Save number of ABP-style entries in adlist table's new column abp_entries Signed-off-by: DL6ER --- src/api/docs/content/specs/lists.yaml | 5 +++++ src/api/docs/content/specs/search.yaml | 4 ++++ src/api/search.c | 1 + src/database/gravity-db.h | 1 + src/tools/gravity-parseList.c | 13 ++++++++++--- test/gravity.db.sql | 21 +++++++++++---------- 6 files changed, 32 insertions(+), 13 deletions(-) diff --git a/src/api/docs/content/specs/lists.yaml b/src/api/docs/content/specs/lists.yaml index 3e44fdb4..a3b11edf 100644 --- a/src/api/docs/content/specs/lists.yaml +++ b/src/api/docs/content/specs/lists.yaml @@ -259,6 +259,11 @@ components: type: integer readOnly: true example: 0 + abp_entries: + description: Number of ABP entries on this list + type: integer + readOnly: true + example: 0 status: description: List status type: integer diff --git a/src/api/docs/content/specs/search.yaml b/src/api/docs/content/specs/search.yaml index 87501cba..55ce223b 100644 --- a/src/api/docs/content/specs/search.yaml +++ b/src/api/docs/content/specs/search.yaml @@ -133,6 +133,10 @@ components: type: integer description: Number of invalid domains in the adlist example: 0 + abp_entries: + type: integer + description: Number of ABP entries in the adlist + example: 0 status: type: integer description: Status of the adlist diff --git a/src/api/search.c b/src/api/search.c index d45b8c79..79e9864a 100644 --- a/src/api/search.c +++ b/src/api/search.c @@ -68,6 +68,7 @@ static int search_table(struct ftl_conn *api, JSON_ADD_NUMBER_TO_OBJECT(row, "date_updated", table.date_updated); JSON_ADD_NUMBER_TO_OBJECT(row, "number", table.number); JSON_ADD_NUMBER_TO_OBJECT(row, "invalid_domains", table.invalid_domains); + JSON_ADD_NUMBER_TO_OBJECT(row, "abp_entries", table.abp_entries); JSON_ADD_NUMBER_TO_OBJECT(row, "status", table.status); } diff --git a/src/database/gravity-db.h b/src/database/gravity-db.h index 00f34cbd..24e0c99d 100644 --- a/src/database/gravity-db.h +++ b/src/database/gravity-db.h @@ -23,6 +23,7 @@ typedef struct { int type_int; int number; int invalid_domains; + int abp_entries; int status; const char *name; const char *domain; diff --git a/src/tools/gravity-parseList.c b/src/tools/gravity-parseList.c index 81b801bb..a7a74b6b 100644 --- a/src/tools/gravity-parseList.c +++ b/src/tools/gravity-parseList.c @@ -279,7 +279,7 @@ int gravity_parseList(const char *infile, const char *outfile, const char *adlis } // Update number of domains and update timestamp on this list - sql = "UPDATE adlist SET number = ?, invalid_domains = ?, date_updated = cast(strftime('%s', 'now') as int) WHERE id = ?;"; + sql = "UPDATE adlist SET number = ?, invalid_domains = ?, abp_entries = ?, date_updated = cast(strftime('%s', 'now') as int) WHERE id = ?;"; if(sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) != SQLITE_OK) { printf("%s %s Unable to prepare SQL statement to update adlist properties in database file %s\n", @@ -289,7 +289,6 @@ int gravity_parseList(const char *infile, const char *outfile, const char *adlis return EXIT_FAILURE; } - // Update date if(sqlite3_bind_int(stmt, 1, exact_domains + abp_domains) != SQLITE_OK) { printf("%s %s Unable to bind number of entries to SQL statement to update adlist properties in database file %s\n", @@ -306,7 +305,15 @@ int gravity_parseList(const char *infile, const char *outfile, const char *adlis sqlite3_close(db); return EXIT_FAILURE; } - if(sqlite3_bind_int(stmt, 3, adlistID) != SQLITE_OK) + if(sqlite3_bind_int(stmt, 3, abp_domains) != SQLITE_OK) + { + printf("%s %s Unable to bind number of ABP entries to SQL statement to update adlist properties in database file %s\n", + over, cross, outfile); + fclose(fpin); + sqlite3_close(db); + return EXIT_FAILURE; + } + if(sqlite3_bind_int(stmt, 4, adlistID) != SQLITE_OK) { printf("%s %s Unable to bind adlist ID to SQL statement to update adlist properties in database file %s\n", over, cross, outfile); diff --git a/test/gravity.db.sql b/test/gravity.db.sql index d6d0d0c4..ad490f47 100644 --- a/test/gravity.db.sql +++ b/test/gravity.db.sql @@ -25,16 +25,17 @@ CREATE TABLE domainlist CREATE TABLE adlist ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - address TEXT UNIQUE NOT NULL, - enabled BOOLEAN NOT NULL DEFAULT 1, - date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), - date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s', 'now') as int)), + id INTEGER PRIMARY KEY AUTOINCREMENT, + address TEXT UNIQUE NOT NULL, + enabled BOOLEAN NOT NULL DEFAULT 1, + date_added INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), + date_modified INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), comment TEXT, - date_updated INTEGER, - number INTEGER NOT NULL DEFAULT 0, - invalid_domains INTEGER NOT NULL DEFAULT 0, - status INTEGER NOT NULL DEFAULT 0 + date_updated INTEGER, + number INTEGER NOT NULL DEFAULT 0, + invalid_domains INTEGER NOT NULL DEFAULT 0, + status INTEGER NOT NULL DEFAULT 0, + abp_entries INTEGER NOT NULL DEFAULT 0 ); CREATE TABLE adlist_by_group @@ -214,7 +215,7 @@ INSERT INTO domainlist VALUES(16,3,'^regex-notMultiple.ftl$;querytype=!ANY,HTTPS /* Other special domains */ INSERT INTO domainlist VALUES(17,1,'blacklisted-group-disabled.com',1,1559928803,1559928803,'Entry disabled by a group'); -INSERT INTO adlist VALUES(1,'https://hosts-file.net/ad_servers.txt',1,1559928803,1559928803,'Migrated from /etc/pihole/adlists.list',1559928803,2000,2,1); +INSERT INTO adlist VALUES(1,'https://hosts-file.net/ad_servers.txt',1,1559928803,1559928803,'Migrated from /etc/pihole/adlists.list',1559928803,2000,2,1,0); INSERT INTO gravity VALUES('allowed.ftl',1); INSERT INTO gravity VALUES('gravity.ftl',1);