====== Nightly Updatescript ======
Questo script è per seguire lo sviluppo. é stato creato per le persone, che sanno quello che fanno!
Non c'è nessun tipo di supporto per questo script. L'uso è a vostro rischio e pericolo!
Lo script è un hack per automatizzare il processo.
** Assicurarsi di leggere la sequenza temporale prima di usarla !!!**
** Cambiamenti nel ispcp.conf NON sono inclusi nello script. Dovete farli a mano .**
Lancio come "root" dalla directory. "trunk"
Una copia di backup di IPSPCDIR attuale verrà creata in BACKUPDIR (valori di default sono nello script).
E' in fase di beta. Assicurarsi di avere il backup prima di provarlo.
===== Automated Version =====
Inoltre, se siete super pigro, è possibile utilizzare questa versione modificata (grazie sci2tech). Farà un checkout per voi della cartella svn e anche l'aggiornamento "parts" e "etc". State attenti molte volte la versione night ha qualche problema, vi consigliarmo di controllare sempre la timeline. Ricordati di cambiare user e password mysql.
E' necessario avere subversion installato sul sistema
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_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://www.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