Wednesday, September 12, 2012

A2Billing and Asterisk Installation on Ubuntu 11.10

apt-get upgrade
apt-get update

Configure your timezone:
dpkg-reconfigure tzdata

Install some pre-requisites:
apt-get install libapache2-mod-php5 php5 php5-common
apt-get install php5-cli php5-mysql mysql-server apache2 php5-gd    
apt-get install php5-mcrypt

Add repos and install Asterisk 1.8
apt-get install python-software-properties -y
apt-key adv --keyserver pgp.mit.edu --recv-keys 175E41DF

add-apt-repository "deb http://packages.asterisk.org/deb `lsb_release -cs` main"
sudo add-apt-repository "deb-src http://packages.asterisk.org/deb `lsb_release -cs` main"

apt-get update
apt-get upgrade

apt-get install asterisk

Download and install A2billing:
cd /usr/local/src

wget https://github.com/Star2Billing/a2billing/tarball/v1-current

tar -zxvf v1-current
rm v1-current
mv Star2Billing-a2billing-* a2billing

Prep the database:
cd a2billing/DataBase/mysql-5.x

mysql -uroot -p < a2billing-createdb-user.sql

./install-db.sh

Copy and edit a2billing.conf:
cp /usr/local/src/a2billing/a2billing.conf /etc/
nano -w /etc/a2billing.conf
Make sure the first stanza looks like the following:
[database]
hostname = localhost
port = 3306
user = a2billinguser
password = a2billing
dbname = mya2billing
dbtype = mysql

Additional files for A2billing:

chmod 777 /etc/asterisk -R
touch /etc/asterisk/additional_a2billing_iax.conf
touch /etc/asterisk/additional_a2billing_sip.conf
echo \#include additional_a2billing_sip.conf >> /etc/asterisk/sip.conf
echo \#include additional_a2billing_iax.conf >> /etc/asterisk/iax.conf
chown -Rf www-data /etc/asterisk/additional_a2billing_iax.conf
chown -Rf www-data /etc/asterisk/additional_a2billing_sip.conf

Install the A2billing sounds:
cd /usr/local/src/a2billing/addons/sounds
./install_a2b_sounds_deb.sh
chown -R asterisk:asterisk /usr/share/asterisk/sounds/

Edit manager.conf:
nano -w /etc/asterisk/manager.conf
[myasterisk]
secret=mycode
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user

Install the AGI etc:

 mkdir /usr/share/asterisk/agi-bin
cd /usr/src/a2billing/AGI             
cp a2billing.php /usr/share/asterisk/agi-bin/
chown -R asterisk:asterisk /usr/share/asterisk/agi-bin
chmod 755 /usr/share/asterisk/agi-bin/a2billing.php
cp /var/www/a2billing/common/lib /usr/share/asterisk/agi-bin/lib -R

Install the webui:
mkdir /var/www/a2billing
chown www-data:www-data /var/www/a2billing
cp -rf /usr/local/src/a2billing/admin /var/www/a2billing
cp -rf /usr/local/src/a2billing/agent /var/www/a2billing
cp -rf /usr/local/src/a2billing/customer /var/www/a2billing
cp -rf /usr/local/src/a2billing/common /var/www/a2billing

chmod 755 /var/www/a2billing/admin/templates_c
chmod 755 /var/www/a2billing/customer/templates_c
chmod 755 /var/www/a2billing/agent/templates_c

chown -R www-data:www-data /var/www

Add contexts to extensions.conf: (Mine is edited for wholesale)
nano -w /etc/asterisk/extensions.conf

[a2billing]
; CallingCard application
;exten => _X.,1,Answer
;exten => _X.,2,Wait(2)
;exten => _X.,3,deadAGI(a2billing.php)
;exten => _X.,4,Wait(2)
;exten => _X.,5,Hangup
exten => _X.,1,deadAGI(a2billing.php)
exten => _X.,n,Hangup

[did]
; CallingCard application
exten => _X.,1,deadAGI(a2billing.php|1|did)

Add some cron entries:
crontab -e

# update the currency table
0 6 * * * php /usr/local/src/a2billing/Cronjobs/currencies_update_yahoo.php

# manage the monthly services subscription
0 6 1 * * php /usr/local/src/a2billing/Cronjobs/a2billing_subscription_fee.php

# To check account of each Users and send an email if the balance is
less than the user have choice.
0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_notify_account.php

# this script will browse all the DID that are reserve and check if
the customer need to pay for it
# bill them or warn them per email to know if they want to pay in
order to keep their DIDs
0 2 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_bill_diduse.php

# This script will take care of the recurring service.
0 12 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_process.php

# To generate invoices and for each user.
0 6 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_billing.php

# to proceed the autodialer
*/5 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_autodialer.php

# manage alarms
0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_alarm.php

Make a logfile:

mkdir /var/log/a2billing
touch /var/log/a2billing/a2billing_agi.log
chown -R asterisk:asterisk /var/log/a2billing
Add some rotation:
cd /etc/logrotate.d
nano -w a2billing

/var/log/a2billing/*.log {
daily
missingok
rotate 4
sharedscripts
postrotate
endscript
}

Enable SSL using default certificate for admin:

ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl

a2enmod rewrite
service apache2 restart

Todo: a2billing edits within a2billing

(Edited from this link: http://www.hostedvoipsolutions.co.uk/faqs-and-tutorials/a2billing-on-ubuntu-1004)