root commited on 2010-10-07 09:03:56
              Showing 1 changed files, with 52 additions and 4 deletions.
            
| ... | ... | 
                      @@ -1,18 +1,64 @@  | 
                  
| 1 | 1 | 
                        #!/bin/bash  | 
                    
| 2 | 2 | 
                         | 
                    
| 3 | 
                        +RC_HOME=/var/www/webmail/public_html  | 
                    |
| 3 | 4 | 
                        MAIL=root  | 
                    
| 4 | 
                        -TIME=7  | 
                    |
| 5 | 
                        +SEND_EVERY_NB_DAY=7  | 
                    |
| 5 | 6 | 
                        CACHE=/var/www/webmail/.cache_check_upgrade  | 
                    
| 7 | 
                        +CACHE_FAILED=$CACHE.failed  | 
                    |
| 8 | 
                        +MAX_CHECK=10  | 
                    |
| 9 | 
                        +MAX_FAILED=3  | 
                    |
| 10 | 
                        +SLEEP_ON_FAILED=10  | 
                    |
| 11 | 
                        +CHECK_URL=http://www.roundcube.net/download  | 
                    |
| 6 | 12 | 
                         | 
                    
| 7 | 13 | 
                        DEBUG=0  | 
                    
| 8 | 14 | 
                        [ "$1" == "-v" ] && DEBUG=1  | 
                    
| 9 | 15 | 
                         | 
                    
| 10 | 
                        -current=`egrep "define.*RCMAIL_VERSION" /var/www/webmail/public_html/program/include/iniset.php|sed "s/define('.*', '\([^']*\)'.*$/\1/"`
                       | 
                    |
| 16 | 
                        +current=`egrep "define.*RCMAIL_VERSION" $RC_HOME/program/include/iniset.php|sed "s/define('.*', '\([^']*\)'.*$/\1/"`
                       | 
                    |
| 11 | 17 | 
                        [ $DEBUG -eq 1 ] && echo "Current : $current"  | 
                    
| 12 | 18 | 
                         | 
                    
| 13 | 
                        -newest=`wget -q http://www.roundcube.net/download -O - |grep Stable|sed 's/^.*Stable.*: \(.*\)<\/td>.*$/\1/'`  | 
                    |
| 19 | 
                        +for i in `seq 1 $MAX_CHECK`  | 
                    |
| 20 | 
                        +do  | 
                    |
| 21 | 
                        + tmpfile=`mktemp`  | 
                    |
| 22 | 
                        + wget -q $CHECK_URL -O $tmpfile  | 
                    |
| 23 | 
                        + newest=`cat $tmpfile|grep Stable|sed 's/^.*Stable.*: \(.*\)<\/td>.*$/\1/'`  | 
                    |
| 24 | 
                        + if [ -n "$newest" ]  | 
                    |
| 25 | 
                        + then  | 
                    |
| 14 | 26 | 
                        [ $DEBUG -eq 1 ] && echo "Newest : $newest"  | 
                    
| 27 | 
                        + rm -f $CACHE_FAILED > /dev/null 2>&1  | 
                    |
| 28 | 
                        +  | 
                    |
| 29 | 
                        + DOWNLOAD_URL=`cat $tmpfile|grep "$newest"|grep "tar.gz"|head -1|sed 's/.* href="\([^"]*\)" .*$/\1/'`  | 
                    |
| 30 | 
                        + [ $DEBUG -eq 1 ] && echo "Download URL : $DOWNLOAD_URL"  | 
                    |
| 31 | 
                        + [ ! -n "$DOWNLOAD_URL" ] && DOWNLOAD_URL="$CHECK_URL" && [ $DEBUG -eq 1 ] && echo "Use check URL as download URL : $DOWNLOAD_URL"  | 
                    |
| 15 | 32 | 
                         | 
                    
| 33 | 
                        + rm -f $tmpfile > /dev/null 2>&1  | 
                    |
| 34 | 
                        + break;  | 
                    |
| 35 | 
                        + elif [ $i -eq $MAX_CHECK ]  | 
                    |
| 36 | 
                        + then  | 
                    |
