12b69e6522cae75a09680ed716c339e17150712d
bn8 Import initial

bn8 authored 14 years ago

1) #!/bin/bash
2) 
Benjamin Renard Ajout d'un paramètre NAME p...

Benjamin Renard authored 13 years ago

3) #NAME="My Roundcube"
root Multi check en cas d'erreur...

root authored 13 years ago

4) RC_HOME=/var/www/webmail/public_html
bn8 Import initial

bn8 authored 14 years ago

5) MAIL=root
root Multi check en cas d'erreur...

root authored 13 years ago

6) SEND_EVERY_NB_DAY=7
root Ajout de l'inclusion d'un f...

root authored 13 years ago

7) CACHE=$RC_HOME/../.cache_check_upgrade
root Multi check en cas d'erreur...

root authored 13 years ago

8) CACHE_FAILED=$CACHE.failed
9) MAX_CHECK=10
10) MAX_FAILED=3
11) SLEEP_ON_FAILED=10
12) CHECK_URL=http://www.roundcube.net/download
root Used getopts and added down...

root authored 13 years ago

13) DOWNLOAD_DIR=$RC_HOME/../upstream
bn8 Import initial

bn8 authored 14 years ago

14) 
15) DEBUG=0
root Used getopts and added down...

root authored 13 years ago

16) DOWNLOAD=0
17) 
18) function usage() {
19) 	echo "Usage : $0 [-v] [-d]"
20) 	echo "  -v   Verbose mode"
21) 	echo "  -d   Download new release"
22) 	echo "  -h   Display this help"
23) }
24) 
25) while getopts ":dvh" opt; do
26) 	case $opt in
27) 		v)
28) 			DEBUG=1
29) 		;;
30) 		d)
31) 			DOWNLOAD=1
32) 		;;
33) 		h)
34) 			usage
35) 			exit 0
36) 		;;
37) 		\?)
38)                         echo "Invalid option: -$OPTARG" >&2
39) 			echo
40) 			usage
41) 			exit 1
42) 		;;
43) 		:)
44)                         echo "Option -$OPTARG requires an argument." >&2
45) 			echo
46) 			usage
47)                         exit 1
48)                 ;;
49) 
50) 	esac
51) done
bn8 Import initial

bn8 authored 14 years ago

52) 
root Ajout de l'inclusion d'un f...

root authored 13 years ago

53) [ -f "$0.local" ] && source "$0.local" && [ $DEBUG -eq 1 ] && echo "Import local config file : $0.local"
54) 
root Multi check en cas d'erreur...

root authored 13 years ago

55) current=`egrep "define.*RCMAIL_VERSION" $RC_HOME/program/include/iniset.php|sed "s/define('.*', '\([^']*\)'.*$/\1/"`
root Added regex to remove -rc s...

root authored 13 years ago

56) current="`echo $current|sed 's/-rc$//'`"
bn8 Import initial

bn8 authored 14 years ago

57) [ $DEBUG -eq 1 ] && echo "Current : $current"
58) 
root Multi check en cas d'erreur...

root authored 13 years ago

59) for i in `seq 1 $MAX_CHECK`
60) do
61) 	tmpfile=`mktemp`
62) 	wget -q $CHECK_URL -O $tmpfile
63) 	newest=`cat $tmpfile|grep Stable|sed 's/^.*Stable.*: \(.*\)<\/td>.*$/\1/'`
64) 	if [ -n "$newest" ]
65) 	then
66) 		[ $DEBUG -eq 1 ] && echo "Newest : $newest"
67) 		rm -f $CACHE_FAILED > /dev/null 2>&1
68) 
69) 		DOWNLOAD_URL=`cat $tmpfile|grep "$newest"|grep "tar.gz"|head -1|sed 's/.* href="\([^"]*\)" .*$/\1/'`
70) 		[ $DEBUG -eq 1 ] && echo "Download URL : $DOWNLOAD_URL"
71) 		[ ! -n "$DOWNLOAD_URL" ] && DOWNLOAD_URL="$CHECK_URL" && [ $DEBUG -eq 1 ] && echo "Use check URL as download URL : $DOWNLOAD_URL"
bn8 Import initial

bn8 authored 14 years ago

72) 
root Multi check en cas d'erreur...

root authored 13 years ago

