|
|
#/bin/sh
|
|
|
|
|
|
# draft script to compare PHP versions before an update
|
|
|
|
|
|
# Usage:
|
|
|
#
|
|
|
# this script is supposed to be invoked by a full absolute path including filename,
|
|
|
# e.g.: sh /foo/bar/fizbuz.sh
|
|
|
# the environment detection for Tiki root will fail if used another way
|
|
|
#
|
|
|
# Suggestions:
|
|
|
# /${TIKI_ROOT}/doc/devtools/svnup.sh
|
|
|
# /${TIKI_ROOT}/doc/devtools/svn-update-check.sh
|
|
|
|
|
|
PATH="${PATH}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
|
|
|
|
|
# TODO Todo todo: merge this script with doc/devtools/svnup.sh
|
|
|
# and look at doc/devtools/svnup.php
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
# local configuration, to be adjusted
|
|
|
|
|
|
# choose a username and a password for htaccess protection
|
|
|
USER="next" #
|
|
|
PASSWORD="next" #
|
|
|
CREDENTIALS="${USER}:${PASSWORD}" #
|
|
|
|
|
|
# adjust this to your Tiki installation
|
|
|
#PHPINFOURL="https://nextbranding.tiki.org/local/phpinfo.php"
|
|
|
PHPINFOURL="https://nextbranding.tiki.org/local/phpversion.php"
|
|
|
#PHPINFOURL="https://nextbranding.tiki.org/doc/devtools/etc/update/phpversion.php"
|
|
|
|
|
|
# choose a temporary path to put the passwordfile in, it will be deleted after usage
|
|
|
TMPPATH="/tmp"
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
# do not change hardcoded data here
|
|
|
|
|
|
THIS_REL_PATH="doc/devtools" # relative to TIKI_ROOT, which needn't be webservers document root
|
|
|
|
|
|
LOG_PATH="var/log/update"
|
|
|
LOG_FILENAME="update.log"
|
|
|
LOG_FILE="${LOG_PATH}/${LOG_FILENAME}"
|
|
|
|
|
|
LOCK_PATH="var/lock" # not used yet
|
|
|
|
|
|
THIS_PWD=`pwd` # this doesn't mean anything because this script can be started by cronjob or interactive
|
|
|
THIS_DIRNAME=`dirname $0` # this is the important information when run by cronjob
|
|
|
THIS_BASENAME=`basename $0` # this is additional information, JFTR
|
|
|
#MYPATHLOG=/opt/tiki.repo/trunk/local/my.log # debug nonsense
|
|
|
#echo >> ${MYPATHLOG} # debug nonsense
|
|
|
#echo THIS_PWD ${THIS_PWD} >> ${MYPATHLOG} # debug nonsense
|
|
|
#echo THIS_DIRNAME ${THIS_DIRNAME} >> ${MYPATHLOG} # debug nonsense
|
|
|
#echo THIS_BASENAME ${THIS_BASENAME} >> ${MYPATHLOG} # debug nonsense
|
|
|
|
|
|
cd ${THIS_DIRNAME} # now we are in a defined environment
|
|
|
SCRIPT_DIRNAME=`pwd` # is this stupid nonsense?
|
|
|
|
|
|
# very important: define the Tiki root environment variable
|
|
|
cd ../../ # because we know we are in doc/devtools/ -> 2x up
|
|
|
TIKI_ROOT=`pwd`
|
|
|
|
|
|
#echo new PWD : `pwd` >> ${MYPATHLOG} # debug nonsense
|
|
|
#echo --- FIN --- >> ${MYPATHLOG} # debug nonsense
|
|
|
#exit 1 # debug nonsense
|
|
|
|
|
|
# adjust the Tikipath to your needs
|
|
|
#TIKIPATH="./" # debug nonsense
|
|
|
TIKIPATH=${TIKI_ROOT} # todo: REF , was old variable name convention
|
|
|
|
|
|
# keep this hardcoded
|
|
|
#SCRIPTPATH="${TIKIPATH}/local"
|
|
|
#SCRIPTPATH="${TIKIPATH}/doc/devtools"
|
|
|
SCRIPTPATH="${TIKIPATH}/${THIS_REL_PATH}"
|
|
|
|
|
|
# keep this hardcoded
|
|
|
# but use relative path for "svn up ..."
|
|
|
cd ${SCRIPTPATH}
|
|
|
#SVR_PATH="${TIKIPATH}/${THIS_REL_PATH}/etc/update"
|
|
|
SVR_PATH="etc/update"
|
|
|
SVR_FILE="software-versions-required.txt"
|
|
|
#SVR=${SVR_PATH}/${SVR_FILE}
|
|
|
SVR=${SVR_PATH}/${SVR_FILE}
|
|
|
#
|
|
|
# uncomment for local test, quick and dirty
|
|
|
#SCRIPTPATH="./"
|
|
|
#
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
# before doing a Tiki update check the required software versions
|
|
|
cd ${SCRIPTPATH}
|
|
|
svn up ${SVR}
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
|
|
# the tricky path stuff is done
|
|
|
|
|
|
LOCKFILE="${TMPPATH}/locktikiupdate"
|
|
|
|
|
|
HTPASSWDFILE=i"${TMPPATH}/.htpasswd"
|
|
|
# some debug output
|
|
|
#echo sed -e "s/TEMPLATEPATH/\\${TMPPATH}/g" < _htaccess > .htaccess
|
|
|
#echo
|
|
|
#cat .htaccess # should be after modifying .htaccess
|
|
|
#echo
|
|
|
#
|
|
|
cd ${SVR_PATH}
|
|
|
sed -e "s/TEMPLATEPATH/\\${TMPPATH}/g" < _htaccess > .htaccess
|
|
|
htpasswd -n -b ${USER} ${PASSWORD} | tee ${HTPASSWDFILE}
|
|
|
|
|
|
# public access to phpinfo is dangerous, thus we added htaccess
|
|
|
# old: use phpinfo()
|
|
|
#mv phpinfo.php.bin phpinfo.php
|
|
|
#X=`curl -u ${CREDENTIALS} ${PHPINFOURL} | grep PHP | grep -i version | grep -i php | grep -o [0-9]\\\.[0-9]\\\.[0-9] | tail -n 1 | grep -o [0-9]\\\.[0-9]`
|
|
|
#mv phpinfo.php phpinfo.php.bin
|
|
|
# new: use phpversion()
|
|
|
mv phpversion.php.bin phpversion.php
|
|
|
X=`curl -u ${CREDENTIALS} ${PHPINFOURL} | grep -o [0-9]\\\.[0-9]\\\.[0-9] | grep -o [0-9]\\\.[0-9]`
|
|
|
mv phpversion.php phpversion.php.bin
|
|
|
|
|
|
# delete password file when not needed
|
|
|
rm ${HTPASSWDFILE}
|
|
|
|
|
|
#echo $X > foobar.tmp
|
|
|
|
|
|
cd -
|
|
|
|
|
|
Y=`grep PHP ${SVR} | cut -d, -f2`
|
|
|
|
|
|
# stripe decimal point, probably it won't work properly with versions like 5.10
|
|
|
## compared to 7.2 it will be 510>72 supposed to be sufficient, which is wrong
|
|
|
XX=`echo ${X} | sed -e 's/\.//g'`
|
|
|
YY=`echo ${Y} | sed -e 's/\.//g'`
|
|
|
|
|
|
# just some debug info
|
|
|
echo X:${X} // Y:${Y}
|
|
|
echo XX:${XX} // YY:${YY}
|
|
|
|
|
|
#exit 1
|
|
|
|
|
|
# compare installed and required version
|
|
|
if [ ${XX} -ge ${YY} ] ; then
|
|
|
echo "we are good, we can run svn update"
|
|
|
if [ -e ${LOCKFILE} ] ; then
|
|
|
echo "updated is locked"
|
|
|
echo "you might want to remove ${LOCKFILE} and run this script again"
|
|
|
exit 1
|
|
|
else
|
|
|
touch ${LOCKFILE}
|
|
|
echo "run svn up now"
|
|
|
rm ${LOCKFILE}
|
|
|
fi
|
|
|
else
|
|
|
echo "we are too old, we should not run svn update"
|
|
|
fi
|