====== 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