2014-07-11 22:12:11 +02:00
|
|
|
|
|
|
|
#include <sqlite3.h>
|
|
|
|
|
2014-07-13 19:18:56 +02:00
|
|
|
#include "cw_log.h"
|
|
|
|
|
2014-07-15 07:33:17 +02:00
|
|
|
#include "conf.h"
|
|
|
|
|
2014-07-13 19:18:56 +02:00
|
|
|
static sqlite3 *handle;
|
|
|
|
|
2014-07-14 22:44:46 +02:00
|
|
|
|
|
|
|
const char * init_tables = "\
|
2014-07-15 07:33:17 +02:00
|
|
|
CREATE TABLE IF NOT EXISTS acs (acid TEXT PRIMARY KEY, acname TEXT, lastseen TIMESTAMP); \
|
2014-07-14 22:44:46 +02:00
|
|
|
CREATE TABLE IF NOT EXISTS acips (acid TEXT,ip TEXT); \
|
|
|
|
";
|
|
|
|
|
2014-07-13 19:18:56 +02:00
|
|
|
int db_init()
|
|
|
|
{
|
|
|
|
const char * filename="ac.sqlite3";
|
|
|
|
|
2014-07-15 17:11:16 +02:00
|
|
|
cw_log_debug0("Init sqlite3 db: %s",filename);
|
2014-07-13 19:18:56 +02:00
|
|
|
int rc = sqlite3_open(filename,&handle);
|
|
|
|
if (rc)
|
|
|
|
{
|
2014-07-15 17:11:16 +02:00
|
|
|
|
2014-07-13 19:18:56 +02:00
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-07-14 22:44:46 +02:00
|
|
|
const char * cmd = init_tables;
|
2014-07-13 19:18:56 +02:00
|
|
|
rc = sqlite3_exec(handle,cmd,0,0,0);
|
|
|
|
if (rc)
|
|
|
|
{
|
|
|
|
const char *em = sqlite3_errmsg(handle);
|
2014-07-14 22:44:46 +02:00
|
|
|
cw_log(LOG_ERR,"Error executing SQL \"%s\" - Error msg: %s",cmd, em);
|
2014-07-13 19:18:56 +02:00
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2014-07-15 07:33:17 +02:00
|
|
|
|
|
|
|
static sqlite3_stmt * ping_stmt;
|
|
|
|
|
|
|
|
|
2014-07-15 00:34:41 +02:00
|
|
|
int db_start()
|
|
|
|
{
|
2014-07-15 17:11:16 +02:00
|
|
|
cw_log_debug0("Start sqlite3 db");
|
|
|
|
|
2014-07-15 07:33:17 +02:00
|
|
|
sqlite3_stmt *stmt;
|
|
|
|
int rc = sqlite3_prepare_v2(handle, "INSERT INTO acs (acid,acname) VALUES (?,?);",-1,&stmt,0);
|
2014-07-15 17:11:16 +02:00
|
|
|
if (rc)
|
|
|
|
goto errX;
|
2014-07-15 07:33:17 +02:00
|
|
|
|
|
|
|
rc = sqlite3_bind_text(stmt,1,conf_acid,-1,SQLITE_STATIC);
|
|
|
|
|
2014-07-17 22:58:58 +02:00
|
|
|
rc = sqlite3_bind_text(stmt,2,conf_acname,-1,SQLITE_STATIC);
|
2014-07-15 07:33:17 +02:00
|
|
|
|
|
|
|
sqlite3_step(stmt);
|
|
|
|
|
|
|
|
rc = sqlite3_prepare_v2(handle, "UPDATE acs SET lastseen=datetime('now') WHERE acid=?;",-1,&ping_stmt,0);
|
|
|
|
rc = sqlite3_bind_text(ping_stmt,1,conf_acid,-1,SQLITE_STATIC);
|
|
|
|
|
|
|
|
// rc = sqlite3_prepare_v2(handle, "UPDATE acs SET lastseen=99 WHERE acid=? ;",-1,&ping_stmt,0);
|
2014-07-15 17:15:42 +02:00
|
|
|
return 1;
|
2014-07-15 07:33:17 +02:00
|
|
|
|
2014-07-15 17:11:16 +02:00
|
|
|
errX:
|
|
|
|
cw_log(LOG_ERR,"Fatal: Can't start sqlite3 db, error %d",rc);
|
|
|
|
return 0;
|
2014-07-14 22:44:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2014-07-11 22:12:11 +02:00
|
|
|
|
2014-07-15 17:11:16 +02:00
|
|
|
void db_ping()
|
2014-07-11 22:12:11 +02:00
|
|
|
{
|
2014-07-15 17:11:16 +02:00
|
|
|
int rc = sqlite3_step(ping_stmt);
|
2014-07-17 22:58:58 +02:00
|
|
|
if (rc!=SQLITE_DONE){
|
2014-07-15 17:11:16 +02:00
|
|
|
cw_log(LOG_ERR,"Error: Can't ping database, error code %d",rc);
|
2014-07-11 22:12:11 +02:00
|
|
|
}
|
2014-07-15 17:11:16 +02:00
|
|
|
}
|
2014-07-11 22:12:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|