You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

158 lines
5.3 KiB

#/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