Wednesday, 23 May 2012
 Home arrow Blog arrow how to install CDRTool, mysql, Apache, PHP, freeradius and OpenSIPS
   
Main Menu
Home
News
Blog
Links
Search
FAQs
Spider
Articles
@intrenet
Free Softwares
Break for fun
Friends VIdeos
Techno videos
Contact Us
Disclaimer
Guest Book
Speed test
V.E.C. Calculator
IPv4 Subnet Calc
IPv6 Subnet Calc
Byte Converter
Converter
GMT/UTC Time
Bandwidth Calc
Allinone Calc
IANA Port Numbers
Country Call Codes
Pk Postal Codes
Surf Anonumously
Visitors Counter
mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterToday206
mod_vvisit_counterYesterday260
mod_vvisit_counterThis week466
mod_vvisit_counterThis month5015
mod_vvisit_counterAll125691
 
 
 
 


how to install CDRTool, mysql, Apache, PHP, freeradius and OpenSIPS PDF Print E-mail
User Rating: / 0
PoorBest 
Written by Amanatullah khalil   
Monday, 25 May 2009

 how to install CDRTool, mysql, Apache, PHP, freeradius and OpenSIPS

CDRTool installation
--------------------

Download
--------

You can in the following ways:

a. As a debian package from ag-projects repository
b. Generating the debian package
c. Installing from the tar archive
d. From the version control repository

a. As a debian package from ag-projects repository (stable version)

Add these lines to /etc/apt/sources.list

# AG Projects software
deb http://ag-projects.com/debian unstable main
deb-src http://ag-projects.com/debian unstable main

Install the AG Projects debian software signing key:

wget http://download.ag-projects.com/agp-debian-gpg.key
apt-key add agp-debian-gpg.key

After that, run:

apt-get update
apt-get install cdrtool

b. Generating the debian package

The software can be downloaded as a tar archive from:

http://download.ag-projects.com/CDRTool/

Extract it using tar xzvf cdrtool-version.tar.gz

cd CDRTool
debuild

