#!/bin/sh # Updated by A.Lang on 2011-03-13 # This script is used for upgrading/fresh install 1.9.3 # # System requirement: PIAF + Asterisk 1.6.x # # Make sure only root can run our script if [ "$(id -u)" != "0" ]; then echo "This script must be run as root" 1>&2 exit 1 fi clear echo "*******************************************************************************" echo "" echo " Installing A2Billing 1.9.3 for PIAF+Asterisk 1.6.x" echo "" echo " (c)alang.hsuATgmail.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, then you should inspect" echo "this script and modify it, or modify your installation before executing it." echo "*******************************************************************************" read -p "Press any key to continue or ctrl-C to exit" echo "" #Change passw0rd below for your MySQL root password if you have changed it from the default. DBPASS='passw0rd' #SVN_URL='http://svn.a2billing.net/svn/asterisk2billing/tags/1.7.1/' #GET_URL='http://www.asterisk2billing.org/downloads/A2Billing_1.8.1.tar.gz' GET_URL='https://github.com/Star2Billing/a2billing/tarball/v1-current' #DATETAG=`date +%Y%m%d%H%k%M%S` # Step1: Removing A2billing Old files rm -f -R /var/www/html/A2Billing_UI/ rm -f -R /var/www/html/A2BCustomer_UI/ rm -f -R /var/lib/asterisk/agi-bin/a2billing.php rm -f -R /var/lib/asterisk/agi-bin/libs_a2billing/ rm -f -R /var/lib/asterisk/agi-bin/lib/ rm -f /etc/asterisk/additional_a2billing_iax.conf rm -f /etc/asterisk/additional_a2billing_sip.conf rm -f /etc/asterisk/extensions_a2billing*.conf rm -f /etc/asterisk/a2billing.conf rm -f /etc/a2billing.conf rm -f -R /var/www/html/agent/ rm -f -R /var/www/html/common/ rm -f -R /usr/src/a2billing/ rm -f -R /var/log/a2billing # Remove the old cron jobs that included the path name '.../libs_a2billing/crontjob/...'. sed -i "/a2billing/d" /var/spool/cron/asterisk # Drop the old database (if it exists) mysqladmin drop mya2billing -u root -p$DBPASS # Step2: A2billing installation ## below is for wget cd /usr/src rm -f -R a2billing/ echo "Downloading the source files, please wait a moment..." #wget -c http://www.asterisk2billing.org/downloads/A2Billing_1.8.1.tar.gz wget -c --no-check-certificate $GET_URL tar xzf Star2Billing-a2billing-*.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 # Step3: 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 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.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 cd /usr/src/a2billing/addons/sounds ./install_a2b_sounds.sh # Step6: Asterisk files 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 666 /etc/asterisk/additional_a2billing_iax.conf chmod 666 /etc/asterisk/additional_a2billing_sip.conf chmod 666 /etc/asterisk/extensions_a2billing.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 "# 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 0 10 21 * * php /usr/src/a2billing/Cronjobs/a2billing_autorefill.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 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/api_ecommerce_request.log touch /var/log/a2billing/api_callback_request.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) mkdir /var/run/a2billing chown asterisk:asterisk /var/run/a2billing echo "" echo "" echo "" echo "" echo "" echo "*******************************************************************" echo "A2Billing is installed" echo "-------------------------------------------------" echo "" echo "Please Reboot as soon as you are able" echo "" echo "*******************************************************************" echo "" echo "The default username is [root]" echo "The default password is [changepassword]" echo "*******************************************************************" #EOF