Instalasi CDRTool

From OnnoWiki
Jump to navigation Jump to search

Tingkat kesulitan menginstalasi CDRTool cukup tinggi, kemungkinan gagal sangat besar.


Siapkan software pendukung

# apt-get install apache2 libapache2-mod-php5 php5 php5-cli php5-mysql \
php5-curl php-pear php-soap mrtg php5-memcache memcached monit smarty

Download Source Code CDRTool dari situs

http://cdrtool.ag-projects.com/
http://download.dns-hosting.info/CDRTool/


Siapkan database CDRTool di MySQL

# mysql -u root -p
Enter password: 
mysql> create database cdrtool;
mysql> grant INSERT,SELECT on root.* to cdradmin@localhost;
mysql> grant INSERT,SELECT on root.* to locker@localhost;
mysql> GRANT ALL ON cdrtool.* TO cdradmin@localhost IDENTIFIED by 'PASSWORD'; 
mysql> GRANT ALL ON cdrtool.* TO cdradmin IDENTIFIED by 'PASSWORD'; 
mysql> GRANT ALL ON cdrtool.* TO locker@localhost IDENTIFIED by 'lockadm18';
mysql> GRANT ALL ON cdrtool.* TO locker IDENTIFIED by 'lockadm18';
mysql> exit


Instalasi yang mudah mungkin

# cp -Rf cdrtool_6.4.1_all.deb /usr/local/src/
# cd /usr/local/src/
# dpkg -i cdrtool_6.4.1_all.deb


Lakuan

# cd /var/www/CDRTool/setup/mysql
# mysql -u root -p<password-root> mysql < ./create_users.mysql
# mysql -u root -p<password-root> cdrtool < ./create_tables.mysql
# mysql -u root -p<password-root> cdrtool < ./create_data.mysql

Alternatif lain yang mungkin bisa dilakukan juga adalah

# ./setup_mysql.sh <password-root-MySQL> <ip-address-database-server>


Copykan setup Apache Web Server

# cd /var/www/CDRTool
# cp setup/apache2/conf.d/cdrtool /etc/apache2/conf.d/
# cp setup/apache2/sites-available/cdrtool.example.com /etc/apache2/sites-enabled


Edit file

# vi /etc/apache2/sites-enabled/cdrtool.example.com


Pastikan isinya

<VirtualHost sipcdr.example.com:443>
  ServerName          sipcdr.example.com
  DocumentRoot        /var/www/
  CustomLog           /var/log/apache2/cdrtool-access.log combined
  ErrorLog            /var/log/apache2/cdrtool-errors.log
  SetEnvIf User-Agent ".*MSIE.*"      nokeepalive ssl-unclean-shutdown
  # To enable SSL:
  # a2enmode ssl
  # add Listen 443 to ports.conf file
  # generate site certificates
  # SSLEngine           On
  # SSLCertificateFile    /etc/apache2/ssl/snakeoil-rsa.crt
  # SSLCertificateKeyFile /etc/apache2/ssl/snakeoil-rsa.key
  # RewriteEngine is required for Multimedia Service Platform
  #
  # a2enmode rewrite proxy
  # RewriteEngine       On
  # RewriteRule         ^/ngnpro/voicemail/(.*) http://10.0.0.1:9200/$1 [L,P]
  # RewriteRule         ^/ngnpro/(.*) http://10.0.0.2:9200/$1 [L,P]
  # ProxyVia            On
  # <Proxy *>
  #      Order Allow,Deny
  #      Allow from all
  # </Proxy>
       <Directory /var/www/CDRTool>
               Options FollowSymLinks
               AllowOverride All
       </Directory>
</VirtualHost>


Atau yang lebih sederhana

<VirtualHost cdrtool.example.com:80>
  ServerName          cdrtool.example.com
  DocumentRoot        /var/www/
  CustomLog           /var/log/apache2/cdrtool-access.log combined
  ErrorLog            /var/log/apache2/cdrtool-errors.log
  SetEnvIf User-Agent ".*MSIE.*"      nokeepalive ssl-unclean-shutdown
  # To enable SSL:
  # a2enmode ssl
  # add Listen 443 to ports.conf file
  # generate site certificates
  # SSLEngine           On
  # SSLCertificateFile    /etc/apache2/ssl/snakeoil-rsa.crt
  # SSLCertificateKeyFile /etc/apache2/ssl/snakeoil-rsa.key
</VirtualHost>



Edit /etc/default/cdrtool

# vi /etc/default/cdrtool

Pastikan

RUN_ratingEngine=yes
START_MEMCACHE=yes


Edit konfigurasi

# cp /var/www/CDRTool/setup/global.inc.new.installation /var/www/CDRTool/


Edit global.inc

# vi /var/www/CDRTool/global.inc


Pastikan


$RatingEngine=array("socketIP"   => "127.0.0.1",
                   "socketPort" => "9024",
                   "CDRS_class" => "ser_radius",
                   "prepaid_lock" => true,
                   "log_delay"   => 0.05
                   );