| 37 | 
                        + error="Site du projet injoignable (ou structure du site modifie !!) => Impossible de recuperer le numero de la version stable actuel."  | 
                    |
| 38 | 
                        + [ $DEBUG -eq 1 ] && echo $error  | 
                    |
| 39 | 
                        + if [ -f $CACHE_FAILED ]  | 
                    |
| 40 | 
                        + then  | 
                    |
| 41 | 
                        + NB=`cat $CACHE_FAILED`  | 
                    |
| 42 | 
                        + [ $DEBUG -eq 1 ] && echo "Fichier de cache d'erreur existe : $NB echec. Max : $MAX_FAILED"  | 
                    |
| 43 | 
                        + if [ $NB -lt $MAX_FAILED ]  | 
                    |
| 44 | 
                        + then  | 
                    |
| 45 | 
                        + let NNB=NB+1  | 
                    |
| 46 | 
                        + [ $DEBUG -eq 1 ] && echo "Augmentation du nb d'erreur dans le fichier de cache d'erreur : $NB -> $NNB"  | 
                    |
| 47 | 
                        + echo -n $NNB > $CACHE_FAILED  | 
                    |
| 48 | 
                        + else  | 
                    |
| 49 | 
                        + [ $DEBUG -eq 1 ] && echo "MAX_FAILED atteint : on envoi un mail"  | 
                    |
| 50 | 
                        + echo $error|mail -s "New RoundCude release check : FAILED" $MAIL  | 
                    |
| 51 | 
                        + fi  | 
                    |
| 52 | 
                        + else  | 
                    |
| 53 | 
                        + [ $DEBUG -eq 1 ] && echo "Fichier de cache d'erreur n'existe pas : on l'initialise à 1."  | 
                    |
| 54 | 
                        + echo -n 1 > $CACHE_FAILED  | 
                    |
| 55 | 
                        + fi  | 
                    |
| 56 | 
                        + [ $DEBUG -eq 1 ] && echo "exit 1"  | 
                    |
| 57 | 
                        + exit 1  | 
                    |
| 58 | 
                        + fi  | 
                    |
| 59 | 
                        + [ $DEBUG -eq 1 ] && echo "Check failed ($i/$MAX_CHECK) : Sleep $SLEEP_ON_FAILED second before try again ..."  | 
                    |
| 60 | 
                        + sleep $SLEEP_ON_FAILED  | 
                    |
| 61 | 
                        +done  | 
                    |
| 16 | 62 | 
                         | 
                    
| 17 | 63 | 
                        if [ "$newest" != "$current" ]  | 
                    
| 18 | 64 | 
                        then  | 
                    
| ... | ... | 
                      @@ -21,11 +67,13 @@ then  | 
                  
| 21 | 67 | 
                        echo "=====================" >> $tmp  | 
                    
| 22 | 68 | 
                        echo "Current : $current" >> $tmp  | 
                    
| 23 | 69 | 
                        echo "Newest : $newest" >> $tmp  | 
                    
| 70 | 
                        + echo >> $tmp  | 
                    |
| 71 | 
                        + echo "Download URL : $DOWNLOAD_URL" >> $tmp  | 
                    |
| 24 | 72 | 
                         | 
                    
| 25 | 73 | 
                        M=0  | 
                    
| 26 | 74 | 
                        if [ -f $CACHE ]  | 
                    
| 27 | 75 | 
                        then  | 
                    
| 28 | 
                        - if [ "`diff $tmp $CACHE`" != "" -o `find $CACHE -mtime +$TIME | wc -l` -eq 1 ]  | 
                    |
| 76 | 
                        + if [ "`diff $tmp $CACHE`" != "" -o `find $CACHE -mtime +$SEND_EVERY_NB_DAY | wc -l` -eq 1 ]  | 
                    |
| 29 | 77 | 
                        then  | 
                    
| 30 | 78 | 
                        [ $DEBUG -eq 1 ] && echo "Cache trop vieux ou modif => On envoi"  | 
                    
| 31 | 79 | 
                        M=1  | 
                    
| 32 | 80 |