#!/bin/sh # Updated by A.Lang on 2011-10-16 # This script is used for upgrading/fresh install 1.9.4 # # System requirement: PIAF1757 + Asterisk 1.8.x # version="1.9.4" # MySQL root password, it's passw0rd by default. DBPASS='passw0rd' #GET_URL='https://github.com/Star2Billing/a2billing/tarball/v1-current' GET_URL='https://github.com/Star2Billing/a2billing/tarball/v1.9.4' #DATETAG=`date +%Y%m%d%H%k%M%S` # Make sure only root can run our script [ "$(id -u)" != "0" ] && { echo "Abort: This script must be run as root" 1>&2 exit 1 } clear echo "*******************************************************************************" echo "" echo " Installing A2Billing $version for PIAF+Asterisk 1.8.x" echo "" echo " (c)alang.hsu[AT]gmail.com." echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING" echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" echo "This script assumes you have not changed the default root username For MySQL" echo "If you have, e.g. if you use PBX-Management, press CTRL-C to exit" echo "Then change the MySQL root password in the script to suit your installation." echo " " echo "If an earlier copy of A2Billing is already installed, this script will clean " echo "out origianal DB and entire configuration related to a2billing." echo "*******************************************************************************" echo "" read -p "Press any key to continue or ctrl-C to exit" echo "" # Step1: Removing A2billing Old files [ -d /var/www/html/A2Billing_UI ] && rm -f -R /var/www/html/A2Billing_UI/ [ -d /var/www/html/A2BCustomer_UI ] && rm -f -R /var/www/html/A2BCustomer_UI/ [ -f /var/lib/asterisk/agi-bin/a2billing.php ] && rm -f /var/lib/asterisk/agi-bin/a2billing.php [ -d /var/lib/asterisk/agi-bin/libs_a2billing ] && rm -f -R /var/lib/asterisk/agi-bin/libs_a2billing/ [ -d /var/lib/asterisk/agi-bin/lib ] && rm -f -R /var/lib/asterisk/agi-bin/lib/ [ -f /etc/asterisk/additional_a2billing_iax.conf ] && rm -f /etc/asterisk/additional_a2billing_iax.conf [ -f /etc/asterisk/additional_a2billing_sip.conf ] && rm -f /etc/asterisk/additional_a2billing_sip.conf [ -f /etc/asterisk/extensions_a2billing*.conf ] && rm -f /etc/asterisk/extensions_a2billing*.conf [ -f /etc/asterisk/a2billing.conf ] && rm -f /etc/asterisk/a2billing.conf [ -f /etc/a2billing.conf ] && rm -f /etc/a2billing.conf [ -d /var/www/html/agent ] && rm -f -R /var/www/html/agent/ [ -d /var/www/html/common ] && rm -f -R /var/www/html/common/ [ -d /usr/src/a2billing ] && rm -f -R /usr/src/a2billing/ [ -d /var/log/a2billing ] && rm -f -R /var/log/a2billing/ # Remove the old cron jobs that included the path name '.../libs_a2billing/crontjob/...'. [ -f /var/spool/cron/asterisk ] && sed -i "/a2billing/d" /var/spool/cron/asterisk # Drop the old database (if it exists) echo "+++ Dropping DB... you have to type 'y' so go on. " mysqladmin drop mya2billing -u root -p$DBPASS # Step2: A2billing installation cd /usr/src echo -e "\n+++ Downloading the source files, please wait a moment..." wget -c --no-check-certificate $GET_URL -O Star2Billing-a2billing-$version.tar.gz tar xzf Star2Billing-a2billing-$version.tar.gz mv Star2Billing-a2billing-*/ a2billing/ # Importing database echo "+++ Importing the database..." mysql -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/a2billing-createdb-user.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/a2billing-mysql-schema-v1.7.0.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.7.0-to-v1.7.1.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.7.1-to-v1.7.2.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.7.2-to-v1.8.0.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.0-to-v1.8.1.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.1-to-v1.8.2.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.2-to-v1.8.3.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.3-to-v1.8.4.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.4-to-v1.8.5.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.5-to-v1.8.6.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.8.6-to-v1.9.0.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.9.0-to-v1.9.1.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.9.1-to-v1.9.2.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.9.2-to-v1.9.3.sql mysql mya2billing -u root -p$DBPASS < /usr/src/a2billing/DataBase/mysql-5.x/UPDATE-a2billing-v1.9.3-to-v1.9.4.sql # Step3: A2billing web interfaces installation echo "+++ A2billing web interfaces installation." cp -rf /usr/src/a2billing/customer /var/www/html/A2BCustomer_UI chmod 777 /var/www/html/A2BCustomer_UI/templates_c cp -rf /usr/src/a2billing/agent /var/www/html chmod 777 /var/www/html/agent/templates_c cp -rf /usr/src/a2billing/admin /var/www/html/A2Billing_UI chmod 777 /var/www/html/A2Billing_UI/templates_c cp -Rf /usr/src/a2billing/common /var/www/html cp /usr/src/a2billing/AGI/a2billing*.php /var/lib/asterisk/agi-bin/ cp -rf /usr/src/a2billing/common/lib /var/lib/asterisk/agi-bin/ chmod +x /var/lib/asterisk/agi-bin/a2billing.php chown -R asterisk:asterisk /var/lib/asterisk/agi-bin # Step4: A2billing configuration files echo "+++ A2billing configuration files." cp /usr/src/a2billing/a2billing.conf /etc/asterisk chown asterisk:asterisk /etc/asterisk/a2billing.conf ln -sf /etc/asterisk/a2billing.conf /etc/a2billing.conf cp /usr/src/a2billing/addons/Doc/extensions_a2billing_1_6.conf /etc/asterisk chown asterisk:asterisk /etc/asterisk/extensions_a2billing_1_6.conf sed -i "s/\(port *= *\)\(.*\)/\13306/" /etc/asterisk/a2billing.conf sed -i "s/\(user *= *\)\(.*\)/\1a2billinguser/" /etc/asterisk/a2billing.conf sed -i "s/\(password *= *\)\(.*\)/\1a2billing/" /etc/asterisk/a2billing.conf sed -i "s/\(dbname *= *\)\(.*\)/\1mya2billing/" /etc/asterisk/a2billing.conf mkdir -p /var/lib/asterisk/mohmp3/acc_1 mkdir -p /var/lib/asterisk/mohmp3/acc_2 mkdir -p /var/lib/asterisk/mohmp3/acc_3 mkdir -p /var/lib/asterisk/mohmp3/acc_4 mkdir -p /var/lib/asterisk/mohmp3/acc_5 mkdir -p /var/lib/asterisk/mohmp3/acc_6 mkdir -p /var/lib/asterisk/mohmp3/acc_7 mkdir -p /var/lib/asterisk/mohmp3/acc_8 mkdir -p /var/lib/asterisk/mohmp3/acc_9 mkdir -p /var/lib/asterisk/mohmp3/acc_10 chmod 777 /var/lib/asterisk/mohmp3/acc_* chown -R asterisk:asterisk /var/lib/asterisk/mohmp3/ # A2billing Extra sounds echo "+++ A2billing Extra sounds" cd /usr/src/a2billing/addons/sounds ./install_a2b_sounds.sh # Step6: Asterisk files echo "" echo "+++ Setting Asterisk" cd /etc/asterisk/ touch additional_a2billing_iax.conf touch additional_a2billing_sip.conf [ "xx$(grep '#include additional_a2billing_sip.conf' /etc/asterisk/sip_custom.conf)" == "xx" ] && echo "#include additional_a2billing_sip.conf" >> /etc/asterisk/sip_custom.conf [ "xx$(grep '#include additional_a2billing_iax.conf' /etc/asterisk/iax_custom.conf)" == "xx" ] && echo "#include additional_a2billing_iax.conf" >> /etc/asterisk/iax_custom.conf if [ "xx$(grep '#include extensions_a2billing_1_6.conf' /etc/asterisk/extensions_custom.conf)" == "xx" ]; then echo -e >> /etc/asterisk/extensions_custom.conf echo "#include extensions_a2billing_1_6.conf" >> /etc/asterisk/extensions_custom.conf fi if [ "xx$(grep '\[myasterisk\]' /etc/asterisk/manager_custom.conf)" == "xx" ]; then echo -e >> /etc/asterisk/manager_custom.conf echo " [myasterisk] secret = mycode deny = 0.0.0.0/0.0.0.0 permit = 127.0.0.1/255.255.255.0 read = system,call,log,verbose,command,agent,user write = system,call,log,verbose,command,agent,user" >> /etc/asterisk/manager_custom.conf fi # Step7: A2billing file permissions chmod 664 /etc/asterisk/additional_a2billing_iax.conf chmod 664 /etc/asterisk/additional_a2billing_sip.conf chmod 664 /etc/asterisk/extensions_a2billing_1_6.conf chown -R asterisk:asterisk /etc/asterisk/ chown -R asterisk:asterisk /var/www/html/common chown -R asterisk:asterisk /var/www/html/A2Billing_UI chown -R asterisk:asterisk /var/www/html/A2BCustomer_UI chown -R asterisk:asterisk /var/www/html/agent chown -R asterisk:asterisk /var/lib/asterisk/ # Cronjobs echo "+++ Setting Cronjobs" echo "# Automatically added for A2Billing 0 * * * * php /usr/src/a2billing/Cronjobs/a2billing_alarm.php 0 12 * * * php /usr/src/a2billing/Cronjobs/a2billing_archive_data_cront.php # to proceed the autodialer */5 * * * * php /usr/src/a2billing/Cronjobs/a2billing_batch_autodialer.php #autorefill 0 10 21 * * php /usr/src/a2billing/Cronjobs/a2billing_autorefill.php 15 * * * * php /usr/src/a2billing/Cronjobs/a2billing_batch_cache.php #Batch process at 00:20 each day 20 0 * * * php /usr/src/a2billing/Cronjobs/a2billing_batch_process.php #Bill DID usage at 00:00 each day 0 0 * * * php /usr/src/a2billing/Cronjobs/a2billing_bill_diduse.php #Generate Invoices at 6am everyday 0 6 * * * php /usr/src/a2billing/Cronjobs/a2billing_batch_billing.php #Check if balance below preset value, and email user if so. 1 * * * * php /usr/src/a2billing/Cronjobs/a2billing_notify_account.php #Charge subscriptions at 06:05 on the 1st of each month 0 6 1 * * php /usr/src/a2billing/Cronjobs/a2billing_subscription_fee.php #Update currencies at 01:00 each day 0 1 * * * php /usr/src/a2billing/Cronjobs/currencies_update_yahoo.php " >> /var/spool/cron/asterisk # Create Log Files # Log files and Permissions echo "+++ Create Log files" [ -d /var/log/a2billing ] || { mkdir -p /var/log/a2billing } touch /var/log/asterisk/a2billing-daemon-callback.log touch /var/log/a2billing/a2billing-daemon-callback.log touch /var/log/a2billing/cront_a2b_alarm.log touch /var/log/a2billing/cront_a2b_autorefill.log touch /var/log/a2billing/cront_a2b_batch_process.log touch /var/log/a2billing/cront_a2b_bill_diduse.log touch /var/log/a2billing/cront_a2b_subscription_fee.log touch /var/log/a2billing/cront_a2b_currency_update.log touch /var/log/a2billing/cront_a2b_invoice.log touch /var/log/a2billing/cront_a2b_check_account.log touch /var/log/a2billing/a2billing_paypal.log touch /var/log/a2billing/a2billing_epayment.log touch /var/log/a2billing/a2billing_api_ecommerce_request.log touch /var/log/a2billing/a2billing_api_callback_request.log touch /var/log/a2billing/a2billing_api_card.log touch /var/log/a2billing/a2billing_agi.log chown asterisk:asterisk /var/log/asterisk/a2billing-daemon-callback.log chown -R asterisk:asterisk /var/log/a2billing # for Predictive Call(Campaigns) echo "+++ For predictive call required" [ -d /var/run/a2billing ] || { mkdir /var/run/a2billing } chown asterisk:asterisk /var/run/a2billing echo "" echo "" echo "" echo "" echo "" echo "*******************************************************************" echo "A2Billing is installed" echo "-------------------------------------------------" echo "" echo "Please Restart the Asterisk service" echo "" echo "*******************************************************************" echo "" echo "The default username is [root]" echo "The default password is [changepassword]" echo "*******************************************************************" #EOF