Merge changes from team/russell/sqlite:
* Add new module, cdr_sqlite3_custom which allows logging custom CDRs into a SQLite3 database. (issue #7149, alerios) * Add new module, res_config_sqlite, which adds realtime database configuration support for SQLite version 2. I decided that this was ok since we didn't have any realtime support for version 3. If someone ports this to version 3, then version 2 support can be removed or marked deprecated. (issue #7790, rbarun_proformatique) * Mark cdr_sqlite as deprecated in favor of cdr_sqlite3_custom. Also, note that there were other modules on the bug tracker that did not make the cut because they provided some duplicated functionality. Those are: * cdr_sqlite3 (issue #6754, moy) * cdr_sqlite3 (issue #8694, bsd) git-svn-id: http://svn.digium.com/svn/asterisk/trunk@58866 f38db490-d61c-443f-a65b-d21fe96a405b
This commit is contained in:
parent
e6cf30c5ae
commit
607988f17b
2
CHANGES
2
CHANGES
|
@ -66,6 +66,8 @@ Miscellaneous
|
|||
* Added the parkedcallreparking option to features.conf
|
||||
* SMDI is now enabled in voicemail using the smdienable option.
|
||||
* Added zap show version CLI command to chan_zap.
|
||||
* Added a new CDR module, cdr_sqlite3_custom.
|
||||
* Added a new realtime configuration module, res_config_sqlite
|
||||
|
||||
AMI - The manager (TCP/TLS/HTTP)
|
||||
--------------------------------
|
||||
|
|
|
@ -36,3 +36,9 @@ Applications:
|
|||
performs mostly a 'ChanExists' sort of function.
|
||||
* SetCallerPres() has been replaced with the CALLERPRES() dialplan function
|
||||
and is now deprecated.
|
||||
|
||||
CDR:
|
||||
|
||||
* The cdr_sqlite module has been marked as deprecated in favor of
|
||||
cdr_sqlite3_custom. It will potentially be removed from the tree
|
||||
after Asterisk 1.6 is released.
|
||||
|
|
|
@ -23,6 +23,7 @@ QT=@PBX_QT@
|
|||
RADIUS=@PBX_RADIUS@
|
||||
SPEEX=@PBX_SPEEX@
|
||||
SQLITE=@PBX_SQLITE@
|
||||
SQLITE3=@PBX_SQLITE3@
|
||||
SSL=@PBX_OPENSSL@
|
||||
TONEZONE=@PBX_TONEZONE@
|
||||
UNIXODBC=@PBX_UNIXODBC@
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
*
|
||||
* Creates the database and table on-the-fly
|
||||
* \ingroup cdr_drivers
|
||||
*
|
||||
* \note This module has been marked deprecated in favor for cdr_sqlite3_custom
|
||||
*/
|
||||
|
||||
/*** MODULEINFO
|
||||
|
@ -180,6 +182,9 @@ static int load_module(void)
|
|||
char fn[PATH_MAX];
|
||||
int res;
|
||||
|
||||
ast_log(LOG_WARNING, "This module has been marked deprecated in favor of "
|
||||
"using cdr_sqlite3_custom. (May be removed after Asterisk 1.6)\n");
|
||||
|
||||
/* is the database there? */
|
||||
snprintf(fn, sizeof(fn), "%s/cdr.db", ast_config_AST_LOG_DIR);
|
||||
db = sqlite_open(fn, AST_FILE_MODE, &zErr);
|
||||
|
|
|
@ -0,0 +1,264 @@
|
|||
/*
|
||||
* Asterisk -- An open source telephony toolkit.
|
||||
*
|
||||
* Copyright (C) 1999 - 2007, Digium, Inc.
|
||||
*
|
||||
* Mark Spencer <markster@digium.com> and others.
|
||||
*
|
||||
* See http://www.asterisk.org for more information about
|
||||
* the Asterisk project. Please do not directly contact
|
||||
* any of the maintainers of this project for assistance;
|
||||
* the project provides a web site, mailing lists and IRC
|
||||
* channels for your use.
|
||||
*
|
||||
* This program is free software, distributed under the terms of
|
||||
* the GNU General Public License Version 2. See the LICENSE file
|
||||
* at the top of the source tree.
|
||||
*/
|
||||
|
||||
/*! \file
|
||||
*
|
||||
* \brief Custom SQLite3 CDR records.
|
||||
*
|
||||
* \author Adapted by Alejandro Rios <alejandro.rios@avatar.com.co> and
|
||||
* Russell Bryant <russell@digium.com> from
|
||||
* cdr_mysql_custom by Edward Eastman <ed@dm3.co.uk>,
|
||||
* and cdr_sqlite by Holger Schurig <hs4233@mail.mn-solutions.de>
|
||||
*
|
||||
*
|
||||
* \arg See also \ref AstCDR
|
||||
*
|
||||
*
|
||||
* \ingroup cdr_drivers
|
||||
*/
|
||||
|
||||
/*** MODULEINFO
|
||||
<depend>sqlite3</depend>
|
||||
***/
|
||||
|
||||
#include "asterisk.h"
|
||||
|
||||
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <unistd.h>
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sqlite3.h>
|
||||
|
||||
#include "asterisk/channel.h"
|
||||
#include "asterisk/cdr.h"
|
||||
#include "asterisk/module.h"
|
||||
#include "asterisk/config.h"
|
||||
#include "asterisk/pbx.h"
|
||||
#include "asterisk/logger.h"
|
||||
#include "asterisk/utils.h"
|
||||
#include "asterisk/cli.h"
|
||||
#include "asterisk/options.h"
|
||||
|
||||
AST_MUTEX_DEFINE_STATIC(lock);
|
||||
|
||||
static const char config_file[] = "cdr_sqlite3_custom.conf";
|
||||
|
||||
static char *desc = "Customizable SQLite3 CDR Backend";
|
||||
static char *name = "cdr_sqlite3_custom";
|
||||
static sqlite3 *db = NULL;
|
||||
|
||||
static char table[80];
|
||||
static char columns[1024];
|
||||
static char values[1024];
|
||||
|
||||
static int load_config(int reload)
|
||||
{
|
||||
struct ast_config *cfg;
|
||||
struct ast_variable *mappingvar;
|
||||
const char *tmp;
|
||||
|
||||
if (!(cfg = ast_config_load(config_file))) {
|
||||
if (reload)
|
||||
ast_log(LOG_WARNING, "%s: Failed to reload configuration file.\n", name);
|
||||
else {
|
||||
ast_log(LOG_WARNING,
|
||||
"%s: Failed to load configuration file. Module not activated.\n",
|
||||
name);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!reload)
|
||||
ast_mutex_lock(&lock);
|
||||
|
||||
if (!(mappingvar = ast_variable_browse(cfg, "master"))) {
|
||||
/* nothing configured */
|
||||
ast_config_destroy(cfg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Mapping must have a table name */
|
||||
tmp = ast_variable_retrieve(cfg, "master", "table");
|
||||
if (!ast_strlen_zero(tmp))
|
||||
ast_copy_string(table, tmp, sizeof(table));
|
||||
else {
|
||||
ast_log(LOG_WARNING, "%s: Table name not specified. Assuming cdr.\n", name);
|
||||
strcpy(table, "cdr");
|
||||
}
|
||||
|
||||
tmp = ast_variable_retrieve(cfg, "master", "columns");
|
||||
if (!ast_strlen_zero(tmp))
|
||||
ast_copy_string(columns, tmp, sizeof(columns));
|
||||
else {
|
||||
ast_log(LOG_WARNING, "%s: Column names not specified. Module not loaded.\n",
|
||||
name);
|
||||
ast_config_destroy(cfg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
tmp = ast_variable_retrieve(cfg, "master", "values");
|
||||
if (!ast_strlen_zero(tmp))
|
||||
ast_copy_string(values, tmp, sizeof(values));
|
||||
else {
|
||||
ast_log(LOG_WARNING, "%s: Values not specified. Module not loaded.\n", name);
|
||||
ast_config_destroy(cfg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!reload)
|
||||
ast_mutex_unlock(&lock);
|
||||
|
||||
ast_config_destroy(cfg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* assumues 'to' buffer is at least strlen(from) * 2 + 1 bytes */
|
||||
static int do_escape(char *to, const char *from)
|
||||
{
|
||||
char *out = to;
|
||||
|
||||
for (; *from; from++) {
|
||||
if (*from == '\'' || *from == '\\')
|
||||
*out++ = *from;
|
||||
*out++ = *from;
|
||||
}
|
||||
*out = '\0';
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sqlite3_log(struct ast_cdr *cdr)
|
||||
{
|
||||
int res = 0;
|
||||
char *zErr = 0;
|
||||
char *sql_cmd;
|
||||
struct ast_channel dummy = { 0, };
|
||||
int count;
|
||||
|
||||
{ /* Make it obvious that only sql_cmd should be used outside of this block */
|
||||
char *sql_tmp_cmd;
|
||||
char sql_insert_cmd[2048] = "";
|
||||
sql_tmp_cmd = sqlite3_mprintf("INSERT INTO %q (%q) VALUES (%q)", table, columns, values);
|
||||
dummy.cdr = cdr;
|
||||
pbx_substitute_variables_helper(&dummy, sql_tmp_cmd, sql_insert_cmd, sizeof(sql_insert_cmd) - 1);
|
||||
sqlite3_free(sql_tmp_cmd);
|
||||
sql_cmd = alloca(strlen(sql_insert_cmd) * 2 + 1);
|
||||
do_escape(sql_cmd, sql_insert_cmd);
|
||||
}
|
||||
|
||||
ast_mutex_lock(&lock);
|
||||
|
||||
for (count = 0; count < 5; count++) {
|
||||
res = sqlite3_exec(db, sql_cmd, NULL, NULL, &zErr);
|
||||
if (res != SQLITE_BUSY && res != SQLITE_LOCKED)
|
||||
break;
|
||||
usleep(200);
|
||||
}
|
||||
|
||||
if (zErr) {
|
||||
ast_log(LOG_ERROR, "%s: %s. sentence: %s.\n", name, zErr, sql_cmd);
|
||||
sqlite3_free(zErr);
|
||||
}
|
||||
|
||||
ast_mutex_unlock(&lock);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static int unload_module(void)
|
||||
{
|
||||
if (db)
|
||||
sqlite3_close(db);
|
||||
|
||||
ast_cdr_unregister(name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int load_module(void)
|
||||
{
|
||||
char *zErr;
|
||||
char fn[PATH_MAX];
|
||||
int res;
|
||||
char *sql_cmd;
|
||||
|
||||
if (!load_config(0)) {
|
||||
res = ast_cdr_register(name, desc, sqlite3_log);
|
||||
if (res) {
|
||||
ast_log(LOG_ERROR, "%s: Unable to register custom SQLite3 CDR handling\n", name);
|
||||
return AST_MODULE_LOAD_DECLINE;
|
||||
}
|
||||
}
|
||||
|
||||
/* is the database there? */
|
||||
snprintf(fn, sizeof(fn), "%s/master.db", ast_config_AST_LOG_DIR);
|
||||
res = sqlite3_open(fn, &db);
|
||||
if (!db) {
|
||||
ast_log(LOG_ERROR, "%s: Could not open database %s.\n", name, fn);
|
||||
sqlite3_free(zErr);
|
||||
return AST_MODULE_LOAD_DECLINE;
|
||||
}
|
||||
|
||||
/* is the table there? */
|
||||
sql_cmd = sqlite3_mprintf("SELECT COUNT(AcctId) FROM %q;", table);
|
||||
res = sqlite3_exec(db, sql_cmd, NULL, NULL, NULL);
|
||||
sqlite3_free(sql_cmd);
|
||||
if (res) {
|
||||
sql_cmd = sqlite3_mprintf("CREATE TABLE %q (AcctId INTEGER PRIMARY KEY,%q)", table, columns);
|
||||
res = sqlite3_exec(db, sql_cmd, NULL, NULL, &zErr);
|
||||
sqlite3_free(sql_cmd);
|
||||
if (zErr) {
|
||||
ast_log(LOG_WARNING, "%s: %s.\n", name, zErr);
|
||||
sqlite3_free(zErr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (res) {
|
||||
ast_log(LOG_ERROR, "%s: Unable to create table '%s': %s.\n", name, table, zErr);
|
||||
sqlite3_free(zErr);
|
||||
if (db)
|
||||
sqlite3_close(db);
|
||||
return AST_MODULE_LOAD_DECLINE;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int reload(void)
|
||||
{
|
||||
int res;
|
||||
|
||||
ast_mutex_lock(&lock);
|
||||
res = load_config(1);
|
||||
ast_mutex_unlock(&lock);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_DEFAULT, "SQLite3 Custom CDR Module",
|
||||
.load = load_module,
|
||||
.unload = unload_module,
|
||||
.reload = reload,
|
||||
);
|
|
@ -0,0 +1,7 @@
|
|||
;
|
||||
; Mappings for custom config file
|
||||
;
|
||||
[master] ; currently, only file "master.db" is supported, with only one table at a time.
|
||||
table => cdr
|
||||
columns => calldate, clid, dcontext, channel, dstchannel, lastapp, lastdata, duration, billsec, disposition, amaflags, accountcode, uniqueid, userfield, test
|
||||
values => '${CDR(start)}','${CDR(clid)}','${CDR(dcontext)}','${CDR(channel)}','${CDR(dstchannel)}','${CDR(lastapp)}','${CDR(lastdata)}','${CDR(duration)}','${CDR(billsec)}','${CDR(disposition)}','${CDR(amaflags)}','${CDR(accountcode)}','${CDR(uniqueid)}','${CDR(userfield)}','${CDR(test)}'
|
|
@ -18,6 +18,7 @@
|
|||
;uncomment to load queues.conf via the odbc engine.
|
||||
;
|
||||
;queues.conf => odbc,asterisk,ast_config
|
||||
;extensions.conf => sqlite,asterisk,ast_config
|
||||
;
|
||||
; The following files CANNOT be loaded from Realtime storage:
|
||||
; asterisk.conf
|
||||
|
@ -42,6 +43,12 @@
|
|||
;example => odbc,asterisk,alttable
|
||||
;example2 => ldap,"dc=oxymium,dc=net",example2
|
||||
;
|
||||
; "odbc" is shown in the examples below, but is not the only valid realtime
|
||||
; engine. There is:
|
||||
; odbc ... res_config_odbc
|
||||
; sqlite ... res_config_sqlite
|
||||
; pgsql ... res_config_pgsql
|
||||
;
|
||||
;iaxusers => odbc,asterisk
|
||||
;iaxpeers => odbc,asterisk
|
||||
;sipusers => odbc,asterisk
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
[general]
|
||||
|
||||
; The database file.
|
||||
dbfile => /var/lib/asterisk/sqlite.db
|
||||
|
||||
; Both config_table and cdr_table are optional. If config_table is omitted,
|
||||
; you must specify it in extconfig.conf. If it is both provided here and in
|
||||
; extconfig.conf, the value given here is used. If cdr_table is omitted, CDR
|
||||
; support is simply disabled.
|
||||
config_table => ast_config
|
||||
cdr_table => ast_cdr
|
||||
|
||||
; This parameter controls the registration of the SQLITE() Dialplan application.
|
||||
app_enable => yes
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
#! /bin/sh
|
||||
# From configure.ac Revision: 57557 .
|
||||
# From configure.ac Revision: 58858 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.60.
|
||||
#
|
||||
|
@ -819,6 +819,10 @@ SQLITE_LIB
|
|||
SQLITE_INCLUDE
|
||||
SQLITE_DIR
|
||||
PBX_SQLITE
|
||||
SQLITE3_LIB
|
||||
SQLITE3_INCLUDE
|
||||
SQLITE3_DIR
|
||||
PBX_SQLITE3
|
||||
SUPPSERV_LIB
|
||||
SUPPSERV_INCLUDE
|
||||
SUPPSERV_DIR
|
||||
|
@ -1520,6 +1524,7 @@ Optional Packages:
|
|||
--with-radius=PATH use Radius Client files in PATH
|
||||
--with-speex=PATH use Speex files in PATH
|
||||
--with-sqlite=PATH use SQLite files in PATH
|
||||
--with-sqlite3=PATH use SQLite files in PATH
|
||||
--with-suppserv=PATH use mISDN Supplemental Services files in PATH
|
||||
--with-ssl=PATH use OpenSSL files in PATH
|
||||
--with-tds=PATH use FreeTDS files in PATH
|
||||
|
@ -8820,6 +8825,34 @@ PBX_SQLITE=0
|
|||
|
||||
|
||||
|
||||
SQLITE3_DESCRIP="SQLite"
|
||||
SQLITE3_OPTION="sqlite3"
|
||||
|
||||
# Check whether --with-sqlite3 was given.
|
||||
if test "${with_sqlite3+set}" = set; then
|
||||
withval=$with_sqlite3;
|
||||
case ${withval} in
|
||||
n|no)
|
||||
USE_SQLITE3=no
|
||||
;;
|
||||
y|ye|yes)
|
||||
ac_mandatory_list="${ac_mandatory_list} SQLITE3"
|
||||
;;
|
||||
*)
|
||||
SQLITE3_DIR="${withval}"
|
||||
ac_mandatory_list="${ac_mandatory_list} SQLITE3"
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
||||
|
||||
PBX_SQLITE3=0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
SUPPSERV_DESCRIP="mISDN Supplemental Services"
|
||||
SUPPSERV_OPTION="suppserv"
|
||||
|
||||
|
@ -32007,6 +32040,461 @@ fi
|
|||
|
||||
|
||||
|
||||
if test "x${PBX_SQLITE3}" != "x1" -a "${USE_SQLITE3}" != "no"; then
|
||||
pbxlibdir=""
|
||||
if test "x${SQLITE3_DIR}" != "x"; then
|
||||
if test -d ${SQLITE3_DIR}/lib; then
|
||||
pbxlibdir="-L${SQLITE3_DIR}/lib"
|
||||
else
|
||||
pbxlibdir="-L${SQLITE3_DIR}"
|
||||
fi
|
||||
fi
|
||||
pbxfuncname="sqlite3_open"
|
||||
if test "x${pbxfuncname}" = "x" ; then # empty lib, assume only headers
|
||||
AST_SQLITE3_FOUND=yes
|
||||
else
|
||||
as_ac_Lib=`echo "ac_cv_lib_sqlite3_${pbxfuncname}" | $as_tr_sh`
|
||||
{ echo "$as_me:$LINENO: checking for ${pbxfuncname} in -lsqlite3" >&5
|
||||
echo $ECHO_N "checking for ${pbxfuncname} in -lsqlite3... $ECHO_C" >&6; }
|
||||
if { as_var=$as_ac_Lib; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_check_lib_save_LIBS=$LIBS
|
||||
LIBS="-lsqlite3 ${pbxlibdir} $LIBS"
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
|
||||
/* Override any GCC internal prototype to avoid an error.
|
||||
Use char because int might match the return type of a GCC
|
||||
builtin and then its argument prototype would still apply. */
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
char ${pbxfuncname} ();
|
||||
int
|
||||
main ()
|
||||
{
|
||||
return ${pbxfuncname} ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext conftest$ac_exeext
|
||||
if { (ac_try="$ac_link"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_link") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest$ac_exeext'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
eval "$as_ac_Lib=yes"
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
eval "$as_ac_Lib=no"
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
LIBS=$ac_check_lib_save_LIBS
|
||||
fi
|
||||
ac_res=`eval echo '${'$as_ac_Lib'}'`
|
||||
{ echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
echo "${ECHO_T}$ac_res" >&6; }
|
||||
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
|
||||
AST_SQLITE3_FOUND=yes
|
||||
else
|
||||
AST_SQLITE3_FOUND=no
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if test "${AST_SQLITE3_FOUND}" = "yes"; then
|
||||
SQLITE3_LIB="-lsqlite3 "
|
||||
SQLITE3_HEADER_FOUND="1"
|
||||
if test "x${SQLITE3_DIR}" != "x"; then
|
||||
SQLITE3_LIB="${pbxlibdir} ${SQLITE3_LIB}"
|
||||
SQLITE3_INCLUDE="-I${SQLITE3_DIR}/include"
|
||||
saved_cppflags="${CPPFLAGS}"
|
||||
CPPFLAGS="${CPPFLAGS} -I${SQLITE3_DIR}/include"
|
||||
if test "xsqlite3.h" != "x" ; then
|
||||
as_ac_Header=`echo "ac_cv_header_${SQLITE3_DIR}/include/sqlite3.h" | $as_tr_sh`
|
||||
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||
{ echo "$as_me:$LINENO: checking for ${SQLITE3_DIR}/include/sqlite3.h" >&5
|
||||
echo $ECHO_N "checking for ${SQLITE3_DIR}/include/sqlite3.h... $ECHO_C" >&6; }
|
||||
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
fi
|
||||
ac_res=`eval echo '${'$as_ac_Header'}'`
|
||||
{ echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
echo "${ECHO_T}$ac_res" >&6; }
|
||||
else
|
||||
# Is the header compilable?
|
||||
{ echo "$as_me:$LINENO: checking ${SQLITE3_DIR}/include/sqlite3.h usability" >&5
|
||||
echo $ECHO_N "checking ${SQLITE3_DIR}/include/sqlite3.h usability... $ECHO_C" >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
#include <${SQLITE3_DIR}/include/sqlite3.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_compile") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
echo "${ECHO_T}$ac_header_compiler" >&6; }
|
||||
|
||||
# Is the header present?
|
||||
{ echo "$as_me:$LINENO: checking ${SQLITE3_DIR}/include/sqlite3.h presence" >&5
|
||||
echo $ECHO_N "checking ${SQLITE3_DIR}/include/sqlite3.h presence... $ECHO_C" >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <${SQLITE3_DIR}/include/sqlite3.h>
|
||||
_ACEOF
|
||||
if { (ac_try="$ac_cpp conftest.$ac_ext"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null; then
|
||||
if test -s conftest.err; then
|
||||
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
|
||||
else
|
||||
ac_cpp_err=
|
||||
fi
|
||||
else
|
||||
ac_cpp_err=yes
|
||||
fi
|
||||
if test -z "$ac_cpp_err"; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
echo "${ECHO_T}$ac_header_preproc" >&6; }
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the compiler's result" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: see the Autoconf documentation" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: see the Autoconf documentation" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: proceeding with the preprocessor's result" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: in the future, the compiler will take precedence" >&5
|
||||
echo "$as_me: WARNING: ${SQLITE3_DIR}/include/sqlite3.h: in the future, the compiler will take precedence" >&2;}
|
||||
|
||||
;;
|
||||
esac
|
||||
{ echo "$as_me:$LINENO: checking for ${SQLITE3_DIR}/include/sqlite3.h" >&5
|
||||
echo $ECHO_N "checking for ${SQLITE3_DIR}/include/sqlite3.h... $ECHO_C" >&6; }
|
||||
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
eval "$as_ac_Header=\$ac_header_preproc"
|
||||
fi
|
||||
ac_res=`eval echo '${'$as_ac_Header'}'`
|
||||
{ echo "$as_me:$LINENO: result: $ac_res" >&5
|
||||
echo "${ECHO_T}$ac_res" >&6; }
|
||||
|
||||
fi
|
||||
if test `eval echo '${'$as_ac_Header'}'` = yes; then
|
||||
SQLITE3_HEADER_FOUND=1
|
||||
else
|
||||
SQLITE3_HEADER_FOUND=0
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
CPPFLAGS="${saved_cppflags}"
|
||||
else
|
||||
if test "xsqlite3.h" != "x" ; then
|
||||
if test "${ac_cv_header_sqlite3_h+set}" = set; then
|
||||
{ echo "$as_me:$LINENO: checking for sqlite3.h" >&5
|
||||
echo $ECHO_N "checking for sqlite3.h... $ECHO_C" >&6; }
|
||||
if test "${ac_cv_header_sqlite3_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
fi
|
||||
{ echo "$as_me:$LINENO: result: $ac_cv_header_sqlite3_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_sqlite3_h" >&6; }
|
||||
else
|
||||
# Is the header compilable?
|
||||
{ echo "$as_me:$LINENO: checking sqlite3.h usability" >&5
|
||||
echo $ECHO_N "checking sqlite3.h usability... $ECHO_C" >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
$ac_includes_default
|
||||
#include <sqlite3.h>
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_compile") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } &&
|
||||
{ ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; } &&
|
||||
{ ac_try='test -s conftest.$ac_objext'
|
||||
{ (case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_try") 2>&5
|
||||
ac_status=$?
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); }; }; then
|
||||
ac_header_compiler=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_compiler=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
|
||||
echo "${ECHO_T}$ac_header_compiler" >&6; }
|
||||
|
||||
# Is the header present?
|
||||
{ echo "$as_me:$LINENO: checking sqlite3.h presence" >&5
|
||||
echo $ECHO_N "checking sqlite3.h presence... $ECHO_C" >&6; }
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <sqlite3.h>
|
||||
_ACEOF
|
||||
if { (ac_try="$ac_cpp conftest.$ac_ext"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
|
||||
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } >/dev/null; then
|
||||
if test -s conftest.err; then
|
||||
ac_cpp_err=$ac_c_preproc_warn_flag
|
||||
ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
|
||||
else
|
||||
ac_cpp_err=
|
||||
fi
|
||||
else
|
||||
ac_cpp_err=yes
|
||||
fi
|
||||
if test -z "$ac_cpp_err"; then
|
||||
ac_header_preproc=yes
|
||||
else
|
||||
echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_header_preproc=no
|
||||
fi
|
||||
|
||||
rm -f conftest.err conftest.$ac_ext
|
||||
{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
|
||||
echo "${ECHO_T}$ac_header_preproc" >&6; }
|
||||
|
||||
# So? What about this header?
|
||||
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
|
||||
yes:no: )
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: proceeding with the compiler's result" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: proceeding with the compiler's result" >&2;}
|
||||
ac_header_preproc=yes
|
||||
;;
|
||||
no:yes:* )
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: present but cannot be compiled" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: present but cannot be compiled" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: check for missing prerequisite headers?" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: check for missing prerequisite headers?" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: see the Autoconf documentation" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: see the Autoconf documentation" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: section \"Present But Cannot Be Compiled\"" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: section \"Present But Cannot Be Compiled\"" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: proceeding with the preprocessor's result" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: proceeding with the preprocessor's result" >&2;}
|
||||
{ echo "$as_me:$LINENO: WARNING: sqlite3.h: in the future, the compiler will take precedence" >&5
|
||||
echo "$as_me: WARNING: sqlite3.h: in the future, the compiler will take precedence" >&2;}
|
||||
|
||||
;;
|
||||
esac
|
||||
{ echo "$as_me:$LINENO: checking for sqlite3.h" >&5
|
||||
echo $ECHO_N "checking for sqlite3.h... $ECHO_C" >&6; }
|
||||
if test "${ac_cv_header_sqlite3_h+set}" = set; then
|
||||
echo $ECHO_N "(cached) $ECHO_C" >&6
|
||||
else
|
||||
ac_cv_header_sqlite3_h=$ac_header_preproc
|
||||
fi
|
||||
{ echo "$as_me:$LINENO: result: $ac_cv_header_sqlite3_h" >&5
|
||||
echo "${ECHO_T}$ac_cv_header_sqlite3_h" >&6; }
|
||||
|
||||
fi
|
||||
if test $ac_cv_header_sqlite3_h = yes; then
|
||||
SQLITE3_HEADER_FOUND=1
|
||||
else
|
||||
SQLITE3_HEADER_FOUND=0
|
||||
fi
|
||||
|
||||
|
||||
fi
|
||||
fi
|
||||
if test "x${SQLITE3_HEADER_FOUND}" = "x0" ; then
|
||||
SQLITE3_LIB=""
|
||||
SQLITE3_INCLUDE=""
|
||||
else
|
||||
if test "x${pbxfuncname}" = "x" ; then # only checking headers -> no library
|
||||
SQLITE3_LIB=""
|
||||
fi
|
||||
PBX_SQLITE3=1
|
||||
# XXX don't know how to evaluate the description (third argument) in AC_DEFINE_UNQUOTED
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_SQLITE3 1
|
||||
_ACEOF
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define HAVE_SQLITE3_VERSION
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if test "x${PBX_OPENSSL}" != "x1" -a "${USE_OPENSSL}" != "no"; then
|
||||
pbxlibdir=""
|
||||
if test "x${OPENSSL_DIR}" != "x"; then
|
||||
|
@ -39371,6 +39859,10 @@ SQLITE_LIB!$SQLITE_LIB$ac_delim
|
|||
SQLITE_INCLUDE!$SQLITE_INCLUDE$ac_delim
|
||||
SQLITE_DIR!$SQLITE_DIR$ac_delim
|
||||
PBX_SQLITE!$PBX_SQLITE$ac_delim
|
||||
SQLITE3_LIB!$SQLITE3_LIB$ac_delim
|
||||
SQLITE3_INCLUDE!$SQLITE3_INCLUDE$ac_delim
|
||||
SQLITE3_DIR!$SQLITE3_DIR$ac_delim
|
||||
PBX_SQLITE3!$PBX_SQLITE3$ac_delim
|
||||
SUPPSERV_LIB!$SUPPSERV_LIB$ac_delim
|
||||
SUPPSERV_INCLUDE!$SUPPSERV_INCLUDE$ac_delim
|
||||
SUPPSERV_DIR!$SUPPSERV_DIR$ac_delim
|
||||
|
@ -39441,10 +39933,6 @@ OPENH323_SUFFIX!$OPENH323_SUFFIX$ac_delim
|
|||
OPENH323_BUILD!$OPENH323_BUILD$ac_delim
|
||||
QTMOC!$QTMOC$ac_delim
|
||||
EDITLINE_LIB!$EDITLINE_LIB$ac_delim
|
||||
PBX_H323!$PBX_H323$ac_delim
|
||||
PBX_IXJUSER!$PBX_IXJUSER$ac_delim
|
||||
GTKCONFIG!$GTKCONFIG$ac_delim
|
||||
PBX_GTK!$PBX_GTK$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
|
||||
|
@ -39486,13 +39974,17 @@ _ACEOF
|
|||
ac_delim='%!_!# '
|
||||
for ac_last_try in false false false false false :; do
|
||||
cat >conf$$subs.sed <<_ACEOF
|
||||
PBX_H323!$PBX_H323$ac_delim
|
||||
PBX_IXJUSER!$PBX_IXJUSER$ac_delim
|
||||
GTKCONFIG!$GTKCONFIG$ac_delim
|
||||
PBX_GTK!$PBX_GTK$ac_delim
|
||||
GTK_INCLUDE!$GTK_INCLUDE$ac_delim
|
||||
GTK_LIB!$GTK_LIB$ac_delim
|
||||
CURL_CONFIG!$CURL_CONFIG$ac_delim
|
||||
LTLIBOBJS!$LTLIBOBJS$ac_delim
|
||||
_ACEOF
|
||||
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 4; then
|
||||
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 8; then
|
||||
break
|
||||
elif $ac_last_try; then
|
||||
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
|
||||
|
|
|
@ -210,6 +210,7 @@ AST_EXT_LIB_SETUP([QT], [Qt], [qt])
|
|||
AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
|
||||
AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
|
||||
AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
|
||||
AST_EXT_LIB_SETUP([SQLITE3], [SQLite], [sqlite3])
|
||||
AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
|
||||
AST_EXT_LIB_SETUP([OPENSSL], [OpenSSL], [ssl])
|
||||
AST_EXT_LIB_SETUP([FREETDS], [FreeTDS], [tds])
|
||||
|
@ -832,6 +833,8 @@ AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
|
|||
|
||||
AST_EXT_LIB_CHECK([SQLITE], [sqlite], [sqlite_exec], [sqlite.h])
|
||||
|
||||
AST_EXT_LIB_CHECK([SQLITE3], [sqlite3], [sqlite3_open], [sqlite3.h])
|
||||
|
||||
AST_EXT_LIB_CHECK([OPENSSL], [ssl], [ssl2_connect], [openssl/ssl.h], [-lcrypto])
|
||||
|
||||
AST_EXT_LIB_CHECK([FREETDS], [tds], [tds_version], [tds.h])
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* res_sqlite - SQLite 2 support for Asterisk
|
||||
*
|
||||
* This module can be used as a static/RealTime configuration module, and a CDR
|
||||
* handler. See the Doxygen documentation for a detailed description of the
|
||||
* module, and the configs/ directory for the sample configuration file.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Tables for res_config_sqlite.so.
|
||||
*/
|
||||
|
||||
/*
|
||||
* RealTime static table.
|
||||
*/
|
||||
CREATE TABLE ast_config
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
commented INT(11) NOT NULL DEFAULT '0',
|
||||
filename VARCHAR(128) NOT NULL,
|
||||
category VARCHAR(128) NOT NULL,
|
||||
var_name VARCHAR(128) NOT NULL,
|
||||
var_val VARCHAR(128) NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX ast_config_filename_commented ON ast_config(filename, commented);
|
||||
|
||||
/*
|
||||
* CDR table (this table is automatically created if non existent).
|
||||
*
|
||||
* CREATE TABLE ast_cdr
|
||||
* (
|
||||
* id INTEGER PRIMARY KEY,
|
||||
* clid VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* src VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* dst VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* dcontext VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* channel VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* dstchannel VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* lastapp VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* lastdata VARCHAR(80) NOT NULL DEFAULT '',
|
||||
* start CHAR(19) NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
* answer CHAR(19) NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
* end CHAR(19) NOT NULL DEFAULT '0000-00-00 00:00:00',
|
||||
* duration INT(11) NOT NULL DEFAULT '0',
|
||||
* billsec INT(11) NOT NULL DEFAULT '0',
|
||||
* disposition INT(11) NOT NULL DEFAULT '0',
|
||||
* amaflags INT(11) NOT NULL DEFAULT '0',
|
||||
* accountcode VARCHAR(20) NOT NULL DEFAULT '',
|
||||
* uniqueid VARCHAR(32) NOT NULL DEFAULT '',
|
||||
* userfield VARCHAR(255) NOT NULL DEFAULT ''
|
||||
* );
|
||||
*/
|
||||
|
||||
/*
|
||||
* SIP RealTime table.
|
||||
*/
|
||||
CREATE TABLE ast_sip
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
commented INT(11) NOT NULL DEFAULT '0',
|
||||
name VARCHAR(80) NOT NULL,
|
||||
accountcode VARCHAR(20),
|
||||
amaflags VARCHAR(13),
|
||||
callgroup VARCHAR(10),
|
||||
callerid VARCHAR(80),
|
||||
canreinvite CHAR(3),
|
||||
context VARCHAR(80),
|
||||
defaultip VARCHAR(15),
|
||||
dtmfmode VARCHAR(7),
|
||||
fromuser VARCHAR(80),
|
||||
fromdomain VARCHAR(80),
|
||||
fullcontact VARCHAR(80),
|
||||
host VARCHAR(31) NOT NULL,
|
||||
insecure VARCHAR(4),
|
||||
language CHAR(2),
|
||||
mailbox VARCHAR(50),
|
||||
md5secret VARCHAR(80),
|
||||
nat VARCHAR(5) NOT NULL DEFAULT 'no',
|
||||
deny VARCHAR(95),
|
||||
permit VARCHAR(95),
|
||||
mask VARCHAR(95),
|
||||
pickupgroup VARCHAR(10),
|
||||
port VARCHAR(5) NOT NULL,
|
||||
qualify CHAR(3),
|
||||
restrictcid CHAR(1),
|
||||
rtptimeout CHAR(3),
|
||||
rtpholdtimeout CHAR(3),
|
||||
secret VARCHAR(80),
|
||||
type VARCHAR(6) NOT NULL DEFAULT 'friend',
|
||||
username VARCHAR(80) NOT NULL,
|
||||
disallow VARCHAR(100),
|
||||
allow VARCHAR(100),
|
||||
musiconhold VARCHAR(100),
|
||||
regseconds INT(11) NOT NULL DEFAULT '0',
|
||||
ipaddr VARCHAR(15) NOT NULL,
|
||||
regexten VARCHAR(80) NOT NULL,
|
||||
cancallforward CHAR(3),
|
||||
setvar VARCHAR(100) NOT NULL
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX ast_sip_name ON ast_sip(name);
|
||||
|
||||
/*
|
||||
* Dialplan RealTime table.
|
||||
*/
|
||||
CREATE TABLE ast_exten
|
||||
(
|
||||
id INTEGER PRIMARY KEY,
|
||||
commented INT(11) NOT NULL DEFAULT '0',
|
||||
context VARCHAR(20) NOT NULL,
|
||||
exten VARCHAR(20) NOT NULL,
|
||||
priority TINYINT(4) NOT NULL,
|
||||
app VARCHAR(20) NOT NULL,
|
||||
appdata VARCHAR(128) NOT NULL
|
||||
);
|
||||
|
|
@ -394,6 +394,12 @@
|
|||
/* Define this to indicate the ${SQLITE_DESCRIP} library */
|
||||
#undef HAVE_SQLITE
|
||||
|
||||
/* Define this to indicate the ${SQLITE3_DESCRIP} library */
|
||||
#undef HAVE_SQLITE3
|
||||
|
||||
/* Define to indicate the ${SQLITE3_DESCRIP} library version */
|
||||
#undef HAVE_SQLITE3_VERSION
|
||||
|
||||
/* Define to indicate the ${SQLITE_DESCRIP} library version */
|
||||
#undef HAVE_SQLITE_VERSION
|
||||
|
||||
|
|
|
@ -141,6 +141,9 @@ SPEEX_LIB=@SPEEX_LIB@
|
|||
SQLITE_INCLUDE=@SQLITE_INCLUDE@
|
||||
SQLITE_LIB=@SQLITE_LIB@
|
||||
|
||||
SQLITE3_INCLUDE=@SQLITE3_INCLUDE@
|
||||
SQLITE3_LIB=@SQLITE3_LIB@
|
||||
|
||||
SSL_INCLUDE=@OPENSSL_INCLUDE@
|
||||
SSL_LIB=@OPENSSL_LIB@
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue