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 |