#!/bin/bash

# Incredible Backup (c) Copyright 2005-2014 Ward Mundy & Associates LLC. All rights reserved.
#                Incredible Backup 11.1 is licensed under the GPL2 license
#
#  For a copy of license, visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
#   For additional information, contact us: http://pbxinaflash.com/about/comment.php

# Unless required by applicable law or agreed to in writing, software distributed under this License 
# is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
# See the License for the specific language governing permissions and limitations under the License.

clear
echo "BY USING INCREDIBLE BACKUP, YOU AGREE TO ASSUME ALL RESPONSIBILITY"
echo "FOR USE OF THE PROGRAMS INCLUDED IN THIS INSTALLATION. NO WARRANTIES"
echo "EXPRESS OR IMPLIED INCLUDING MERCHANTABILITY AND FITNESS FOR PARTICULAR"
echo "USE ARE PROVIDED. YOU ASSUME ALL RISKS KNOWN AND UNKNOWN AND AGREE TO"
echo "HOLD WARD MUNDY, WARD MUNDY & ASSOCIATES LLC, NERD VITTLES, AND THE PBX"
echo "IN A FLASH DEVELOPMENT TEAM HARMLESS FROM ANY AND ALL LOSS OR DAMAGE"
echo "WHICH RESULTS FROM YOUR USE OF THIS SOFTWARE. IF ANY OF THESE TERMS"
echo "AND CONDITIONS ARE RULED TO BE UNENFORCEABLE, YOU AGREE TO ACCEPT ONE"
echo "DOLLAR IN U.S. CURRENCY AS COMPENSATORY AND PUNITIVE LIQUIDATED DAMAGES"
echo "FOR ANY AND ALL CLAIMS YOU AND ANY USERS OF THIS SOFTWARE MIGHT HAVE."
echo " "

echo "Incredible Backup takes a snapshot of your VoIP server."
echo "You can edit tar command to add additional directories."
echo "Just remove the read command to run script as cron job."
echo "Asterisk, MySQL, and Apache are OFF LINE during backup."
echo "Restore to server with same Asterisk + FreePBX version."
echo "If used, reload IncrediblePBX on server before restore."
echo " "
echo "Backup name shows DATETIME-Asterisk-FreePBX-Incredible."
echo "Move backup file from /tmp to remote storage when done."

NOW=`date +'%Y.%m.%d.%H.%M'`
VER=`asterisk -V`
FPBX=`cat /var/www/html/admin/modules/framework/module.xml | grep "<version>" | tail -1 | cut -f 2 -d ">" | sed 's|</version||'`
if [ -e "/etc/pbx/.version" ]; then
 IPBX=`cat /etc/pbx/.version`
 BACKUP="$NOW-A${VER:9}-F$FPBX-I$IPBX.tar"
else
 IPBX=`cat /etc/pbx/.incredible`
 BACKUP="$NOW-A${VER:9}-F$FPBX-I$IPBX.tar"
fi

echo "BACKUP: $BACKUP.gz"
echo " "
read -p "To proceed at your own risk, press the Enter key."

if [ -e "/etc/debian_version" ]; then
 service apache2 stop
 amportal kill
 service mysql stop
else
 amportal kill
 service mysqld stop
 service httpd stop
fi

cd /tmp
echo "Creating backup. Please wait..."
if [ ! -d "/tftpboot" ]; then
 tar -cf $BACKUP /var/www /var/lib/mysql /var/lib/asterisk /root /etc/asterisk /etc/crontab /var/spool/asterisk
else
 tar -cf $BACKUP /var/www /var/lib/mysql /var/lib/asterisk /tftpboot /root /etc/asterisk /etc/crontab /var/spool/asterisk
fi

if [ -e /etc/debian_version ]; then
 service mysql start
 service apache2 restart
 amportal start
else
 service httpd start
 service mysqld start
 amportal start
fi

echo "Compressing the backup. Hang in there..."
gzip $BACKUP

echo "Backup finished and backup file saved to /tmp directory."
echo "BACKUP: $BACKUP.gz"
# end of script
