====== Nightly Updatescript ======
This Script is for following the Development. It's dsigned for people, where know's what they do!!! We gave no Support for this script. Use it on your own risk!!!
The script is a quick hack to automate the process. **Make sure you read the timeline before you use it!!!**
**Changes in the ispcp.conf are NOT included in the Script. You have to do this by hand.**
Launch it as "root" from your "trunk" directory.
A backup of the current IPSPCDIR is created in BACKUPDIR (default values are in the script).
It's in Beta state. Make sure you have backups before you try it.
===== Automated Version =====
Also, if you're super lazy, you can use this modified version (thanks sci2tech). It will checkout svn for you and upgrade "parts" and "etc" also. Be carefull with this as sometimes nightly is broken. Always check the timeline. Remember to change mysql user and password.
You need "subversion" installed on your server to use it.
i.e on Debian use:
apt-get install subversion-tools
#!/bin/bash
#
# ispcp-nightly-update
# Version: 0.0.7 - 07.09.2009
# License: GPL
# Author : ispcomm
# Credits: ispcp development team
#
# Variables
BACKUPDIR="/var/www/backup"
TRUNK_DIR="/usr/src/ispcp"
REBUILD_SITES="yes"
SAVE_DEFAULT_BACKUP="yes"
DISTRO_UPD="yes"
echo "#### Starting Update ispCP to latest Trunk ####"
function msg_exit(){
echo $1;exit;
}
function Extract_vars(){
eval `cat ${TRUNK_DIR}/${MAKEFILE} | grep -E "(INST_PREF|SYSTEM_CONF)="| sed -e 's/$(INST_PREF)//g'`
for a in `cat ${SYSTEM_CONF}/ispcp.conf | grep -E "(CONF_DIR|GUI_ROOT_DIR|ROOT_DIR|BACKUP_FILE_DIR|CMD_HTTPD|CMD_NAMED|CMD_MTA|CMD_FTPD|CMD_ISPCPD|CMD_PFLOGSUM)"| sed -e 's/ //g'`
do
export $a
done
WWWDIR=`echo ${ROOT_DIR} | awk -F "/ispcp" '{print $1}'`
}
#download/update trunk no longer remove old trunk (thanks kilburn)
echo "#### DOWNLOAD TRUNK ####"
mkdir -p ${TRUNK_DIR}
svn checkout http://isp-control.net/ispcp_svn/trunk ${TRUNK_DIR}
cd ${TRUNK_DIR}
echo "#### SO determining ####"
if [ `lsb_release -i -s | tr -d "\n"` == "Ubuntu" ]; then
RELEASE=`lsb_release -c -s | tr -d "\n"`
case ${RELEASE} in
"jaunty") ;;
"intrepid") ;;
"hardy") ;;
"gutsy") ;;
"feisty") ;;
"edgy") ;;
* ) msg_exit "${RELEASE} is not suported";;
esac
MAKEFILE="Makefile.ubuntu"
Extract_vars
if [ $DISTRO_UPD == "yes" ] ; then
if [ -e ./docs/Ubuntu/ubuntu-packages-${RELEASE} ]; then
echo "#### SO UPDATE ####"
apt-get update;
apt-get -y dist-upgrade;
apt-get -y install `cat ./docs/Ubuntu/ubuntu-packages-${RELEASE}`;
fi
fi;
elif [ -e /etc/debian_version ]; then
RELEASE=`lsb_release -c -s | tr -d "\n"`
case ${RELEASE} in
"sarge") ;;
"etch") ;;
"lenny") ;;
"squeeze") ;;
* ) msg_exit "${RELEASE} is not suported";;
esac
MAKEFILE="Makefile"
Extract_vars
if [ $DISTRO_UPD == "yes" ] ; then
if [ -e ./docs/Debian/debian-packages-${RELEASE} ]; then
echo "#### SO UPDATE ####"
apt-get update;
apt-get -y dist-upgrade;
apt-get -y install `cat ./docs/Debian/debian-packages-${RELEASE}`;
fi
fi;
elif [ -e /etc/fedora-release ]; then
MAKEFILE="Makefile.fedora"
Extract_vars
if [ $DISTRO_UPD == "yes" ] ; then
msg_exit "Fedora is not suported yet"
yum -y install `cat ./docs/Fedora/fedora-packages`
cpan2rpm -i http://search.cpan.org/CPAN/authors/id/P/PH/PHOENIX/Term-ReadPassword-0.07.tar.gz
wget -P /tmp/core http://hany.sk/mirror/fedora/releases/7/Everything/i386/os/Fedora/perl-Net-LibIDN-0.09-3.fc7.i386.rpm
rpm -i /tmp/core/perl-Net-LibIDN-0.09-3.fc7.i386.rpm
rm -f /tmp/core/perl-Net-LibIDN-0.09-3.fc7.i386.rpm
fi;
elif [ -e /etc/SuSE-release ]; then
MAKEFILE="Makefile.opensuse"
Extract_vars
if [ $DISTRO_UPD == "yes" ] ; then
yast -i `cat ./docs/OpenSuse/opensuse103-packages`
fi;
elif [ -e /etc/gentoo-release ]; then
MAKEFILE="Makefile.gentoo"
Extract_vars
if [ $DISTRO_UPD == "yes" ] ; then
emerge -uq `cat ./docs/Gentoo/gentoo-packages`
fi;
elif [ -e /etc/redhat-release ]; then
msg_exit "RedHat is not suported yet"
elif [ -e /etc/slackware-version ]; then
msg_exit "Slackware is not suported yet"
else
msg_exit "Unknown Linux ditribution: not suported"
fi
echo "#### BACKUP OLD FILES ####"
mkdir -p $BACKUPDIR
pushd $BACKUPDIR
if [ $SAVE_DEFAULT_BACKUP == "yes" ] ; then
mv -f $BACKUP_FILE_DIR .
fi
tar czpf "ispcp_backup-`date +'%Y-%m-%d %H-%M-%S'`.tar.gz" ${WWWDIR}/ispcp/
tar czpf "ispcp_backup-etc-`date +'%Y-%m-%d %H-%M-%S'`.tar.gz" ${SYSTEM_CONF}
echo "#### SAVING SETTINGS ####"
cp -v ${WWWDIR}/ispcp/engine/ispcp-db-keys.pl .
cp -v ${WWWDIR}/ispcp/gui/include/ispcp-db-keys.php .
cp -v ${WWWDIR}/ispcp/gui/tools/pma/config.inc.php .
popd
echo "#### BUILDING ISPCP ####"
make -f ${MAKEFILE} clean
make -f ${MAKEFILE} install
echo "#### STOPING ISPCP DAEMON ####"
$CMD_ISPCPD stop
echo "#### SAVEING CUSTOM STAFF ####"
cp -TvR ${GUI_ROOT_DIR}/domain_default_page ${INST_PREF}${GUI_ROOT_DIR}/domain_default_page
cp -v ${GUI_ROOT_DIR}/themes/user_logos/* ${INST_PREF}${GUI_ROOT_DIR}/themes/user_logos/
cp -TvR ${GUI_ROOT_DIR}/errordocs ${INST_PREF}${GUI_ROOT_DIR}/errordocs
echo "#### REMOVE OLD ISPCP ####"
rm -fR $ROOT_DIR
echo "#### REMOVE .svn DIRECTORIES ####"
rm -fR `find ${INST_PREF} -type d -name '.svn'`
echo "#### UPDATE CURENT INSTALLATION ####"
pushd ${INST_PREF}${WWWDIR}
rm -fR `find ispcp/ -type d -name '.svn'`
cp -R ispcp/ $WWWDIR
cp -v ${INST_PREF}${CMD_PFLOGSUM} ${CMD_PFLOGSUM}
popd
echo "#### RESTORE SETTINGS ####"
pushd $BACKUPDIR
cp -v ispcp-db-keys.pl ${WWWDIR}/ispcp/engine/
cp -v ispcp-db-keys.pl ${WWWDIR}/ispcp/engine/messenger/
cp -v ispcp-db-keys.php ${WWWDIR}/ispcp/gui/include/
cp -v config.inc.php ${WWWDIR}/ispcp/gui/tools/pma/
echo "#### RESTORE BACKUPS ####"
if [ $SAVE_DEFAULT_BACKUP == "yes" ] ; then
mv -f backups ${BACKUP_FILE_DIR}
fi
popd
echo "#### SETTING PERMISIONS ####"
pushd ${WWWDIR}/ispcp/engine/setup/
./set-engine-permissions.sh
./set-gui-permissions.sh
popd
echo "#### COPYING /parts DIRECTORIES ####"
bla=`find ${INST_PREF}/etc/ispcp -type d -name 'parts'`;
for x in $bla;
do
bla2=`echo ${x} | awk -F"${INST_PREF}|/parts" '{print $2}'`
cp -R $x $bla2
done
cp ${INST_PREF}${CONF_DIR}/apache/httpd.conf ${CONF_DIR}/apache/httpd.conf
cp ${INST_PREF}${CONF_DIR}/apache/working/ispcp.conf ${CONF_DIR}/apache/working/ispcp.conf
echo "#### REBUILDING SITES ####"
if [ $REBUILD_SITES == "yes" ] ; then
cat <
\\
===== Changelog ======
25.05.08 - Added Printouts
\\
03.06.08 - Added support for Fedora, SuSE and Gentoo
\\
18.08.08 - Added rebuild for apache ispcp.conf. Save customizations (domain_default_page and user logo).
\\
13.12.08 - Save customizations also (errordocs)
\\
07.01.09 - Fixed some Typo's
\\
22.01.09 - Fixed Lenny apt-get list
\\
02.05.09 - Update to Debian 5.0.1
\\
03.05.09 - Update site rebuilding
\\
03.08.09 - Added support for Ubuntu
\\
12.08.09 - Changed messager to messenger
\\
20.08.09 - Simplify lsb_release usage
\\
07.09.09 - Add FTPd restart
\\
12.05.10 - Changed link to Trunk