$CDRTool['normalize']['defaultCountryCode']      = "62";



###########################################
# CDRTool datasources
class DB_CDRTool extends DB_Sql {
 var $Host     = "127.0.0.1.";
 var $Database = "cdrtool";
 var $User     = "cdradmin";
 var $Password = "PASSWORD";
 var $Halt_On_Error ="yes";
}
class DB_Locker extends DB_Sql {
 var $Host     = "127.0.0.1.";
 var $Database = "cdrtool";
 var $User     = "locker";
 var $Password = "PASSWORD";
 var $Halt_On_Error ="no";
}
class DB_radius extends DB_Sql {
 var $Host     = "127.0.0.1.";
 var $Database = "radius";
 var $User     = "radius";
 var $Password = "PASSWORD";
 var $Halt_On_Error ="no";
}
class DB_radius2 extends DB_Sql {
 var $Host     = "127.0.0.1.";
 var $Database = "radius";
 var $User     = "radius";
 var $Password = "PASSWORD";
 var $Halt_On_Error ="no";
}





# set IP server
if ($_SERVER['REMOTE_ADDR']=="192.168.0.2") {
   //$verbose=1;
} else {
   // prevent set of verbose via post/get
   unset($verbose);




Restart

# /etc/init.d/cdrtool restart
# /etc/init.d/apache2 restart
# /etc/init.d/cdrtool startmemcache


Mencoba akses ke

http://localhost/CDRTool/index.phtml

Username password default admin/admin



Untuk konfigurasi yang lebih kompleks yang melibatkan FreeRADIUS dapat meneruskan mengkonfigurasi perintah berikut.




Bersihkan sampah dll secara periodik

# cp /var/www/CDRTool/setup/crontabs/cdrtool /var/spool/cron/crontabs/




Siapkan FreeRadius Server

# apt-get install freeradius freeradius-mysql
# mysqladmin -u root -p create radius
Enter password: <masukan password root MySQL>
# cp /usr/share/doc/freeradius/examples/mysql.sql.gz /usr/local/src/
# cd /usr/local/src
# gunzip mysql.sql.gz 
# mysql -u root -p radius < /usr/local/src/mysql.sql
Enter password: <masukan password root MySQL>

Patch radacct untuk OpenSER

# /var/www/CDRTool/setup/radius/OpenSER/radacct-patch.sh 
Please type in MySQL root password (^C to abort): <masukan password root MySQL>
# cp /var/www/CDRTool/setup/radius/OpenSER/sql.conf /etc/freeradius/sql.conf  

Edit file /etc/freeradius/clients.conf, pastikan ada konfigurasi client yang akan tersambung, misalnya ..

client 192.168.0.0/16 {
        secret=rahasiabangetpasswordnya
        nastype=other
        shortname=localnet
}


Edit file /etc/freeradius/radiusd.conf, pastikan pada entry accounting diaktifkan "sql", kira-kira seperti,

accounting {
        detail
        sql
}


Copy directionary.ser ke /etc/freeradius

# cp /var/www/CDRTool/setup/radius/OpenSER/dictionary.ser /etc/freeradius



Pastikan OpenSER sudah di instalasi, ada baiknya menggunakan cara meng-Compile OpenSER.

Jika kita meng-Compile OpenSER maka kita perlu mengedit file /usr/local/etc/openser/openser.cfg

# vi /usr/local/etc/openser/openser.cfg

Tambahkan parameter berikut adalah Accounting dilakukan menggunakan FreeRadius & CDRTool

loadmodule "acc.so"
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",      "/usr/local/etc/openser/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=$ruri; \
                                       Sip-RPid=$avp(s:rpid); \
                                       Source-IP=$si; \
                                       Source-Port=$sp; \
                                       Canonical-URI=$avp(s:can_uri); \
                                       Billing-Party=$avp(billing_party); \
                                       Divert-Reason=$avp(s:divert_reason); \
                                       X-RTP-Stat=$hdr(X-RTP-Stat); \
                                       User-Agent=$hdr(user-agent); \ 
                                       Contact=$hdr(contact); \
                                       Event=$hdr(event); \
                                       SIP-Proxy-IP=$avp(s:sip_proxy_ip); \
                                       ENUM-TLD=$avp(s:enum_tld)") 


Selanjutnya kita perlu menambahkan perintah berikut di banyak lokasi di route.

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


Pada saat kita meng-Compile OpenSer tampaknya di folder konfigurasi OpenSER /etc/openser atau /usr/loca/etc/openser sudah ada file

dictionary.radius

Jika anda ingin yang lebih lengkap, copykan dictionary.ser ke folder /etc/openser/radius. Jika mengcompile, maka gunakan perintah berikut,

# cp /var/www/CDRTool/setup/radius/OpenSER/dictionary.ser /user/local/etc/openser/

Jika anda meng-Instalasi OpenSER menggunakan apt-get, maka gunakan perintah berikut,

# cp /var/www/CDRTool/setup/radius/OpenSER/dictionary.ser /etc/openser/



Pranala Menarik