#!/bin/sh
#####################################################################################
# 						FreePBX 1.1009.210.62-1 Upgrade	                         	#
#####################################################################################	
# Fixes	
# X-Upgrade to Asterisk 10.9
#-----------------------------------------------------------------------------------
# TODO 																						
#-----------------------------------------------------------------------------------
#####################################################################################
# Copyright 2012 Schmooze Com, Inc.  This upgrade script and all concepts are property of
# Schmooze Com, Inc. and are not to be copied for other use.  This upgrade script is free
# to use for upgrading FreePBX Distro systems only but carries no guarnatee on performance
# and is used at your own risk.  This script carries NO WARRANTY.
#####################################################################################
asterisk=`/usr/sbin/asterisk -rx "core show version"`
kernel=`uname -a`
version=`cat /etc/asterisk/freepbxdistro-version`
host=`hostname`
upgradeversion=1.1009.210.62-1
virtual=`uname -a | grep pve | wc -l`
#####################################################################################
# Check to make sure this is a FreePBX Distro system before executing
echo "Check to make sure this is a FreePBX Distro system before executing"
if [ -f /etc/asterisk/freepbxdistro-version ]; then
	echo "This appears to be a FreePBX Distro system as it has a FreePBX Distro Version of $version"
	echo "`date` This appears to be a FreePBX Distro system as it has a FreePBX Distro Version of $version" >> /var/log/pbx/upgrade/"$upgradeversion"
else
	echo "This does not appears to be a FreePBX Distro system as it has no FreePBX Distro Version file"
	exit
