[Asterisk-Dev] Database App

Holger Schurig hs4233 at mail.mn-solutions.de
Fri Jul 16 00:15:03 MST 2004

> My goal is to be able to run a simple query on a database that could
> return a value in an ${var} variable, or even the number or rows that
> were returned in the query in a ${var}.  There are a couple of things
> in Asterisk I would like to accomplish, without having to fork an AGI
> application, that involved getting/checking data in a database.

You have an idea what bkw_ and I yesterday talked over on IRC.

Basically bkw_ talked about res_sqlite (see 
http://www.voip-info.org/tiki-index.php?page=Asterisk+addons) as a 
default SQL implementation for Asterisk. If wanted, SQLite can even be 
incorporated into Asterisk because it's "public domain". But, of course, 
it can also be used as a normal library.

The other SQL methods (ODBC, PostgreSQL) would still exist if a user has 
different needs.

Now, once there is SQL inside every Asterisk, we can start to use this 
infrastructure. The first and obvious usage are Applications that use SQL 
for data storage & retrieval in dialplans, like the one you described 

However, res_sqlite as it stands now is not ready for integration:

a) it is not standard C code, e.g. they define variables in the middle of 
C blocks.
b) it uses sqlite_printf to create queries, but with %s and not with %q 
which would do proper quoting. Therefore insertion attacks are possible
c) it's source-code in a non-Asterisk-way formatted
d) it contains sql commends for the command line of Asterisk, e.g. you can 
do "select * from cdr where dst='1234';". This sounds fine on the first 
sight, but there is the sqlite binary which does this better and IF there 
should be some select command in the CLI, then this sql interface should 
work with SQLite, ODBC, PostgreSQL etc in a transparent manner.

More information about the asterisk-dev mailing list