diff options
Diffstat (limited to 'doc/tex/cdrdriver.tex')
-rw-r--r-- | doc/tex/cdrdriver.tex | 509 |
1 files changed, 0 insertions, 509 deletions
diff --git a/doc/tex/cdrdriver.tex b/doc/tex/cdrdriver.tex deleted file mode 100644 index 8e3215c2f..000000000 --- a/doc/tex/cdrdriver.tex +++ /dev/null @@ -1,509 +0,0 @@ -\section{Storage Backends} - -\subsection{Microsoft SQL Server} - - Asterisk can currently store CDRs into an MSSQL database in - two different ways: cdr_odbc or cdr_tds - - Call Data Records can be stored using unixODBC (which requires - the FreeTDS package) [cdr_odbc] or directly by using just the - FreeTDS package [cdr_tds] The following provide some - examples known to get asterisk working with mssql. - - NOTE: Only choose one db connector. - -\subsubsection{ODBC using cdr_odbc} - Compile, configure, and install the latest unixODBC package: -\begin{astlisting} -\begin{verbatim} - tar -zxvf unixODBC-2.2.9.tar.gz && - cd unixODBC-2.2.9 && - ./configure --sysconfdir=/etc --prefix=/usr --disable-gui && - make && - make install -\end{verbatim} -\end{astlisting} - - Compile, configure, and install the latest FreeTDS package: -\begin{astlisting} -\begin{verbatim} - tar -zxvf freetds-0.62.4.tar.gz && - cd freetds-0.62.4 && - ./configure --prefix=/usr --with-tdsver=7.0 \ - --with-unixodbc=/usr/lib && - make && make install -\end{verbatim} -\end{astlisting} - - Compile, or recompile, asterisk so that it will now add support - for cdr_odbc. -\begin{astlisting} -\begin{verbatim} - make clean && ./configure --with-odbc && - make update && - make && - make install -\end{verbatim} -\end{astlisting} - - Setup odbc configuration files. These are working examples - from my system. You will need to modify for your setup. - You are not required to store usernames or passwords here. -\begin{astlisting} -\begin{verbatim} - /etc/odbcinst.ini - [FreeTDS] - Description = FreeTDS ODBC driver for MSSQL - Driver = /usr/lib/libtdsodbc.so - Setup = /usr/lib/libtdsS.so - FileUsage = 1 - - /etc/odbc.ini - [MSSQL-asterisk] - description = Asterisk ODBC for MSSQL - driver = FreeTDS - server = 192.168.1.25 - port = 1433 - database = voipdb - tds_version = 7.0 - language = us_english -\end{verbatim} -\end{astlisting} - - Only install one database connector. Do not confuse asterisk - by using both ODBC (cdr_odbc) and FreeTDS (cdr_tds). - This command will erase the contents of cdr_tds.conf -\begin{astlisting} -\begin{verbatim} - [ -f /etc/asterisk/cdr_tds.conf ] > /etc/asterisk/cdr_tds.conf -\end{verbatim} -\end{astlisting} - NOTE: unixODBC requires the freeTDS package, but asterisk does - not call freeTDS directly. - - Now set up cdr_odbc configuration files. These are working samples - from my system. You will need to modify for your setup. Define - your usernames and passwords here, secure file as well. -\begin{astlisting} -\begin{verbatim} - /etc/asterisk/cdr_odbc.conf - [global] - dsn=MSSQL-asterisk - username=voipdbuser - password=voipdbpass - loguniqueid=yes -\end{verbatim} -\end{astlisting} - And finally, create the 'cdr' table in your mssql database. -\begin{astlisting} -\begin{verbatim} - CREATE TABLE cdr ( - [calldate] [datetime] NOT NULL , - [clid] [varchar] (80) NOT NULL , - [src] [varchar] (80) NOT NULL , - [dst] [varchar] (80) NOT NULL , - [dcontext] [varchar] (80) NOT NULL , - [channel] [varchar] (80) NOT NULL , - [dstchannel] [varchar] (80) NOT NULL , - [lastapp] [varchar] (80) NOT NULL , - [lastdata] [varchar] (80) NOT NULL , - [duration] [int] NOT NULL , - [billsec] [int] NOT NULL , - [disposition] [varchar] (45) NOT NULL , - [amaflags] [int] NOT NULL , - [accountcode] [varchar] (20) NOT NULL , - [uniqueid] [varchar] (150) NOT NULL , - [userfield] [varchar] (255) NOT NULL - ) -\end{verbatim} -\end{astlisting} - Start asterisk in verbose mode, you should see that asterisk - logs a connection to the database and will now record every - call to the database when it's complete. - -\subsubsection{TDS, using cdr_tds} - Compile, configure, and install the latest FreeTDS package: -\begin{astlisting} -\begin{verbatim} - tar -zxvf freetds-0.62.4.tar.gz && - cd freetds-0.62.4 && - ./configure --prefix=/usr --with-tdsver=7.0 - make && - make install -\end{verbatim} -\end{astlisting} - Compile, or recompile, asterisk so that it will now add support - for cdr_tds. -\begin{astlisting} -\begin{verbatim} - make clean && ./configure --with-tds && - make update && - make && - make install -\end{verbatim} -\end{astlisting} - Only install one database connector. Do not confuse asterisk - by using both ODBC (cdr_odbc) and FreeTDS (cdr_tds). - This command will erase the contents of cdr_odbc.conf -\begin{astlisting} -\begin{verbatim} - [ -f /etc/asterisk/cdr_odbc.conf ] > /etc/asterisk/cdr_odbc.conf -\end{verbatim} -\end{astlisting} - Setup cdr_tds configuration files. These are working samples - from my system. You will need to modify for your setup. Define - your usernames and passwords here, secure file as well. -\begin{astlisting} -\begin{verbatim} - /etc/asterisk/cdr_tds.conf - [global] - hostname=192.168.1.25 - port=1433 - dbname=voipdb - user=voipdbuser - password=voipdpass - charset=BIG5 -\end{verbatim} -\end{astlisting} - And finally, create the 'cdr' table in your mssql database. -\begin{astlisting} -\begin{verbatim} - CREATE TABLE cdr ( - [accountcode] [varchar] (20) NULL , - [src] [varchar] (80) NULL , - [dst] [varchar] (80) NULL , - [dcontext] [varchar] (80) NULL , - [clid] [varchar] (80) NULL , - [channel] [varchar] (80) NULL , - [dstchannel] [varchar] (80) NULL , - [lastapp] [varchar] (80) NULL , - [lastdata] [varchar] (80) NULL , - [start] [datetime] NULL , - [answer] [datetime] NULL , - [end] [datetime] NULL , - [duration] [int] NULL , - [billsec] [int] NULL , - [disposition] [varchar] (20) NULL , - [amaflags] [varchar] (16) NULL , - [uniqueid] [varchar] (150) NULL , - [userfield] [varchar] (256) NULL - ) -\end{verbatim} -\end{astlisting} - Start asterisk in verbose mode, you should see that asterisk - logs a connection to the database and will now record every - call to the database when it's complete. - - -\subsection{MySQL} - -\subsubsection{ODBC} - -Using MySQL for CDR records is supported by using ODBC and the cdr_odbc module. - -\subsubsection{Native} - -Alternatively, there is a native MySQL CDR module. - -To use it, configure the module in cdr_mysql.conf. Create a table called cdr under the database name you will be using the following schema. - -\begin{astlisting} -\begin{verbatim} -CREATE TABLE cdr ( - calldate datetime NOT NULL default '0000-00-00 00:00:00', - 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 '', - 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(20) NOT NULL default '', - uniqueid varchar(32) NOT NULL default '', - userfield varchar(255) NOT NULL default '' -); -\end{verbatim} -\end{astlisting} - - -\subsection{PostgreSQL} - If you want to go directly to postgresql database, and have the cdr_pgsql.so - compiled you can use the following sample setup. - On Debian, before compiling asterisk, just install libpqxx-dev. - Other distros will likely have a similiar package. - - Once you have the compile done, - copy the sample cdr_pgsql.conf file or create your own. - - Here is a sample: -\begin{astlisting} -\begin{verbatim} - /etc/asterisk/cdr_pgsql.conf - ; Sample Asterisk config file for CDR logging to PostgresSQL - [global] - hostname=localhost - port=5432 - dbname=asterisk - password=password - user=postgres - table=cdr -\end{verbatim} -\end{astlisting} - Now create a table in postgresql for your cdrs -\begin{astlisting} -\begin{verbatim} - CREATE TABLE cdr ( - calldate timestamp NOT NULL , - clid varchar (80) NOT NULL , - src varchar (80) NOT NULL , - dst varchar (80) NOT NULL , - dcontext varchar (80) NOT NULL , - channel varchar (80) NOT NULL , - dstchannel varchar (80) NOT NULL , - lastapp varchar (80) NOT NULL , - lastdata varchar (80) NOT NULL , - duration int NOT NULL , - billsec int NOT NULL , - disposition varchar (45) NOT NULL , - amaflags int NOT NULL , - accountcode varchar (20) NOT NULL , - uniqueid varchar (150) NOT NULL , - userfield varchar (255) NOT NULL - ); -\end{verbatim} -\end{astlisting} - -\subsection{SQLite 2} - -SQLite version 2 is supported in cdr_sqlite. - -\subsection{SQLite 3} - -SQLite version 3 is supported in cdr_sqlite3\_custom. - -\subsection{RADIUS} - -\subsubsection{What is needed} - -\begin{itemize} - \item FreeRADIUS server - \item Radiusclient-ng library - \item Asterisk PBX -\end{itemize} - -\begin{figure}[h] -\begin{center} -\setlength{\unitlength}{4cm} -\begin{picture}(3,.75) -\put(0,0){\line(0,1){.75}} -\put(0,.75){\line(1,0){1.5}} -\put(1.5,0){\line(0,1){.75}} -\put(0,0){\line(1,0){1.5}} -\put(.1,.4){\makebox(1.3,.3){Asterisk PBX}} -\put(.1,.4){\line(1,0){1.3}} -\put(.1,.1){\line(1,0){1.3}} -\put(.1,.1){\line(0,1){.3}} -\put(1.4,.1){\line(0,1){.3}} -\put(.1,.1){\makebox(1.3,.3){RADIUS Client}} -\put(1.8,0){\line(0,1){.5}} -\put(1.8,.5){\line(1,0){1.1}} -\put(1.8,0){\line(1,0){1.1}} -\put(2.9,0){\line(0,1){.5}} -\put(1.8,.275){\makebox(1.1,.1){RADIUS Server}} -\put(1.8,.125){\makebox(1.1,.1){$(FreeRADIUS)$}} -\thicklines -\put(1.4,.3){\vector(1,0){.4}} -\put(1.8,.2){\vector(-1,0){.4}} -\thinlines -\end{picture} -\end{center} -\caption{Asterisk/RADIUS Integration} -\end{figure} - -\subsubsection{Installation of the Radiusclient library} - - Download the sources from - \url{http://developer.berlios.de/projects/radiusclient-ng/} - - Untar the source tarball: - -\begin{verbatim} - root@localhost:/usr/local/src# tar xvfz radiusclient-ng-0.5.2.tar.gz -\end{verbatim} - - Compile and install the library: - -\begin{verbatim} - root@localhost:/usr/local/src# cd radiusclient-ng-0.5.2 - root@localhost:/usr/local/src/radiusclient-ng-0.5.2# ./configure - root@localhost:/usr/local/src/radiusclient-ng-0.5.2# make - root@localhost:/usr/local/src/radiusclient-ng-0.5.2# make install -\end{verbatim} - -\subsubsection{Configuration of the Radiusclient library} - - By default all the configuration files of the radiusclient library will - be in \path{/usr/local/etc/radiusclient-ng} directory. - - File "radiusclient.conf" - Open the file and find lines containing the following: - - authserver localhost - - This is the hostname or IP address of the RADIUS server used for - authentication. You will have to change this unless the server is - running on the same host as your Asterisk PBX. - - acctserver localhost - - This is the hostname or IP address of the RADIUS server used for - accounting. You will have to change this unless the server is running - on the same host as your Asterisk PBX. - - \textbf{File "servers"} - - RADIUS protocol uses simple access control mechanism based on shared - secrets that allows RADIUS servers to limit access from RADIUS clients. - - A RADIUS server is configured with a secret string and only RADIUS - clients that have the same secret will be accepted. - - You need to configure a shared secret for each server you have - configured in radiusclient.conf file in the previous step. The shared - secrets are stored in \path{/usr/local/etc/radiusclient-ng/servers} file. - - Each line contains hostname of a RADIUS server and shared secret - used in communication with that server. The two values are separated - by white spaces. Configure shared secrets for every RADIUS server you - are going to use. - - \textbf{File "dictionary"} - - Asterisk uses some attributes that are not included in the - dictionary of radiusclient library, therefore it is necessary to add - them. A file called dictionary.digium (kept in the contrib dir) - was created to list all new attributes used by Asterisk. - Add to the end of the main dictionary file - \path{/usr/local/etc/radiusclient-ng/dictionary} the line: - - \$INCLUDE /path/to/dictionary.digium - -\subsubsection{Install FreeRADIUS Server (Version 1.1.1)} - - Download sources tarball from: - - \url{http://freeradius.org/} - - Untar, configure, build, and install the server: - -\begin{verbatim} - root@localhost:/usr/local/src# tar xvfz freeradius-1.1.1.tar.gz - root@localhost:/usr/local/src# cd freeradius-1.1.1 - root@localhost"/usr/local/src/freeradius-1.1.1# ./configure - root@localhost"/usr/local/src/freeradius-1.1.1# make - root@localhost"/usr/local/src/freeradius-1.1.1# make install -\end{verbatim} - - All the configuration files of FreeRADIUS server will be in - /usr/local/etc/raddb directory. - - -\subsubsection{Configuration of the FreeRADIUS Server} - - There are several files that have to be modified to configure the - RADIUS server. These are presented next. - - File "clients.conf" - - File \path{/usr/local/etc/raddb/clients.conf} contains description of - RADIUS clients that are allowed to use the server. For each of the - clients you need to specify its hostname or IP address and also a - shared secret. The shared secret must be the same string you configured - in radiusclient library. - - Example: -\begin{verbatim} - client myhost { - secret = mysecret - shortname = foo - } -\end{verbatim} - - This fragment allows access from RADIUS clients on "myhost" if they use - "mysecret" as the shared secret. - The file already contains an entry for localhost (127.0.0.1), so if you - are running the RADIUS server on the same host as your Asterisk server, - then modify the existing entry instead, replacing the default password. - - File "dictionary" - - Note: as of version 1.1.2, the dictionary.digium file ships with FreeRADIUS. - The following procedure brings the dictionary.digium file to previous versions - of FreeRADIUS. - - File \path{/usr/local/etc/raddb/dictionary} contains the dictionary of - FreeRADIUS server. You have to add the same dictionary file - (dictionary.digium), which you added to the dictionary of radiusclient-ng - library. You can include it into the main file, adding the following line at the - end of file \path{/usr/local/etc/raddb/dictionary}: - - \$INCLUDE /path/to/dictionary.digium - - That will include the same new attribute definitions that are used - in radiusclient-ng library so the client and server will understand each - other. - - -\subsubsection{Asterisk Accounting Configuration} - - Compilation and installation: - - The module will be compiled as long as the radiusclient-ng - library has been detected on your system. - - By default FreeRADIUS server will log all accounting requests into - \path{/usr/local/var/log/radius/radacct} directory in form of plain text files. - The server will create one file for each hostname in the directory. The - following example shows how the log files look like. - - Asterisk now generates Call Detail Records. See \path{/include/asterisk/cdr.h} - for all the fields which are recorded. By default, records in comma - separated values will be created in \path{/var/log/asterisk/cdr-csv}. - - The configuration file for cdr_radius.so module is \path{/etc/asterisk/cdr.conf} - - This is where you can set CDR related parameters as well as the path to - the radiusclient-ng library configuration file. - - -\subsubsection{Logged Values} -\begin{verbatim} - "Asterisk-Acc-Code", The account name of detail records - "Asterisk-Src", - "Asterisk-Dst", - "Asterisk-Dst-Ctx", The destination context - "Asterisk-Clid", - "Asterisk-Chan", The channel - "Asterisk-Dst-Chan", (if applicable) - "Asterisk-Last-App", Last application run on the channel - "Asterisk-Last-Data", Argument to the last channel - "Asterisk-Start-Time", - "Asterisk-Answer-Time", - "Asterisk-End-Time", - "Asterisk-Duration", Duration is the whole length that the entire - call lasted. ie. call rx'd to hangup - "end time" minus "start time" - "Asterisk-Bill-Sec", The duration that a call was up after other - end answered which will be <= to duration - "end time" minus "answer time" - "Asterisk-Disposition", ANSWERED, NO ANSWER, BUSY - "Asterisk-AMA-Flags", DOCUMENTATION, BILL, IGNORE etc, specified on - a per channel basis like accountcode. - "Asterisk-Unique-ID", Unique call identifier - "Asterisk-User-Field" User field set via SetCDRUserField -\end{verbatim} |