Merge branch 'development' into new/ignore_pi.hole

This commit is contained in:
Mcat12
2017-08-01 09:17:14 -04:00
committed by GitHub
2 changed files with 50 additions and 20 deletions
+44 -20
View File
@@ -49,7 +49,7 @@ bool dbopen(void)
pthread_mutex_lock(&dblock);
int rc = sqlite3_open_v2(FTLfiles.db, &db, SQLITE_OPEN_READWRITE, NULL);
if( rc ){
logg("Cannot open database: %s", sqlite3_errmsg(db));
logg("dbopen() - SQL error (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
return false;
}
@@ -70,7 +70,6 @@ bool dbquery(const char *format, ...)
if(query == NULL)
{
logg("Memory allocation failed in dbquery()");
va_end(args);
return false;
}
@@ -96,7 +95,7 @@ bool db_create(void)
bool ret;
int rc = sqlite3_open_v2(FTLfiles.db, &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
if( rc ){
logg("Can't create database: %s", sqlite3_errmsg(db));
logg("db_create() - SQL error (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
return false;
}
@@ -131,7 +130,7 @@ void db_init(void)
{
int rc = sqlite3_open_v2(FTLfiles.db, &db, SQLITE_OPEN_READWRITE, NULL);
if( rc ){
logg("Cannot open database: %s", sqlite3_errmsg(db));
logg("db_init() - Cannot open database (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
logg("Creating new (empty) database");
@@ -171,16 +170,16 @@ int db_get_FTL_property(unsigned int ID)
rc = sqlite3_prepare(db, querystring, -1, &dbstmt, NULL);
if( rc ){
logg("Cannot read from database: %s", sqlite3_errmsg(db));
logg("db_get_FTL_property() - SQL error prepare (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
return -1;
}
free(querystring);
// Evaluate SQL statement
sqlite3_step(dbstmt);
if( rc ){
logg("Cannot evaluate in database: %s", sqlite3_errmsg(db));
rc = sqlite3_step(dbstmt);
if( rc != SQLITE_ROW ){
logg("db_get_FTL_property() - SQL error step (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
return -1;
}
@@ -200,15 +199,23 @@ bool db_set_FTL_property(unsigned int ID, int value)
int number_of_queries_in_DB(void)
{
sqlite3_stmt* stmt;
int result = -1;
// Count number of rows using the index timestamp is faster than select(*)
sqlite3_prepare_v2(db, "SELECT COUNT(timestamp) FROM queries", -1, &stmt, NULL);
int rc = sqlite3_step(stmt);
if (rc == SQLITE_ROW)
result = sqlite3_column_int(stmt, 0);
else
logg("get_number_of_queries_in_DB() - SQL error: %s", sqlite3_errmsg(db));
int rc = sqlite3_prepare_v2(db, "SELECT COUNT(timestamp) FROM queries", -1, &stmt, NULL);
if( rc ){
logg("number_of_queries_in_DB() - SQL error prepare (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
return -1;
}
rc = sqlite3_step(stmt);
if( rc != SQLITE_ROW ){
logg("number_of_queries_in_DB() - SQL error step (%i): %s", rc, sqlite3_errmsg(db));
dbclose();
return -1;
}
int result = sqlite3_column_int(stmt, 0);
sqlite3_finalize(stmt);
@@ -238,11 +245,16 @@ void save_to_DB(void)
// Open database
if(!dbopen())
{
logg("Failed to open DB in save_to_DB()");
logg("save_to_DB() - failed to open DB");
return;
}
int lasttimestamp = db_get_FTL_property(DB_LASTTIMESTAMP);
if(lasttimestamp < 0)
{
logg("save_to_DB() - error in trying to get last time stamp from database");
return;
}
int newlasttimestamp = lasttimestamp;
unsigned int saved = 0, saved_error = 0;
@@ -250,8 +262,20 @@ void save_to_DB(void)
sqlite3_stmt* stmt;
bool ret = dbquery("BEGIN TRANSACTION");
if(!ret){ dbclose(); return; }
sqlite3_prepare_v2(db, "INSERT INTO queries VALUES (NULL,?,?,?,?,?,?)", -1, &stmt, NULL);
if(!ret)
{
logg("save_to_DB() - unable to begin transaction (%i): %s", ret, sqlite3_errmsg(db));
dbclose();
return;
}
int rc = sqlite3_prepare_v2(db, "INSERT INTO queries VALUES (NULL,?,?,?,?,?,?)", -1, &stmt, NULL);
if( rc )
{
logg("save_to_DB() - error in preparing SQL statement (%i): %s", ret, sqlite3_errmsg(db));
dbclose();
return;
}
for(i = lastdbindex; i < counters.queries; i++)
{
@@ -298,12 +322,12 @@ void save_to_DB(void)
}
// Step and check if successful
int rc = sqlite3_step(stmt);
rc = sqlite3_step(stmt);
sqlite3_clear_bindings(stmt);
sqlite3_reset(stmt);
if( rc != SQLITE_DONE ){
logg("save_to_DB() - SQL error: %s", sqlite3_errmsg(db));
logg("save_to_DB() - SQL error (%i): %s", rc, sqlite3_errmsg(db));
saved_error++;
continue;
}
+6
View File
@@ -203,6 +203,12 @@ void process_pihole_log(int file)
continue;
}
if(strstr(readbuffer, "\"") != NULL)
{
if(debug) logg("Ignoring \" domain (query)");
continue;
}
if(!config.analyze_AAAA && strstr(readbuffer,"]: query[AAAA]") != NULL)
{
if(debug) logg("Not analyzing AAAA query");