Assuming you have all the dependencies satisfied (if you are compiling opensips
from source you'll have them), it will generate a file called
cdrtool_version_all.deb

You can install it with dpkg -i cdrtool_version_all.deb

c. Installing from the tar archive (stable version)

The software can be downloaded as a tar archive from:

http://download.ag-projects.com/CDRTool/

Extract it using tar xzvf cdrtool-version.tar.gz and copy the directory
under the your web root directory/CDRTool (/var/www/CDRTool on Debian
systems).

d. Installing from the version control repository (development branch)

The source code is managed using darcs version control tool. The darcs
repository can be fetched with:

darcs get http://devel.ag-projects.com/repositories/cdrtool

To obtain the incremental changes after the initial get:

cd cdrtool
darcs pull -a


Configuration
-------------

Create CDRTool database
-----------------------

You need MySQL root access with GRANT priviledges from the machine where
CDRTool runs, otherwise copy the files required by setup/setup_mysql.sh to
the MySQL machine and run the script locally.

Change the MySQL password of the cdrtool user from file
setup/create_users.mysql

Then run the database setup script:

/var/www/CDRtool/setup/mysql/setup_mysql.sh <password> <dbserver>

The script performs the following:

1. It adds to the MySQL server a user for cdrtool software
2. It creates a new MySQL database "cdrtool"
3. It creates a default web user admin/admin, you may use
this initial account to login in the web interface
4. It populates the cdrtool database with initial values


Apache and PHP setup
--------------------

Install PHP apache modele and command line with its dependencies. If you
have chosen to install the debian package, the dependencies will be resolved
during installation.

Configure php both the command line and apache module to support mysql.

Configure Apache2 server to support php scripting.

Create a virtual host for cdrtool web pages:

cp setup/apache2/sites-available/cdrtool.example.com /etc/apache2/sites-enabled
cp setup/apache2/conf.d/cdrtool /etc/apache2/conf.d/

Edit /etc/apache2/sites-enabled/cdrtool.example.com to suit your
environment. Enable the virtual site using:

a2ensite cdrtool.example.com

You may enable ssl using "a2enmod ssl" command. If you use ssl you must also
generate a site certificate using the instructions provided by apache2
software.


Create CDRTool configuration file
---------------------------------

cp /var/www/CDRTool/setup/global.inc.simple.sample /etc/cdrtool/global.inc

Edit global.inc and setup your variables to match your system. The file
global.inc.complex.sample contains a more elaborate example for setting up
multiple datasources.

You must change at least the following settings:

- The RatingEngine IP address
- The mysql connection details to cdrtool, radius, opensisps, siptrace and
mediaproxy MySQL databases, which are described in the following sections
of this document
- The mediaDispatcher address


Rating engine setup
-------------------

The rating engine is used by the prepaid application and as price calculator
for postpaid traffic.

For prepaid, an external call controll application is required, CDRTool
itself provides only the maxsession time and debit balance functions. Call
Control can be used to terminate the session based on these functions. For
setting up Call Control see PREPAID.txt.

Set in global.inc the IP and port where the rating engine listens to:

$RatingEngine=array("socketIP" => "IP.address.of.cdrtool.example.com",
"socketPort" => "9024",
"cdr_source" => "opensips_radius",
"allow" => array('10.0.0')
);

For non Debian systems you must create /etc/default/cdrtool as follows:

RUN_ratingEngine=yes

For non Debian systems copy the init script from setup/init.d/cdrtool to
/etc/init.d/cdrtool

Then restart the rating engine, which you must do every time you made
changes to global.inc:

/etc/init.d/cdrtool restart

To verify that the rating engine has started correctly check syslog for
errors. To verify the connection to the rating engine you can telnet to port
9024 and type 'help' command.


Insert default sample rates

cp /var/www/CDRTool/setup/csv/* /var/spool/cdrtool
/var/www/CDRTool/scripts/importRatingTables.php

For more information about provisioning of rating tables see doc/RATING.txt.


CRON jobs setup
---------------

Some operations must be scheduled to run periodically by cron. Such
operations are the scripts that block fraudulous accounts in OpenSIPS,
normalize the call detail records, purge the old SIP traces. This is done
automatically if you install the debian package. For other Linux systems
modify and install the cron file from /var/www/CDRTool/setup/crontabs/


Freeradius setup
----------------

CDRTool works with Freeradius server from http://www.freeradius.org

OpenSIPS generates START and STOP radius messages when a session is
established by INVITE request, 200 OK response combination and respectively
terminated by a BYE request, these packets are handled by the Freeradius
server, which writes them into the MySQL database. For failed SIP sessions a
radius packet type FAILED is generated. A failed SIP session is a session
that has been rejected by the Proxy server or by the destination.
Unfortunately Freeradius server is not able to cope with FAILED packets. The
server must be patched and recompiled if you wish to support accounting for
failed SIP sessions.

The patches and instructions for how to apply them are found in
setup/radius/FreeRadius/ and contrib/freeradius-brandinger/.

Install the server from Debian package or your own compiled version after
your applied the patches:

apt-get install freeradius freeradius-mysql

Alternatively you can install the freeradius-xs debian package provided in
the AG Projects debian repository that contains all required patches:

apt-get install freeradius-xs freeradius-xs-mysql

Create the database for radius tables on the MySQL server:

mysqladmin -u root create radius

Create RADIUS tables

mysql -u root radius < /var/www/CDRTool/setup/radius/OpenSIPS/radacct.mysql

Configure Freeradius to write data into mysql:

a. To write data into one radacct table:

cp /var/www/CDRTool/setup/radius/OpenSIPS/sql.conf /etc/freeradius/sql.conf

b. To automatically create a table for each calendar month radacctYYYYMM:

cp /var/www/CDRTool/setup/radius/OpenSIPS/radius_accounting.conf /etc/freeradius/sql.conf

Load the MySQL stored procedures that create the monthly tables:

mysql -u root radius < /var/www/CDRTool/setup/radius/OpenSIPS/radius_accounting.proc


Add RADIUS clients in clients.conf. Each device sending RADIUS accounting
requests must be added to /etc/freeradius/clients.conf. Examples:

client 10.0.0.0/8 {
secret=DssUET01
nastype=other
shortname=localnet
}

Enable MySQL accounting in FreeRadius server. Edit radius.conf "sql" must be uncommented
or added if missing.

accounting {
detail
sql
}

Copy the radius dictionaries from OpenSIPS and MediaProxy:

cp /var/www/CDRTool/setup/radius/OpenSIPS/dictionary.opensips to /etc/freeradius
cp /var/www/CDRTool/setup/radius/MediaProxy/dictionary.mediaproxy to /etc/freeradius

Edit /etc/freeradius/dictionary as follows:

# standard radius dictionary
$INCLUDE /usr/share/freeradius/dictionary

# OpenSER dictionary
$INCLUDE /etc/freeradius/dictionary.opensips

# MediaProxy dictionary
$INCLUDE /etc/freeradius/dictionary.mediaproxy


Grant access to radius user to the radius database, replace PASSWORD and
PRIVATE_IP_NETWORK with the real values:

GRANT ALL ON radius.* TO radius@'PRIVATE_IP_NETWORK.%' IDENTIFIED by 'PASSWORD';


OpenSIPS setup
--------------

Configure OpenSIPS for MySQL storage of subscribers and Radius accounting.
For SIP tracing you need to configure the OpenSIPS to enable the siptrace
module.

You will also need a valid client.conf, you can copy the one in
/etc/radiusclient-ng/radiusclient.conf and adapt it to suit your needs

To enable quota you must add one extra column in the subscriber table:

ALTER TABLE opensips.subscriber ADD COLUMN quota int NOT NULL;

Entries required in opensips.cfg:

loadmodule "siptrace.so"
loadmodule "acc.so"

# global acc parameters
modparam("acc", "failed_transaction_flag", 1)
modparam("acc", "report_cancels", 0)
modparam("acc", "report_ack", 0)
modparam("acc", "early_media", 0)

modparam("acc", "log_level", 1)
modparam("acc", "log_flag", 1)
modparam("acc", "log_missed_flag", 1)

modparam("acc", "radius_config", "/etc/opensips/radius/client.conf")
modparam("acc", "radius_flag", 1)
modparam("acc", "radius_missed_flag", 1)
modparam("acc", "radius_extra", "User-Name=$Au; \
Calling-Station-Id=$from; \
Called-Station-Id=$to; \
Sip-Translated-Request-URI=$ru; \
Sip-RPid=$avp(s:rpid); \
Source-IP=$avp(s:source_ip); \
Source-Port=$avp(s:source_port); \
SIP-Proxy-IP=$avp(s:sip_proxy_ip); \
Canonical-URI=$avp(s:can_uri); \
Billing-Party=$avp(billing_party); \
Divert-Reason=$avp(s:divert_reason);
\
User-Agent=$hdr(user-agent); \
Contact=$hdr(contact); \
Event=$hdr(event); \
ENUM-TLD=$avp(s:enum_tld)")

modparam("siptrace", "db_url", "mysql://opensips:password@localhost/opensips")
modparam("siptrace", "traced_user_avp", "$avp(s:traced_user)")
modparam("siptrace", "trace_on", 1)
modparam("siptrace", "trace_flag", 2)


Further, you must enable siptrace and accounting in various parts of the
routing script by setting the accounting flag and saving the AVP containing
the proxy IP address.

Copy /var/www/CDRTool/setup/radius/OpenSIPS/dictionary.opensips to
/etc/opensips/radius/dictionary

Generation of the Canonical-URI

It is critical to save $avp(s:can_uri) after the Proxy has performed all
possible lookups except DNS. The Canonical-URI will be used for rating the
session. Example:

route {
...
setflag(ACCOUNTING_FLAG);
$avp(s:can_uri) = $ru;
...
}

The Canonical-URI must by synced with the class used to determine the E164
format of the destination. The default behavior of the rating engine is to
consider an European dialing plan where a local number starts with a zero
and an international number starts with two zeros. See the Chapter
'Determination of the destination id' in RATING.txt for more information.


MediaProxy setup
----------------

MediaProy can log the IP bandwidth utilization, the codecs and the User
Agents. MediaProxy logs this information into the database used by the
Freeradius server in radacct table. MediaProxy also corrects the session
duration of CDRs for which no BYE messages have been received. See
MediaProxy documentation for how to enable Radius and database accounting.

MediaProxy logs detailed information about each individual stream (its type,
duration, time-out end point ports). The logging is performed in a separate
mysql table (default mediaproxy.media_sessions). The MySQL schema is defined
in setup/radius/MediaProxy/create_table_media_sessions.mysql. You do not
need to create that table, the mediaproxy does it automatically if it has
the rights to the configured database.

The detailed information about the media streams is displayed in the SIP
trace web page, follow the link about media trace.

Enable the accounting in MediaProxy /etc/mediaproxy/config.ini:

[Dispatcher]
accounting = radius,database

[Database]
dburi = mysql://mediaproxy:password@db/mediaproxy

[Radius]
config_file = /etc/opensips/radius/client.conf
additional_dictionary = radius/dictionary

It is possible to retrieve also real-time information about the ongoing
sessions and streams, this can be used to plot usage statistics from
external applications. The Usage and Sessions web pages display this
information. The information is obtained from any mediaproxy dispatcher,
which has connections to all configured relays.

Create or copy both a media relay certificate and its key to
/etc/cdrtool/mediaproxy.hostname.pem:

cat /etc/mediaproxy/tls/relay.crt >> /etc/cdrtool/mediaproxy.hostname.pem
cat /etc/mediaproxy/tls/relay.key >> /etc/cdrtool/mediaproxy.hostname.pem

and set the option:

"mediaDispatcher" => "tls:hostname:25061"

for each datasource that uses MediaProxy in global.inc.

Replace the hostname with the real IP or hostname of the mediaproxy
dispatcher.


Login accounts
--------------

To login to the web interface you must create login accounts. During the
initial database the username 'admin' with the password 'admin' has been
automatically created. You should change this password after the first time
you login. Click on the 'Login' link to add or change existing login
accounts. Each account has a set of Permissions that grant the login account
with certain right. Also you must specify which datasource may be accessed
by a login account. You can experiment with the set of Permissions, their
name should be self explanatory. Beware that the 'admin' right simply mean
that you can create other login accounts. You still need to select the
appropriate permissions for the admin account in order to have access to
various functionality controlled by the Permissions system.


Asterisk setup
--------------

Download from cvs the asterisk-addons and patch asterisk to store CDRs in
MySQL.

See /var/www/CDRTool/setup/asterisk for more information.


Cisco setup
-----------

Use the CISCO CLI, enter enable mode and configuration from terminal:

>enable
config terminal
aaa new-model
aaa group server radius aaa.router
server RADIUS_SERVER_IP auth-port 1812 acct-port 1813
aaa accounting connection h323 start-stop group radius
gw-accounting h323
gw-accounting h323 vsa
gw-accounting voip


Q931 Release codes for Cisco
----------------------------

In CDRTool CISCO hexadecimal release codes are automatically mapped to Q931
release codes.


Rating engine
-------------

See RATING file.


Monitoring
----------

Monit can check if the rating engine stopped working and restart it. A
sample configuration file for monit is available in setup/monit/monitrc.
Edit the IP address and hostname where the rating engine runs and copy
/var/www/CDRTool/setup/monit/monitrc /etc/monit/monit.d/cdrtool


Usage statistics
----------------

CDRTool can build usage statistics of the number of online SIP devices from
OpenSIPS, simultaneous number of media streams and relayed IP traffic by
MediaProxy. To obatin the statistics defined for OpenSIPS datasource the
following settings:

'db_registrar' => 'DB_opensips', // must be defined as mysql class
'mediaDispatcher' => 'tls://hostname:25061'

The script that gathers the usage information and builds the graphical
statistics is /var/www/CDRTool/scripts/buildStatistics.php

This script runs as a cron job every 5 minutes.

The usage information is cumulated in /tmp/CDRTool-sip-statistics.txt file,
which is a plain text file with one line per domain and values separated by
tabs. This file can be easily parsed by external scripts to build statistics
using other tools like SNMP.

To see the graphical statistics, follow the Usage link.

 courtesy http://download.dns-hosting.info/CDRTool/doc/INSTALL.txt

Last Updated ( Monday, 25 May 2009 )
 
< Prev   Next >
 
 
 
csatpk Newsflash
Statistics
OS: Linux h
PHP: 5.2.17
MySQL: 5.1.63-community-log
Time: 04:07
Caching: Disabled
GZIP: Disabled
Members: 3
News: 368
Web Links: 5
Visitors: 266060
Popular