2010-05-11 09:48:45 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
2010-11-29 17:21:55 +01:00
|
|
|
#NAME="My Roundcube"
|
2010-10-07 11:03:56 +02:00
|
|
|
RC_HOME=/var/www/webmail/public_html
|
2010-05-11 09:48:45 +02:00
|
|
|
MAIL=root
|
2010-10-07 11:03:56 +02:00
|
|
|
SEND_EVERY_NB_DAY=7
|
2010-10-07 14:34:30 +02:00
|
|
|
CACHE=$RC_HOME/../.cache_check_upgrade
|
2010-10-07 11:03:56 +02:00
|
|
|
CACHE_FAILED=$CACHE.failed
|
|
|
|
MAX_CHECK=10
|
|
|
|
MAX_FAILED=3
|
|
|
|
SLEEP_ON_FAILED=10
|
|
|
|
CHECK_URL=http://www.roundcube.net/download
|
2011-02-10 12:09:08 +01:00
|
|
|
DOWNLOAD=0
|
2011-02-10 12:02:47 +01:00
|
|
|
DOWNLOAD_DIR=$RC_HOME/../upstream
|
2010-05-11 09:48:45 +02:00
|
|
|
|
|
|
|
DEBUG=0
|
2011-02-10 12:02:47 +01:00
|
|
|
|
|
|
|
function usage() {
|
|
|
|
echo "Usage : $0 [-v] [-d]"
|
|
|
|
echo " -v Verbose mode"
|
|
|
|
echo " -d Download new release"
|
|
|
|
echo " -h Display this help"
|
|
|
|
}
|
|
|
|
|
|
|
|
while getopts ":dvh" opt; do
|
|
|
|
case $opt in
|
|
|
|
v)
|
|
|
|
DEBUG=1
|
|
|
|
;;
|
|
|
|
d)
|
|
|
|
DOWNLOAD=1
|
|
|
|
;;
|
|
|
|
h)
|
|
|
|
usage
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
\?)
|
|
|
|
echo "Invalid option: -$OPTARG" >&2
|
|
|
|
echo
|
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
:)
|
|
|
|
echo "Option -$OPTARG requires an argument." >&2
|
|
|
|
echo
|
|
|
|
usage
|
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
|
|
|
|
esac
|
|
|
|
done
|
2010-05-11 09:48:45 +02:00
|
|
|
|
2010-10-07 14:34:30 +02:00
|
|
|
[ -f "$0.local" ] && source "$0.local" && [ $DEBUG -eq 1 ] && echo "Import local config file : $0.local"
|
|
|
|
|
2010-10-07 11:03:56 +02:00
|
|
|
current=`egrep "define.*RCMAIL_VERSION" $RC_HOME/program/include/iniset.php|sed "s/define('.*', '\([^']*\)'.*$/\1/"`
|
2011-01-13 12:30:57 +01:00
|
|
|
current="`echo $current|sed 's/-rc$//'`"
|
2010-05-11 09:48:45 +02:00
|
|
|
[ $DEBUG -eq 1 ] && echo "Current : $current"
|
|
|
|
|
2010-10-07 11:03:56 +02:00
|
|
|
for i in `seq 1 $MAX_CHECK`
|
|
|
|
do
|
|
|
|
tmpfile=`mktemp`
|
|
|
|
wget -q $CHECK_URL -O $tmpfile
|
|
|
|
newest=`cat $tmpfile|grep Stable|sed 's/^.*Stable.*: \(.*\)<\/td>.*$/\1/'`
|
|
|
|
if [ -n "$newest" ]
|
|
|
|
then
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Newest : $newest"
|
|
|
|
rm -f $CACHE_FAILED > /dev/null 2>&1
|
|
|
|
|
|
|
|
DOWNLOAD_URL=`cat $tmpfile|grep "$newest"|grep "tar.gz"|head -1|sed 's/.* href="\([^"]*\)" .*$/\1/'`
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Download URL : $DOWNLOAD_URL"
|
|
|
|
[ ! -n "$DOWNLOAD_URL" ] && DOWNLOAD_URL="$CHECK_URL" && [ $DEBUG -eq 1 ] && echo "Use check URL as download URL : $DOWNLOAD_URL"
|
2010-05-11 09:48:45 +02:00
|
|
|
|
2010-10-07 11:03:56 +02:00
|
|
|
rm -f $tmpfile > /dev/null 2>&1
|
|
|
|
break;
|
|
|
|
elif [ $i -eq $MAX_CHECK ]
|
|
|
|
then
|
|
|
|
error="Site du projet injoignable (ou structure du site modifie !!) => Impossible de recuperer le numero de la version stable actuel."
|
|
|
|
[ $DEBUG -eq 1 ] && echo $error
|
|
|
|
if [ -f $CACHE_FAILED ]
|
|
|
|
then
|
|
|
|
NB=`cat $CACHE_FAILED`
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Fichier de cache d'erreur existe : $NB echec. Max : $MAX_FAILED"
|
|
|
|
if [ $NB -lt $MAX_FAILED ]
|
|
|
|
then
|
|
|
|
let NNB=NB+1
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Augmentation du nb d'erreur dans le fichier de cache d'erreur : $NB -> $NNB"
|
|
|
|
echo -n $NNB > $CACHE_FAILED
|
|
|
|
else
|
|
|
|
[ $DEBUG -eq 1 ] && echo "MAX_FAILED atteint : on envoi un mail"
|
|
|
|
echo $error|mail -s "New RoundCude release check : FAILED" $MAIL
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Fichier de cache d'erreur n'existe pas : on l'initialise à 1."
|
|
|
|
echo -n 1 > $CACHE_FAILED
|
|
|
|
fi
|
|
|
|
[ $DEBUG -eq 1 ] && echo "exit 1"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Check failed ($i/$MAX_CHECK) : Sleep $SLEEP_ON_FAILED second before try again ..."
|
|
|
|
sleep $SLEEP_ON_FAILED
|
|
|
|
done
|
2010-05-11 09:48:45 +02:00
|
|
|
|
|
|
|
if [ "$newest" != "$current" ]
|
|
|
|
then
|
2011-02-10 12:02:47 +01:00
|
|
|
|
|
|
|
if [ $DOWNLOAD -eq 1 ]
|
|
|
|
then
|
|
|
|
if [ -d "$DOWNLOAD_DIR" ]
|
|
|
|
then
|
|
|
|
cd "$DOWNLOAD_DIR"
|
2011-02-10 12:09:08 +01:00
|
|
|
DOWNLOAD_FILE="$( pwd )/roundcubemail-$newest.tar.gz"
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Download new release in $DOWNLOAD_FILE"
|
|
|
|
wget -q -O "$DOWNLOAD_FILE" "$DOWNLOAD_URL"
|
2011-02-10 12:02:47 +01:00
|
|
|
else
|
|
|
|
echo "[WARNING] Le dossier de telechargement n'existe pas ($DOWNLOAD_DIR)."
|
|
|
|
fi
|
|
|
|
fi
|
2011-02-10 12:09:08 +01:00
|
|
|
|
|
|
|
tmp=`mktemp`
|
|
|
|
echo "New RoundCude release" > $tmp
|
|
|
|
echo "=====================" >> $tmp
|
|
|
|
echo "Current : $current" >> $tmp
|
|
|
|
echo "Newest : $newest" >> $tmp
|
|
|
|
echo >> $tmp
|
|
|
|
echo "Download URL : $DOWNLOAD_URL" >> $tmp
|
|
|
|
[ -n "$DOWNLOAD_FILE" -a -f "$DOWNLOAD_FILE" ] && echo "Download file : $( pwd )/roundcubemail-$newest.tar.gz" >> $tmp
|
|
|
|
|
2010-05-11 09:48:45 +02:00
|
|
|
|
|
|
|
M=0
|
|
|
|
if [ -f $CACHE ]
|
|
|
|
then
|
2010-10-07 11:03:56 +02:00
|
|
|
if [ "`diff $tmp $CACHE`" != "" -o `find $CACHE -mtime +$SEND_EVERY_NB_DAY | wc -l` -eq 1 ]
|
2010-05-11 09:48:45 +02:00
|
|
|
then
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Cache trop vieux ou modif => On envoi"
|
|
|
|
M=1
|
|
|
|
else
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Pas de modif et cache trop recent : pas d'envoi"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Pas encore de cache => On envoi"
|
|
|
|
M=1
|
|
|
|
fi
|
2010-11-29 18:40:03 +01:00
|
|
|
if [ $DEBUG -eq 1 -a $M -eq 1 ]
|
|
|
|
then
|
|
|
|
echo "Mode debug : Pas d'envoi de mail"
|
|
|
|
fi
|
|
|
|
if [ $M -eq 1 -a $DEBUG -ne 1 ]
|
2010-05-11 09:48:45 +02:00
|
|
|
then
|
|
|
|
cat $tmp > $CACHE
|
2011-02-10 11:41:58 +01:00
|
|
|
if [ -n "$NAME" ]
|
2010-11-29 18:40:03 +01:00
|
|
|
then
|
|
|
|
S="[$NAME] New RoundCude release"
|
|
|
|
else
|
|
|
|
S="New RoundCude release"
|
|
|
|
fi
|
2010-11-29 17:21:55 +01:00
|
|
|
cat $tmp | mail -s "$S : $newest" $MAIL
|
2010-05-11 09:48:45 +02:00
|
|
|
[ $DEBUG -eq 1 ] && echo "Mail envoyé"
|
|
|
|
fi
|
|
|
|
rm -f $tmp
|
|
|
|
else
|
|
|
|
[ $DEBUG -eq 1 ] && echo "Pas de changement de version"
|
|
|
|
fi
|