54 #define LOG_UNIQUEID 0
55 #define LOG_USERFIELD 0
59 #define DATE_FORMAT "%Y-%m-%d %T"
61 static const char name[] =
"sqlite";
62 static sqlite*
db = NULL;
68 " AcctId INTEGER PRIMARY KEY,"
72 " dcontext VARCHAR(80),"
73 " channel VARCHAR(80),"
74 " dstchannel VARCHAR(80),"
75 " lastapp VARCHAR(80),"
76 " lastdata VARCHAR(80),"
87 " disposition INTEGER,"
89 " accountcode VARCHAR(20)"
91 " ,uniqueid VARCHAR(32)"
94 " ,userfield VARCHAR(255)"
98 static void format_date(
char *buffer,
size_t length,
struct timeval *when)
110 char startstr[80], answerstr[80], endstr[80];
113 double hrbillsec = 0.0;
130 for(count=0; count<5; count++) {
131 res = sqlite_exec_printf(db,
133 "clid,src,dst,dcontext,"
134 "channel,dstchannel,lastapp,lastdata, "
136 "duration,billsec,disposition,amaflags, "
145 "'%q', '%q', '%q', '%q', "
146 "'%q', '%q', '%q', '%q', "
160 ")", NULL, NULL, &zErr,
163 startstr, answerstr, endstr,
177 if (res != SQLITE_BUSY && res != SQLITE_LOCKED)
207 "using cdr_sqlite3_custom.\n");
219 res = sqlite_exec(db,
"SELECT COUNT(AcctId) FROM cdr;", NULL, NULL, NULL);
221 res = sqlite_exec(db, sql_create_table, NULL, NULL, &zErr);
static int unload_module(void)
char accountcode[AST_MAX_ACCOUNT_CODE]
Asterisk main include file. File version handling, generic pbx functions.
char dstchannel[AST_MAX_EXTENSION]
char dcontext[AST_MAX_EXTENSION]
struct ast_tm * ast_localtime(const struct timeval *timep, struct ast_tm *p_tm, const char *zone)
Timezone-independent version of localtime_r(3).
int ast_tvzero(const struct timeval t)
Returns true if the argument is 0,0.
#define ast_mutex_lock(a)
#define AST_MODULE_INFO(keystr, flags_to_set, desc, fields...)
static ast_mutex_t sqlite_lock
char lastdata[AST_MAX_EXTENSION]
int ast_cdr_register(const char *name, const char *desc, ast_cdrbe be)
Register a CDR handling engine.
General Asterisk PBX channel definitions.
Asterisk file paths, configured in asterisk.conf.
char dst[AST_MAX_EXTENSION]
char channel[AST_MAX_EXTENSION]
Responsible for call detail data.
char lastapp[AST_MAX_EXTENSION]
void ast_log(int level, const char *file, int line, const char *function, const char *fmt,...)
Used for sending a log message This is the standard logger function. Probably the only way you will i...
const char * ast_config_AST_LOG_DIR
int ast_strftime(char *buf, size_t len, const char *format, const struct ast_tm *tm)
Special version of strftime(3) that handles fractions of a second. Takes the same arguments as strfti...
static void format_date(char *buffer, size_t length, struct timeval *when)
static int sqlite_log(struct ast_cdr *cdr)
char src[AST_MAX_EXTENSION]
static int load_module(void)
int64_t ast_tvdiff_us(struct timeval end, struct timeval start)
Computes the difference (in microseconds) between two struct timeval instances.
char clid[AST_MAX_EXTENSION]
#define ASTERISK_GPL_KEY
The text the key() function should return.
Asterisk module definitions.
static const char sql_create_table[]
SQL table format.
#define AST_MUTEX_DEFINE_STATIC(mutex)
void ast_cdr_unregister(const char *name)
Unregister a CDR handling engine.
#define ASTERISK_FILE_VERSION(file, version)
Register/unregister a source code file with the core.
char userfield[AST_MAX_USER_FIELD]
#define ast_mutex_unlock(a)