73) 		rm -f $tmpfile > /dev/null 2>&1
74) 		break;
75) 	elif [ $i -eq $MAX_CHECK ]
76) 	then
77) 		error="Site du projet injoignable (ou structure du site modifie !!) => Impossible de recuperer le numero de la version stable actuel."
78) 		[ $DEBUG -eq 1 ] && echo $error
79) 		if [ -f $CACHE_FAILED ]
80) 		then
81) 			NB=`cat $CACHE_FAILED`
82) 			[ $DEBUG -eq 1 ] && echo "Fichier de cache d'erreur existe : $NB echec. Max : $MAX_FAILED"
83) 			if [ $NB -lt $MAX_FAILED ]
84) 			then
85) 				let NNB=NB+1
86) 				[ $DEBUG -eq 1 ] && echo "Augmentation du nb d'erreur dans le fichier de cache d'erreur : $NB -> $NNB"
87) 				echo -n $NNB > $CACHE_FAILED
88) 			else
89) 				[ $DEBUG -eq 1 ] && echo "MAX_FAILED atteint : on envoi un mail"
90) 				echo $error|mail -s "New RoundCude release check : FAILED" $MAIL
91) 			fi
92) 		else
93) 			[ $DEBUG -eq 1 ] && echo "Fichier de cache d'erreur n'existe pas : on l'initialise à 1."
94) 			echo -n 1 > $CACHE_FAILED
95) 		fi
96) 		[ $DEBUG -eq 1 ] && echo "exit 1"
97) 		exit 1
98) 	fi
99) 	[ $DEBUG -eq 1 ] && echo "Check failed ($i/$MAX_CHECK) : Sleep $SLEEP_ON_FAILED second before try again ..."
100) 	sleep $SLEEP_ON_FAILED
101) done
bn8 Import initial

bn8 authored 14 years ago

102) 
103) if [ "$newest" != "$current" ]
104) then
105) 	tmp=`mktemp`
106) 	echo "New RoundCude release" > $tmp
107) 	echo "=====================" >> $tmp
108) 	echo "Current : $current" >> $tmp
109) 	echo "Newest : $newest" >> $tmp
root Multi check en cas d'erreur...

root authored 13 years ago

110) 	echo >> $tmp
111) 	echo "Download URL : $DOWNLOAD_URL" >> $tmp
root Used getopts and added down...

root authored 13 years ago

112) 
113) 	if [ $DOWNLOAD -eq 1 ]
114) 	then
115) 		if [ -d "$DOWNLOAD_DIR" ]
116) 		then
117) 			cd "$DOWNLOAD_DIR"
118) 			[ $DEBUG -eq 1 ] && echo "Download new release in $( pwd )/roundcubemail-$newest.tar.gz"
119) 			wget -q -O "roundcubemail-$newest.tar.gz" "$DOWNLOAD_URL"
120) 			echo "Download file : $( pwd )/roundcubemail-$newest.tar.gz" >> $tmp
121) 		else
122) 			echo "[WARNING] Le dossier de telechargement n'existe pas ($DOWNLOAD_DIR)."
123) 		fi
124) 	fi
bn8 Import initial

bn8 authored 14 years ago

125) 	
126) 	M=0
127) 	if [ -f $CACHE ]
128) 	then
root Multi check en cas d'erreur...

root authored 13 years ago

129) 		if [ "`diff $tmp $CACHE`" != "" -o `find $CACHE -mtime +$SEND_EVERY_NB_DAY | wc -l` -eq 1 ]
bn8 Import initial

bn8 authored 14 years ago

130) 		then
131) 			[ $DEBUG -eq 1 ] && echo "Cache trop vieux ou modif => On envoi"
132) 			M=1
133) 		else
134) 			[ $DEBUG -eq 1 ] && echo "Pas de modif et cache trop recent : pas d'envoi"
135) 		fi
136) 	else
137) 		[ $DEBUG -eq 1 ] && echo "Pas encore de cache => On envoi"
138) 		M=1
139) 	fi
Benjamin Renard Desactivation de l'envoi de...

Benjamin Renard authored 13 years ago

140) 	if [ $DEBUG -eq 1 -a $M -eq 1 ]
141) 	then
142) 		echo "Mode debug : Pas d'envoi de mail"
143) 	fi
144) 	if [ $M -eq 1 -a $DEBUG -ne 1 ]
bn8 Import initial

bn8 authored 14 years ago

145) 	then
146) 		cat $tmp > $CACHE
root Fixed bug in NAME test

root authored 13 years ago

147) 		if [ -n "$NAME" ]
Benjamin Renard Desactivation de l'envoi de...

Benjamin Renard authored 13 years ago

148) 		then
149) 			S="[$NAME] New RoundCude release"
150) 		else
151) 			S="New RoundCude release"
152) 		fi
Benjamin Renard Ajout d'un paramètre NAME p...

Benjamin Renard authored 13 years ago

153) 		cat $tmp | mail -s "$S : $newest" $MAIL