diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-09-26 22:03:10 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2003-09-26 22:03:10 +0000 |
commit | 527b4d2896d4d1344f4bc4dad75d163a2a42b029 (patch) | |
tree | 4c32c4f598d97824d7c72aba960c2cefe85ccd25 | |
parent | 81ea65303b659573bf244e0d5d5d2adbb45747e7 (diff) |
Remove MySQL support from default Asterisk in accordance with new MySQL library licensing
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@1550 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | README.mysql | 15 | ||||
-rwxr-xr-x | apps/Makefile | 12 | ||||
-rwxr-xr-x | apps/app_voicemail2.c | 145 | ||||
-rwxr-xr-x | cdr/Makefile | 16 | ||||
-rwxr-xr-x | cdr/cdr_mysql.c | 336 | ||||
-rwxr-xr-x | configs/cdr_mysql.conf.sample | 19 | ||||
-rwxr-xr-x | doc/README.mysql | 15 | ||||
-rwxr-xr-x | doc/cdr_mysql.txt | 29 |
8 files changed, 38 insertions, 549 deletions
diff --git a/README.mysql b/README.mysql new file mode 100755 index 000000000..27adaa956 --- /dev/null +++ b/README.mysql @@ -0,0 +1,15 @@ +MYSQL LICENSING UPDATE +====================== +We were recently contacted by MySQL and informed that the MySQL client +libraries are now under GPL license and not LGPL license as before. + +Since Asterisk does allow exceptions to GPL, we are removing MySQL support +from standard Asterisk. We will, where appropriate, make it available via +a separate package which will only be usable when Asterisk is used completely +within GPL (i.e. not in conjunction with G.729, OpenH.323, etc). We +apologize for the confusion. + +You may find this in the new "asterisk-addons" package. + +Mark Spencer +Digium diff --git a/apps/Makefile b/apps/Makefile index 61e7d11b7..16850288f 100755 --- a/apps/Makefile +++ b/apps/Makefile @@ -13,18 +13,6 @@ USE_MYSQL_VM_INTERFACE=0 -MLFLAGS= -ifeq ($(USE_MYSQL_VM_INTERFACE),1) -CFLAGS+=-DUSEMYSQLVM -CFLAGS+=$(shell if [ -d /usr/local/mysql/include ]; then echo "-I/usr/local/mysql/include"; fi) -CFLAGS+=$(shell if [ -d /usr/include/mysql ]; then echo "-I/usr/include/mysql"; fi) -CFLAGS+=$(shell if [ -d /usr/local/include/mysql ]; then echo "-I/usr/local/include/mysql"; fi) -CFLAGS+=$(shell if [ -d /opt/mysql/include/mysql ]; then echo "-I/opt/mysql/include/mysql"; fi) -MLFLAGS+=$(shell if [ -d /usr/lib/mysql ]; then echo "-L/usr/lib/mysql"; fi) -MLFLAGS+=$(shell if [ -d /usr/local/mysql/lib ]; then echo "-L/usr/local/mysql/lib"; fi) -MLFLAGS+=$(shell if [ -d /usr/local/lib/mysql ]; then echo "-L/usr/local/lib/mysql"; fi) -MLFLAGS+=$(shell if [ -d /opt/mysql/lib/mysql ]; then echo "-L/opt/mysql/lib/mysql"; fi) -endif #APPS=app_dial.so app_playback.so app_directory.so app_intercom.so app_mp3.so APPS=app_dial.so app_playback.so app_voicemail.so app_directory.so app_intercom.so app_mp3.so \ diff --git a/apps/app_voicemail2.c b/apps/app_voicemail2.c index a2fbca42f..3ae8a8744 100755 --- a/apps/app_voicemail2.c +++ b/apps/app_voicemail2.c @@ -36,6 +36,10 @@ #include <time.h> #ifdef USEMYSQLVM #include <mysql.h> +#include "mysql-vm-routines.h" +#else +static inline int sql_init(void) { return 0; } +static inline void sql_close(void) { } #endif #include <pthread.h> @@ -181,135 +185,7 @@ static void apply_options(struct ast_vm_user *vmu, char *options) } -#ifdef USEMYSQLVM -MYSQL *dbhandler=NULL; -ast_mutex_t mysqllock; -char dbuser[80]; -char dbpass[80]; -char dbhost[80]; -char dbname[80]; - -static int mysql_login(void) -{ - ast_verbose( VERBOSE_PREFIX_3 "Logging into database with user %s, password %s, and database %s\n", dbuser, dbpass, dbname); - - dbhandler=mysql_init(NULL); - if (!mysql_real_connect(dbhandler, dbhost[0] ? dbhost : NULL, dbuser, dbpass, dbname, 0, NULL, 0)) { - ast_log(LOG_WARNING, "Error Logging into database\n"); - return(-1); - } - ast_mutex_init(&mysqllock); - return(0); -} - -static void mysql_logout(void) -{ - mysql_close(dbhandler); -} - -static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, char *mailbox) -{ - MYSQL_RES *result; - MYSQL_ROW rowval; - MYSQL_FIELD *fields; - int numFields, i; - char query[240]; - char options[160] = ""; - struct ast_vm_user *retval; - - retval=malloc(sizeof(struct ast_vm_user)); - - if (retval) { - *retval->mailbox='\0'; - *retval->context='\0'; - *retval->password='\0'; - *retval->fullname='\0'; - *retval->email='\0'; - *retval->pager='\0'; - *retval->serveremail='\0'; - retval->attach=-1; - retval->alloced=1; - retval->next=NULL; - if (mailbox) { - strcpy(retval->mailbox, mailbox); - } - if (context) { - strcpy(retval->context, context); - } - - if (*retval->context) { - sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE context='%s' AND mailbox='%s'", context, mailbox); - } else { - sprintf(query, "SELECT password,fullname,email,pager,options FROM users WHERE mailbox='%s'", mailbox); - } - ast_mutex_lock(&mysqllock); - mysql_query(dbhandler, query); - if ((result=mysql_store_result(dbhandler))!=NULL) { - if ((rowval=mysql_fetch_row(result))!=NULL) { - numFields=mysql_num_fields(result); - fields=mysql_fetch_fields(result); - for (i=0; i<numFields; i++) { - if (rowval[i]) { - if (!strcmp(fields[i].name, "password")) { - strcpy(retval->password, rowval[i]); - } else if (!strcmp(fields[i].name, "fullname")) { - strcpy(retval->fullname, rowval[i]); - } else if (!strcmp(fields[i].name, "email")) { - strcpy(retval->email, rowval[i]); - } else if (!strcmp(fields[i].name, "pager")) { - strcpy(retval->pager, rowval[i]); - } else if (!strcmp(fields[i].name, "options")) { - strncpy(options, rowval[i], sizeof(options) - 1); - apply_options(retval, options); - } - } - } - mysql_free_result(result); - ast_mutex_unlock(&mysqllock); - return(retval); - } else { - mysql_free_result(result); - ast_mutex_unlock(&mysqllock); - free(retval); - return(NULL); - } - } - ast_mutex_unlock(&mysqllock); - free(retval); - } - return(NULL); -} - -static void vm_change_password(struct ast_vm_user *vmu, char *password) -{ - char query[400]; - - if (*vmu->context) { - sprintf(query, "UPDATE users SET password='%s' WHERE context='%s' AND mailbox='%s' AND password='%s'", password, vmu->context, vmu->mailbox, vmu->password); - } else { - sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s' AND password='%s'", password, vmu->mailbox, vmu->password); - } - ast_mutex_lock(&mysqllock); - mysql_query(dbhandler, query); - strcpy(vmu->password, password); - ast_mutex_unlock(&mysqllock); -} - -static void reset_user_pw(char *context, char *mailbox, char *password) -{ - char query[320]; - - if (context) { - sprintf(query, "UPDATE users SET password='%s' WHERE context='%s' AND mailbox='%s'", password, context, mailbox); - } else { - sprintf(query, "UPDATE users SET password='%s' WHERE mailbox='%s'", password, mailbox); - } - ast_mutex_lock(&mysqllock); - mysql_query(dbhandler, query); - ast_mutex_unlock(&mysqllock); -} -#else - +#ifndef USEMYSQLVM static struct ast_vm_user *find_user(struct ast_vm_user *ivm, char *context, char *mailbox) { /* This function could be made to generate one from a database, too */ @@ -2818,9 +2694,7 @@ int unload_module(void) STANDARD_HANGUP_LOCALUSERS; res = ast_unregister_application(app); res |= ast_unregister_application(app2); -#ifdef USEMYSQLVM - mysql_logout(); -#endif + sql_close(); return res; } @@ -2835,11 +2709,8 @@ int load_module(void) if ((res=load_config())) { return(res); } -#ifdef USEMYSQLVM - if ((res=mysql_login())) { - return(res); - } -#endif + if ((res = sql_init())) + return res; return res; } diff --git a/cdr/Makefile b/cdr/Makefile index 00f7c8066..368a8508b 100755 --- a/cdr/Makefile +++ b/cdr/Makefile @@ -15,19 +15,6 @@ MODS=cdr_csv.so CFLAGS+=-fPIC -# -# MySQL stuff... Autoconf anyone?? -# -MODS+=$(shell if [ -d /usr/local/mysql/include ] || [ -d /usr/include/mysql ] || [ -d /usr/local/include/mysql ] || [ -d /opt/mysql/include ]; then echo "cdr_mysql.so"; fi) -CFLAGS+=$(shell if [ -d /usr/local/mysql/include ]; then echo "-I/usr/local/mysql/include"; fi) -CFLAGS+=$(shell if [ -d /usr/include/mysql ]; then echo "-I/usr/include/mysql"; fi) -CFLAGS+=$(shell if [ -d /usr/local/include/mysql ]; then echo "-I/usr/local/include/mysql"; fi) -CFLAGS+=$(shell if [ -d /opt/mysql/include/mysql ]; then echo "-I/opt/mysql/include/mysql"; fi) -MLFLAGS= -MLFLAGS+=$(shell if [ -d /usr/lib/mysql ]; then echo "-L/usr/lib/mysql"; fi) -MLFLAGS+=$(shell if [ -d /usr/local/mysql/lib ]; then echo "-L/usr/local/mysql/lib"; fi) -MLFLAGS+=$(shell if [ -d /usr/local/lib/mysql ]; then echo "-L/usr/local/lib/mysql"; fi) -MLFLAGS+=$(shell if [ -d /opt/mysql/lib/mysql ]; then echo "-L/opt/mysql/lib/mysql"; fi) all: depend $(MODS) @@ -44,9 +31,6 @@ ifneq ($(wildcard .depend),) include .depend endif -cdr_mysql.so: cdr_mysql.o - $(CC) -shared -Xlinker -x -o $@ $< -lmysqlclient -lz $(MLFLAGS) - depend: .depend .depend: diff --git a/cdr/cdr_mysql.c b/cdr/cdr_mysql.c deleted file mode 100755 index adf03e261..000000000 --- a/cdr/cdr_mysql.c +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Asterisk -- A telephony toolkit for Linux. - * - * MySQL CDR logger - * - * James Sharp <jsharp@psychoses.org> - * - * Modified August 2003 - * Tilghman Lesher <asterisk__cdr__cdr_mysql__200308@the-tilghman.com> - * - * This program is free software, distributed under the terms of - * the GNU General Public License. - * - */ - -#include <sys/types.h> -#include <asterisk/config.h> -#include <asterisk/options.h> -#include <asterisk/channel.h> -#include <asterisk/cdr.h> -#include <asterisk/module.h> -#include <asterisk/logger.h> -#include "../asterisk.h" - -#include <stdio.h> -#include <string.h> - -#include <stdlib.h> -#include <unistd.h> -#include <time.h> - -#include <mysql.h> -#include <errmsg.h> - -#define DATE_FORMAT "%Y-%m-%d %T" - -static char *desc = "MySQL CDR Backend"; -static char *name = "mysql"; -static char *config = "cdr_mysql.conf"; -static char *hostname = NULL, *dbname = NULL, *dbuser = NULL, *password = NULL, *dbsock = NULL; -static int hostname_alloc = 0, dbname_alloc = 0, dbuser_alloc = 0, password_alloc = 0, dbsock_alloc = 0; -static int dbport = 0; -static int connected = 0; - -static ast_mutex_t mysql_lock = AST_MUTEX_INITIALIZER; - -static MYSQL mysql; - -static int mysql_log(struct ast_cdr *cdr) -{ - struct tm tm; - struct timeval tv; - char sqlcmd[2048], timestr[128]; - time_t t; - - ast_mutex_lock(&mysql_lock); - - memset(sqlcmd,0,2048); - - gettimeofday(&tv,NULL); - t = tv.tv_sec; - localtime_r(&t,&tm); - strftime(timestr,128,DATE_FORMAT,&tm); - - if ((!connected) && (hostname || dbsock) && dbuser && password && dbname) { - /* Attempt to connect */ - mysql_init(&mysql); - if (mysql_real_connect(&mysql, hostname, dbuser, password, dbname, dbport, dbsock, 0)) { - connected = 1; - } else { - ast_log(LOG_ERROR, "cdr_mysql: cannot connect to database server %s. Call will not be logged\n", hostname); - } - } else { - /* Long connection - ping the server */ - int error; - if ((error = mysql_ping(&mysql))) { - connected = 0; - switch (error) { - case CR_SERVER_GONE_ERROR: - ast_log(LOG_ERROR, "cdr_mysql: Server has gone away\n"); - break; - default: - ast_log(LOG_ERROR, "cdr_mysql: Unknown connection error\n"); - } - } - } - - if (connected) { - char *clid=NULL, *dcontext=NULL, *channel=NULL, *dstchannel=NULL, *lastapp=NULL, *lastdata=NULL; -#ifdef MYSQL_LOGUNIQUEID - char *uniqueid=NULL; -#endif - - /* Maximum space needed would be if all characters needed to be escaped, plus a trailing NULL */ - if ((clid = alloca(strlen(cdr->clid) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, clid, cdr->clid, strlen(cdr->clid)); - if ((dcontext = alloca(strlen(cdr->dcontext) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, dcontext, cdr->dcontext, strlen(cdr->dcontext)); - if ((channel = alloca(strlen(cdr->channel) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, channel, cdr->channel, strlen(cdr->channel)); - if ((dstchannel = alloca(strlen(cdr->dstchannel) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, dstchannel, cdr->dstchannel, strlen(cdr->dstchannel)); - if ((lastapp = alloca(strlen(cdr->lastapp) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, lastapp, cdr->lastapp, strlen(cdr->lastapp)); - if ((lastdata = alloca(strlen(cdr->lastdata) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, lastdata, cdr->lastdata, strlen(cdr->lastdata)); -#ifdef MYSQL_LOGUNIQUEID - if ((uniqueid = alloca(strlen(cdr->uniqueid) * 2 + 1)) != NULL) - mysql_real_escape_string(&mysql, uniqueid, cdr->uniqueid, strlen(cdr->uniqueid)); -#endif - - /* Check for all alloca failures above at once */ -#ifdef MYSQL_LOGUNIQUEID - if ((!clid) || (!dcontext) || (!channel) || (!dstchannel) || (!lastapp) || (!lastdata) || (!uniqueid)) { -#else - if ((!clid) || (!dcontext) || (!channel) || (!dstchannel) || (!lastapp) || (!lastdata)) { -#endif - ast_log(LOG_ERROR, "cdr_mysql: Out of memory error (insert fails)\n"); - ast_mutex_unlock(&mysql_lock); - return -1; - } - - ast_log(LOG_DEBUG,"cdr_mysql: inserting a CDR record.\n"); - -#ifdef MYSQL_LOGUNIQUEID - sprintf(sqlcmd,"INSERT INTO cdr (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid) VALUES ('%s','%s','%s','%s','%s', '%s','%s','%s','%s',%i,%i,'%s',%i,'%s','%s')",timestr,clid,cdr->src, cdr->dst, dcontext,channel, dstchannel, lastapp, lastdata,cdr->duration,cdr->billsec,ast_cdr_disp2str(cdr->disposition),cdr->amaflags, cdr->accountcode, uniqueid); -#else - sprintf(sqlcmd,"INSERT INTO cdr (calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode) VALUES ('%s','%s','%s','%s','%s', '%s','%s','%s','%s',%i,%i,'%s',%i,'%s')",timestr,clid,cdr->src, cdr->dst, dcontext,channel, dstchannel, lastapp, lastdata,cdr->duration,cdr->billsec,ast_cdr_disp2str(cdr->disposition),cdr->amaflags, cdr->accountcode); -#endif - ast_log(LOG_DEBUG,"cdr_mysql: SQL command as follows: %s\n",sqlcmd); - - if (mysql_real_query(&mysql,sqlcmd,strlen(sqlcmd))) { - ast_log(LOG_ERROR,"Failed to insert into database."); - ast_mutex_unlock(&mysql_lock); - return -1; - } - } - ast_mutex_unlock(&mysql_lock); - return 0; -} - -char *description(void) -{ - return desc; -} - -static int my_unload_module(void) -{ - if (connected) { - mysql_close(&mysql); - connected = 0; - } - if (hostname && hostname_alloc) { - free(hostname); - hostname = NULL; - hostname_alloc = 0; - } - if (dbname && dbname_alloc) { - free(dbname); - dbname = NULL; - dbname_alloc = 0; - } - if (dbuser && dbuser_alloc) { - free(dbuser); - dbuser = NULL; - dbuser_alloc = 0; - } - if (dbsock && dbsock_alloc) { - free(dbsock); - dbsock = NULL; - dbsock_alloc = 0; - } - if (password && password_alloc) { - free(password); - password = NULL; - password_alloc = 0; - } - dbport = 0; - ast_cdr_unregister(name); - return 0; -} - -static int my_load_module(void) -{ - int res; - struct ast_config *cfg; - struct ast_variable *var; - char *tmp; - - cfg = ast_load(config); - if (!cfg) { - ast_log(LOG_WARNING, "Unable to load config for mysql CDR's: %s\n", config); - return 0; - } - - var = ast_variable_browse(cfg, "global"); - if (!var) { - /* nothing configured */ - return 0; - } - - tmp = ast_variable_retrieve(cfg,"global","hostname"); - if (tmp) { - hostname = malloc(strlen(tmp) + 1); - if (hostname != NULL) { - hostname_alloc = 1; - strcpy(hostname,tmp); - } else { - ast_log(LOG_ERROR,"Out of memory error.\n"); - return -1; - } - } else { - ast_log(LOG_WARNING,"MySQL server hostname not specified. Assuming localhost\n"); - hostname = "localhost"; - } - - tmp = ast_variable_retrieve(cfg,"global","dbname"); - if (tmp) { - dbname = malloc(strlen(tmp) + 1); - if (dbname != NULL) { - dbname_alloc = 1; - strcpy(dbname,tmp); - } else { - ast_log(LOG_ERROR,"Out of memory error.\n"); - return -1; - } - } else { - ast_log(LOG_WARNING,"MySQL database not specified. Assuming asteriskcdrdb\n"); - dbname = "asteriskcdrdb"; - } - - tmp = ast_variable_retrieve(cfg,"global","user"); - if (tmp) { - dbuser = malloc(strlen(tmp) + 1); - if (dbuser != NULL) { - dbuser_alloc = 1; - strcpy(dbuser,tmp); - } else { - ast_log(LOG_ERROR,"Out of memory error.\n"); - return -1; - } - } else { - ast_log(LOG_WARNING,"MySQL database user not specified. Assuming root\n"); - dbuser = "root"; - } - - tmp = ast_variable_retrieve(cfg,"global","sock"); - if (tmp) { - dbsock = malloc(strlen(tmp) + 1); - if (dbsock != NULL) { - dbsock_alloc = 1; - strcpy(dbsock,tmp); - } else { - ast_log(LOG_ERROR,"Out of memory error.\n"); - return -1; - } - } else { - ast_log(LOG_WARNING,"MySQL database sock file not specified. Using default\n"); - dbsock = NULL; - } - - tmp = ast_variable_retrieve(cfg,"global","password"); - if (tmp) { - password = malloc(strlen(tmp) + 1); - if (password != NULL) { - password_alloc = 1; - strcpy(password,tmp); - } else { - ast_log(LOG_ERROR,"Out of memory error.\n"); - return -1; - } - } else { - ast_log(LOG_WARNING,"MySQL database password not specified. Assuming blank\n"); - password = ""; - } - - tmp = ast_variable_retrieve(cfg,"global","port"); - if (tmp) { - if (sscanf(tmp,"%d",&dbport) < 1) { - ast_log(LOG_WARNING,"Invalid MySQL port number. Using default\n"); - dbport = 0; - } - } - - ast_destroy(cfg); - - ast_log(LOG_DEBUG,"cdr_mysql: got hostname of %s\n",hostname); - ast_log(LOG_DEBUG,"cdr_mysql: got port of %d\n",dbport); - if (dbsock) - ast_log(LOG_DEBUG,"cdr_mysql: got sock file of %s\n",dbsock); - ast_log(LOG_DEBUG,"cdr_mysql: got user of %s\n",dbuser); - ast_log(LOG_DEBUG,"cdr_mysql: got dbname of %s\n",dbname); - ast_log(LOG_DEBUG,"cdr_mysql: got password of %s\n",password); - - mysql_init(&mysql); - - if (!mysql_real_connect(&mysql, hostname, dbuser, password, dbname, dbport, dbsock, 0)) { - ast_log(LOG_ERROR, "Failed to connect to mysql database %s on %s.\n", dbname, hostname); - connected = 0; - } else { - ast_log(LOG_DEBUG,"Successfully connected to MySQL database.\n"); - connected = 1; - } - - res = ast_cdr_register(name, desc, mysql_log); - if (res) { - ast_log(LOG_ERROR, "Unable to register MySQL CDR handling\n"); - } - return res; -} - -int load_module(void) -{ - return my_load_module(); -} - -int unload_module(void) -{ - return my_unload_module(); -} - -int reload(void) -{ - my_unload_module(); - return my_load_module(); -} - -int usecount(void) -{ - return connected; -} - -char *key() -{ - return ASTERISK_GPL_KEY; -} diff --git a/configs/cdr_mysql.conf.sample b/configs/cdr_mysql.conf.sample deleted file mode 100755 index 46b1dd34e..000000000 --- a/configs/cdr_mysql.conf.sample +++ /dev/null @@ -1,19 +0,0 @@ -; -; Note - if the database server is hosted on the same machine as the -; asterisk server, you can achieve a local Unix socket connection by -; setting hostname=localhost -; -; port and sock are both optional parameters. If hostname is specified -; and is not "localhost", then cdr_mysql will attempt to connect to the -; port specified or use the default port. If hostname is not specified -; or if hostname is "localhost", then cdr_mysql will attempt to connect -; to the socket file specified by sock or otherwise use the default socket -; file. -; -;[global] -;hostname=database.host.name -;dbname=asteriskcdrdb -;password=password -;user=asteriskcdruser -;port=3306 -;sock=/tmp/mysql.sock diff --git a/doc/README.mysql b/doc/README.mysql new file mode 100755 index 000000000..27adaa956 --- /dev/null +++ b/doc/README.mysql @@ -0,0 +1,15 @@ +MYSQL LICENSING UPDATE +====================== +We were recently contacted by MySQL and informed that the MySQL client +libraries are now under GPL license and not LGPL license as before. + +Since Asterisk does allow exceptions to GPL, we are removing MySQL support +from standard Asterisk. We will, where appropriate, make it available via +a separate package which will only be usable when Asterisk is used completely +within GPL (i.e. not in conjunction with G.729, OpenH.323, etc). We +apologize for the confusion. + +You may find this in the new "asterisk-addons" package. + +Mark Spencer +Digium diff --git a/doc/cdr_mysql.txt b/doc/cdr_mysql.txt deleted file mode 100755 index 5c3fffdee..000000000 --- a/doc/cdr_mysql.txt +++ /dev/null @@ -1,29 +0,0 @@ -Call Detail Recording for MySQL -=============================== - -Usage: -====== - -Include the module in your modules.conf. Change the database hostname, database name, username, and password in cdr_mysql.conf. - -Create a table called cdr under the database name you will be using the following schema. - -CREATE TABLE cdr ( - calldate datetime NOT NULL default '0000-00-00 00:00:00', - clid varchar(45) NOT NULL default '', - src varchar(45) NOT NULL default '', - dst varchar(45) NOT NULL default '', - dcontext varchar(45) NOT NULL default '', - channel varchar(45) NOT NULL default '', - dstchannel varchar(45) NOT NULL default '', - lastapp varchar(45) NOT NULL default '', - lastdata varchar(45) NOT NULL default '', - duration int(11) NOT NULL default '0', - billsec int(11) NOT NULL default '0', - disposition varchar(45) NOT NULL default '', - amaflags int(11) NOT NULL default '0', - accountcode varchar(45) NOT NULL default '', - uniqueid varchar(45) NOT NULL default '' -); - -The calls will automatically be logged as long as the module is loaded. |