#!/bin/bash #NAME="My Roundcube" RC_HOME=/var/www/webmail/public_html MAIL=root SEND_EVERY_NB_DAY=7 CACHE=$RC_HOME/../.cache_check_upgrade CACHE_FAILED=$CACHE.failed MAX_CHECK=10 MAX_FAILED=3 SLEEP_ON_FAILED=10 CHECK_URL=http://www.roundcube.net/download DEBUG=0 [ "$1" == "-v" ] && DEBUG=1 [ -f "$0.local" ] && source "$0.local" && [ $DEBUG -eq 1 ] && echo "Import local config file : $0.local" current=`egrep "define.*RCMAIL_VERSION" $RC_HOME/program/include/iniset.php|sed "s/define('.*', '\([^']*\)'.*$/\1/"` current="`echo $current|sed 's/-rc$//'`" [ $DEBUG -eq 1 ] && echo "Current : $current" 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" 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 if [ "$newest" != "$current" ] then 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 M=0 if [ -f $CACHE ] then if [ "`diff $tmp $CACHE`" != "" -o `find $CACHE -mtime +$SEND_EVERY_NB_DAY | wc -l` -eq 1 ] 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 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 ] then cat $tmp > $CACHE if [ -n "$NAME" ] then S="[$NAME] New RoundCude release" else S="New RoundCude release" fi cat $tmp | mail -s "$S : $newest" $MAIL [ $DEBUG -eq 1 ] && echo "Mail envoyé" fi rm -f $tmp else [ $DEBUG -eq 1 ] && echo "Pas de changement de version" fi