Table of Contents

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: <cli>apt-get install subversion-tools</cli>

#!/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 <<EOF | mysql -uroot -p'YOURPASSWORD' ispcp
UPDATE mail_users SET status='toadd' WHERE status='ok';
UPDATE domain SET domain_status = 'change' WHERE domain_status = 'ok';
UPDATE domain_aliasses SET alias_status = 'change' WHERE alias_status = 'ok';
UPDATE subdomain SET subdomain_status = 'change' WHERE subdomain_status = 'ok';
UPDATE subdomain_alias SET subdomain_alias_status = 'change' WHERE subdomain_alias_status = 'ok';
UPDATE htaccess SET status = 'change' WHERE status='ok';
UPDATE htaccess_groups SET status = 'change' WHERE status='ok';
UPDATE htaccess_users SET status = 'change' WHERE status='ok';
UPDATE server_ips SET ip_status = 'change' WHERE ip_status='ok';;
TRUNCATE TABLE login;
EOF
${ROOT_DIR}/engine/ispcp-rqst-mngr
fi
 
echo "#### Starting ispcp-daemon ####"
$CMD_ISPCPD start
 
echo "#### Deleting ispcp tmp Dir ####"
make clean
 
echo "#### Restarting Services ####"
$CMD_HTTPD restart
$CMD_NAMED restart
$CMD_MTA restart
$CMD_FTPD restart


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