fi
#####################################################################################
#Echo in some settings into the log file for recording keeping.
echo "VARIABLES SET FOR UPGRADE" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "	asterisk=$asterisk" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "	kernel=$kernel" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "	version=$version" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "	host=$host" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "	upgradeversion=$upgradeversion" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "	virtual=$virtual" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
###########################################################################
#Upgrade to new $upgradeversion Base
echo
echo "Your FreePBX Distro System is being upgraded to $upgradeversion. Please standby..."
echo "`date` Your FreePBX Distro System is being upgraded to $upgradeversion. Please standby..." >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
###########################################################################
# Setup tmp file for backup of anythign we need to copy before upgrading.
mkdir /usr/tmp/$upgradeversion
################################################# STAGE 1 STARTING - GUI MODULES ####################################
echo
echo "STAGE 1 STARTING - GUI Modules"
echo "`date` STAGE 1 STARTING - GUI Modules" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
###########################################################################
# set our permissions to avoid disaster, or at the very least breaking things
`which amportal` chown
###########################################################################
# Upgrade All FreePBX GUI Modules
echo
echo " Upgrade All FreePBX GUI Modules"
echo " `date` Upgrade All FreePBX GUI Modules" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
# Change Permission of amportal.conf
chown asterisk:asterisk /etc/amportal.conf
# Installing all new modules for 2.10 now.  Running it a few times to make sure we get all the modules.
sudo -u asterisk /var/lib/asterisk/bin/module_admin upgradeall
sudo -u asterisk /var/lib/asterisk/bin/retrieve_conf
sudo -u asterisk /var/lib/asterisk/bin/module_admin reload
sudo -u asterisk /var/lib/asterisk/bin/module_admin upgradeall
sudo -u asterisk /var/lib/asterisk/bin/retrieve_conf
sudo -u asterisk /var/lib/asterisk/bin/module_admin reload
# Restart apache so the language pack takes effect
/etc/init.d/httpd restart  > /dev/null 2>&1
###########################################################################
# set our permissions to avoid disaster, or at the very least breaking things
`which amportal` chown
###########################################################################
echo
echo "STAGE 1 COMPLETED - GUI Modules - Moving to Stage 2"
echo "`date` STAGE 1 COMPLETED - GUI Modules - Moving to Stage 2" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
################################################# STAGE 1 COMPLETED - GUI MODULES ####################################################################
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
################################################# STAGE 2 STARTING - RPM's ####################################################
echo
echo "STAGE 2 STARTING - RPM's"
echo "`date` STAGE 2 STARTING - RPM's" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
###########################################################################
echo
echo " Replace repos with only FreePBX Distro since some people have added other repos which can break updates"
echo " `date` Replace repos with only FreePBX Distro since some people have added other repos which can break updates" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
rm -rf /etc/yum.repos.d/*
###########################################################################
# Resetup yum.conf just to be safe
# Setup FreePBX Distro Repos Only
/bin/cat <<'EOTT' >/etc/yum.repos.d/FreePBX.repo
# FreePBX-Base.repo
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=6.2&arch=$basearch&repo=os
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/os/i386/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=6.2&arch=$basearch&repo=updates
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/updates/i386/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=6.2&arch=$basearch&repo=extras
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/extras/i386/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.freepbxdistro.org/?release=6.2&arch=$basearch&repo=centosplus
#baseurl=http://yum.freepbxdistro.org/centos/$releasever/centosplus/i386/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

#Core PBX Packages
[pbx]
name=pbx
mirrorlist=http://mirrorlist.freepbxdistro.org/?pbxver=1.1009.210.62&release=6.2&arch=$basearch&repo=pbx
#baseurl=http://yum.freepbxdistro.org/pbx/1.1009.210.62/i386/
gpgcheck=0
enabled=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-FreePBX

EOTT
###########################################################################
echo
echo "Clean Yum just to make sure we have a fresh list"
echo
yum clean all
###########################################################################
echo
echo "Moving to Next Step"
echo
###########################################################################
# Update Asterisk
packagename1=asterisk10-10.9.0
echo
echo " Checking to see if we need to update "$packagename1""
echo " `date` Checking to see if we need to update "$packagename1"" >> /var/log/pbx/upgrade/"$upgradeversion"
if [ `rpm -qa | grep $packagename1 | wc -l` -gt 0 ]; then
	echo " "$packagename1" all ready installed-skipping updating this"
	echo " `date` "$packagename1" all ready installed-skipping updating this" >> /var/log/pbx/upgrade/"$upgradeversion" 
else
	echo " updating "$packagename1""
	echo " `date` "$packagename1"" >> /var/log/pbx/upgrade/"$upgradeversion"
	yum -y update $packagename1 asterisk10-*
	if [ `rpm -qa | grep $packagename1 | wc -l` -gt 0 ]; then	
		echo
		echo " "$packagename1" installed correctly moving along to the next step"
		echo " `date` "$packagename1" installed correctly moving along to the next step" >> /var/log/pbx/upgrade/"$upgradeversion"
		echo
		/usr/sbin/asterisk -rx "core restart now"
	else
		# Adding Notes
		echo
		echo " SCRIPT---FAILED ON STAGE 2--Failed to verify "$packagename1" RPM was installed"
		echo " `date` SCRIPT---FAILED ON STAGE 2--Failed to verify "$packagename1" RPM was installed" >> /var/log/pbx/upgrade/"$upgradeversion"
	fi
fi
###########################################################################
echo
echo "Moving to Next Step"
echo
###########################################################################
# Update all other RPM's to Centos 6.2
echo " Updating all remaining RPMS now to Centos 6.2"
echo " `date` Updating all remaining RPMS now to Centos 6.2" >> /var/log/pbx/upgrade/"$upgradeversion"
yum -y update
rm -rf /etc/yum.repos.d/Cent*
###########################################################################
echo
echo "Moving to Next Step"
echo
###########################################################################
echo
echo "STAGE 2 COMPLETED - RPM's - Moving to Stage 3"
echo "`date` STAGE 2 COMPLETED - Misc Items - Moving to Stage 4" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
################################################# STAGE 2 COMPLETED - RPM's ######################################################################
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
################################################# STAGE 3 STARTING - MISC ITEMS  #########################################################
echo
echo "STAGE 3 STARTING - Misc Items"
echo "`date` STAGE 3 STARTING - Misc Items" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
###########################################################################
echo
echo "STAGE 3 COMPLETED - Misc Items - Moving to Stage 4"
echo "`date` STAGE 3 COMPLETED - Misc Items - Moving to Stage 4" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
################################################# STAGE 3 COMPLETED - MISC ITEMS ###################################################################
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
################################################# STAGE 4 STARTING - CLEAN UP #####################################################
# Start Stage 4
echo
echo "STAGE 4 STARTING - Clean Up"
echo "`date` STAGE 4 STARTING - Clean Up" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
###########################################################################
echo " updatedb for locate command"
echo " `date` updatedb for locate command" >> /var/log/pbx/upgrade/"$upgradeversion"
updatedb
echo
###########################################################################
echo " Restart incron to be safe"
echo " `date` Restart incron to be safe" >> /var/log/pbx/upgrade/"$upgradeversion"
/etc/init.d/incrond restart  > /dev/null 2>&1
echo
###########################################################################
# End Stage 4
echo
echo "STAGE 4 COMPLETED - Clean Up - Moving to Stage 5"
echo "`date` STAGE 4 COMPLETED - Clean Up - Moving to Stage 5" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
echo	
################################################# STAGE 4 COMPLETED - CLEAN UP #####################################################
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
################################################# STAGE 5 STARTING - FINAL VERIFICATIONS #####################################################
# Start Stage 5
echo
echo "STAGE 5 STARTING - Final Verifications"
echo "`date` STAGE 5 STARTING - Final Verifications" >> /var/log/pbx/upgrade/"$upgradeversion"
echo
###########################################################################
# End Stage 5
echo
echo "STAGE 5 COMPLETED - Final Verifications - Moving to Stage 6"
echo "`date` STAGE 5 COMPLETED - Final Verifications - Moving to Stage 6" >> /var/log/pbx/upgrade/"$upgradeversion"
echo "" >> /var/log/pbx/upgrade/"$upgradeversion"
echo		
################################################# STAGE 5 COMPLETED - FINAL VERIFICATION #####################################################echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
echo
################################################# STAGE 6 STARTING - UPDATE VERSION #####################################################
# Update version number now and close out logs and update script
echo "$upgradeversion" > /etc/asterisk/freepbxdistro-version
echo "`date` UPGRADE 100% COMPLETED " >> /var/log/pbx/upgrade/"$upgradeversion"
echo "REBOOT NOW FOR NEW DAHDI AND KERNEL TO TAKE EFFECT"
################################################# STAGE 6 COMPLETED - UPDATE VERSION #####################################################
