| 672 | richard | 1 | #/bin/bash
 | 
        
           | 1015 | richard | 2 |   | 
        
           | 63 | franck | 3 | # $Id: alcasar-bl.sh 1827 2016-04-19 09:47:29Z raphael.pion $
 | 
        
           |  |  | 4 |   | 
        
           | 672 | richard | 5 | # alcasar-bl.sh
 | 
        
           |  |  | 6 | # by Franck BOUIJOUX and Richard REY
 | 
        
           |  |  | 7 | # This script is distributed under the Gnu General Public License (GPL)
 | 
        
           | 1 | root | 8 |   | 
        
           | 672 | richard | 9 | # Gestion de la BL pour le filtrage de domaine (via dnsmasq) et d'URL (via Dansguardian)
 | 
        
           |  |  | 10 | # Manage the BL for DnsBlackHole (dnsmasq) and URL filtering (Dansguardian)
 | 
        
           |  |  | 11 |   | 
        
           | 878 | richard | 12 | DIR_CONF="/usr/local/etc"
 | 
        
           |  |  | 13 | CONF_FILE="$DIR_CONF/alcasar.conf"
 | 
        
           | 854 | richard | 14 | private_ip_mask=`grep PRIVATE_IP= $CONF_FILE|cut -d"=" -f2`
 | 
        
           |  |  | 15 | private_ip_mask=${private_ip_mask:=192.168.182.1/24}
 | 
        
           |  |  | 16 | PRIVATE_IP=`echo $private_ip_mask | cut -d"/" -f1`			# ALCASAR LAN IP address
 | 
        
           | 308 | richard | 17 | DIR_tmp="/tmp/blacklists"
 | 
        
           | 1015 | richard | 18 | FILE_tmp="/tmp/filesfilter.txt"
 | 
        
           |  |  | 19 | FILE_ip_tmp="/tmp/filesipfilter.txt"
 | 
        
           | 316 | richard | 20 | DIR_DG="/etc/dansguardian/lists"
 | 
        
           |  |  | 21 | DIR_DG_BL="$DIR_DG/blacklists"
 | 
        
           | 1015 | richard | 22 | BL_CATEGORIES="$DIR_CONF/alcasar-bl-categories"				# list of names of the 	BL categories
 | 
        
           |  |  | 23 | WL_CATEGORIES="$DIR_CONF/alcasar-wl-categories"				#'	'		WL	'
 | 
        
           |  |  | 24 | BL_CATEGORIES_ENABLED="$DIR_CONF/alcasar-bl-categories-enabled"		#	'	'	BL enabled categories
 | 
        
           |  |  | 25 | WL_CATEGORIES_ENABLED="$DIR_CONF/alcasar-wl-categories-enabled"		#	'	'	WL enabled categories
 | 
        
           | 1377 | richard | 26 | OSSI_DOMAINS_WL="$DIR_DG/blacklists/ossi/domains_wl"			# Domain names for the ossi category
 | 
        
           | 1015 | richard | 27 | DIR_SHARE="/usr/local/share"
 | 
        
           |  |  | 28 | DIR_DNS_BL="$DIR_SHARE/dnsmasq-bl"					# all the BL in the DNSMASQ format
 | 
        
           |  |  | 29 | DIR_DNS_WL="$DIR_SHARE/dnsmasq-wl"					# all the WL	'	'	'
 | 
        
           |  |  | 30 | DIR_IP_BL="$DIR_SHARE/iptables-bl"					# all the IP addresses of the BL 
 | 
        
           | 1366 | richard | 31 | DIR_DNS_BL_ENABLED="$DIR_SHARE/dnsmasq-bl-enabled"			# symbolic link to the domains BL (only enabled categories)
 | 
        
           | 1015 | richard | 32 | DIR_DNS_WL_ENABLED="$DIR_SHARE/dnsmasq-wl-enabled"			#	'	'	'	WL	'	'	'
 | 
        
           | 1377 | richard | 33 | DIR_IP_BL_ENABLED="$DIR_SHARE/iptables-bl-enabled"			#	'	'	ip BL (only enabled categories)
 | 
        
           | 1365 | richard | 34 | DNSMASQ_BL_CONF="/etc/dnsmasq-blacklist.conf"				# conf file of dnsmasq-blacklist
 | 
        
           |  |  | 35 | DNS1=`grep "DNS1" $CONF_FILE | cut -d '=' -f 2` 			# server DNS1 (for WL domain names)
 | 
        
           | 878 | richard | 36 | BL_SERVER="dsi.ut-capitole.fr"
 | 
        
           | 1 | root | 37 | SED="/bin/sed -i"
 | 
        
           | 637 | richard | 38 |   | 
        
           | 1042 | richard | 39 | # enable/disable the BL & WL categories
 | 
        
           | 308 | richard | 40 | function cat_choice (){
 | 
        
           | 1393 | richard | 41 | 	# saving ossi category
 | 
        
           | 1339 | richard | 42 | 	mkdir $DIR_tmp
 | 
        
           | 1393 | richard | 43 | 	cp $DIR_IP_BL/ossi $DIR_tmp
 | 
        
           |  |  | 44 | 	if [ -d $DIR_IP_BL_ENABLED ]
 | 
        
           | 1386 | richard | 45 | 	then
 | 
        
           | 1393 | richard | 46 | 		for file in `ls -1 $DIR_IP_BL_ENABLED | grep -v "^ossi-*"`
 | 
        
           |  |  | 47 | 		do
 | 
        
           |  |  | 48 | 			rm -f $DIR_IP_BL_ENABLED/$file
 | 
        
           |  |  | 49 | 		done
 | 
        
           |  |  | 50 | 	else
 | 
        
           |  |  | 51 | 		mkdir $DIR_IP_BL_ENABLED
 | 
        
           |  |  | 52 | 		chown apache $DIR_IP_BL_ENABLED
 | 
        
           | 1386 | richard | 53 | 	fi
 | 
        
           | 1416 | richard | 54 | 	if [ -d $DIR_DNS_BL_ENABLED ]
 | 
        
           |  |  | 55 | 	then
 | 
        
           |  |  | 56 | 		for file in `ls -1 $DIR_DNS_BL_ENABLED | grep -v "^ossi-*"`
 | 
        
           |  |  | 57 | 		do
 | 
        
           |  |  | 58 | 			rm -f $DIR_DNS_BL_ENABLED/$file
 | 
        
           |  |  | 59 | 		done
 | 
        
           |  |  | 60 | 	else
 | 
        
           |  |  | 61 | 		mkdir $DIR_DNS_BL_ENABLED
 | 
        
           |  |  | 62 | 		chown apache $DIR_DNS_BL_ENABLED
 | 
        
           |  |  | 63 | 	fi
 | 
        
           |  |  | 64 | 	rm -rf $DIR_DNS_WL_ENABLED # cleaning for dnsmasq and iptables
 | 
        
           | 1015 | richard | 65 | 	$SED "/\.Include/d" $DIR_DG/bannedsitelist $DIR_DG/bannedurllist # cleaning for DG
 | 
        
           | 1042 | richard | 66 | 	$SED "s?^[^#]?#&?g" $BL_CATEGORIES $WL_CATEGORIES # cleaning BL & WL categories file (comment all lines)
 | 
        
           | 1416 | richard | 67 | 	mkdir $DIR_DNS_WL_ENABLED
 | 
        
           | 1015 | richard | 68 | 	# process the file $BL_CATEGORIES with the choice of categories 
 | 
        
           |  |  | 69 | 	for ENABLE_CATEGORIE in `cat $BL_CATEGORIES_ENABLED` 
 | 
        
           | 313 | richard | 70 | 	do
 | 
        
           | 1015 | richard | 71 | 		$SED "/\/$ENABLE_CATEGORIE$/d" $BL_CATEGORIES 
 | 
        
           | 314 | richard | 72 | 		$SED "1i\/etc\/dansguardian\/lists\/blacklists\/$ENABLE_CATEGORIE" $BL_CATEGORIES
 | 
        
           | 1395 | richard | 73 | 		ln -sf $DIR_DNS_BL/$ENABLE_CATEGORIE.conf $DIR_DNS_BL_ENABLED/$ENABLE_CATEGORIE
 | 
        
           |  |  | 74 | 		ln -sf $DIR_IP_BL/$ENABLE_CATEGORIE $DIR_IP_BL_ENABLED/$ENABLE_CATEGORIE
 | 
        
           | 1293 | richard | 75 | 		# echo ".Include<$DIR_DG_BL/$ENABLE_CATEGORIE/domains>" >> $DIR_DG/bannedsitelist  # Blacklisted domains are managed by dnsmasq
 | 
        
           | 648 | richard | 76 | 		echo ".Include<$DIR_DG_BL/$ENABLE_CATEGORIE/urls>" >> $DIR_DG/bannedurllist
 | 
        
           | 313 | richard | 77 | 	done
 | 
        
           | 878 | richard | 78 | 	sort +0.0 -0.2 $BL_CATEGORIES -o $FILE_tmp
 | 
        
           | 313 | richard | 79 | 	mv $FILE_tmp $BL_CATEGORIES
 | 
        
           | 1042 | richard | 80 | 	# process the file $WL_CATEGORIES with the choice of categories 
 | 
        
           |  |  | 81 | 	for ENABLE_CATEGORIE in `cat $WL_CATEGORIES_ENABLED` 
 | 
        
           |  |  | 82 | 	do
 | 
        
           |  |  | 83 | 		$SED "/\/$ENABLE_CATEGORIE$/d" $WL_CATEGORIES 
 | 
        
           |  |  | 84 | 		$SED "1i\/etc\/dansguardian\/lists\/blacklists\/$ENABLE_CATEGORIE" $WL_CATEGORIES
 | 
        
           | 1395 | richard | 85 | 		ln -sf $DIR_DNS_WL/$ENABLE_CATEGORIE.conf $DIR_DNS_WL_ENABLED/$ENABLE_CATEGORIE
 | 
        
           | 1042 | richard | 86 | 	done
 | 
        
           |  |  | 87 | 	sort +0.0 -0.2 $WL_CATEGORIES -o $FILE_tmp
 | 
        
           |  |  | 88 | 	mv $FILE_tmp $WL_CATEGORIES
 | 
        
           | 1339 | richard | 89 | 	# restoring ip files and ossi category
 | 
        
           |  |  | 90 | 	mv $DIR_tmp/ossi $DIR_IP_BL
 | 
        
           | 1377 | richard | 91 | 	chown apache $DIR_IP_BL/ossi
 | 
        
           | 1339 | richard | 92 | 	rm -rf $DIR_tmp
 | 
        
           | 308 | richard | 93 | }
 | 
        
           | 1482 | richard | 94 |   | 
        
           | 1390 | richard | 95 | usage="Usage: alcasar-bl.sh { -cat_choice or --cat_choice } | { -download or --download } | { -adapt or --adapt } | { -reload or --reload }"
 | 
        
           | 1 | root | 96 | nb_args=$#
 | 
        
           |  |  | 97 | args=$1
 | 
        
           |  |  | 98 | if [ $nb_args -eq 0 ]
 | 
        
           |  |  | 99 | then
 | 
        
           | 1369 | richard | 100 | 	  args="-h"
 | 
        
           | 1 | root | 101 | fi
 | 
        
           |  |  | 102 | case $args in
 | 
        
           |  |  | 103 | 	-\? | -h* | --h*)
 | 
        
           |  |  | 104 | 		echo "$usage"
 | 
        
           |  |  | 105 | 		exit 0
 | 
        
           |  |  | 106 | 		;;
 | 
        
           | 1369 | richard | 107 | 	# Retrieve Toulouse BL
 | 
        
           | 386 | franck | 108 | 	-download | --download)
 | 
        
           | 1 | root | 109 | 		rm -rf /tmp/con_ok.html
 | 
        
           |  |  | 110 | 		`/usr/bin/curl $BL_SERVER -# -o /tmp/con_ok.html`
 | 
        
           |  |  | 111 | 		if [ ! -e /tmp/con_ok.html ]
 | 
        
           |  |  | 112 | 		then
 | 
        
           |  |  | 113 | 			echo "Erreur : le serveur de blacklist ($BL_SERVER) n'est pas joignable"
 | 
        
           |  |  | 114 | 		else 
 | 
        
           | 878 | richard | 115 | 			rm -rf /tmp/con_ok.html $DIR_tmp
 | 
        
           |  |  | 116 | 			mkdir $DIR_tmp
 | 
        
           | 885 | richard | 117 | 			wget -P $DIR_tmp http://$BL_SERVER/blacklists/download/blacklists.tar.gz
 | 
        
           | 878 | richard | 118 | 			md5sum $DIR_tmp/blacklists.tar.gz | cut -d" " -f1 > $DIR_tmp/md5sum
 | 
        
           | 885 | richard | 119 | 			chown -R apache:apache $DIR_tmp
 | 
        
           | 878 | richard | 120 | 		fi
 | 
        
           |  |  | 121 | 		;;		
 | 
        
           | 1488 | richard | 122 | 	# enable/disable categories (used only during the alcasar install process)
 | 
        
           |  |  | 123 | 	-cat_choice | --cat_choice)
 | 
        
           |  |  | 124 | 		cat_choice
 | 
        
           |  |  | 125 | 		;;
 | 
        
           | 1293 | richard | 126 | 	# Adapt Toulouse BL to ALCASAR architecture (dnsmasq + DG + iptables)
 | 
        
           | 878 | richard | 127 | 	-adapt | --adapt)
 | 
        
           | 1365 | richard | 128 | 		echo -n "Toulouse BlackList migration process. Please wait : "
 | 
        
           | 1371 | richard | 129 | 		if [ ! -e $DIR_SHARE/ossi-ip-wl ]
 | 
        
           | 1365 | richard | 130 | 		then
 | 
        
           | 1369 | richard | 131 | 			touch $DIR_SHARE/ossi-ip-wl
 | 
        
           |  |  | 132 | 			chown apache $DIR_SHARE/ossi-ip-wl
 | 
        
           | 1365 | richard | 133 | 		fi
 | 
        
           | 1371 | richard | 134 | 		if [ -f $DIR_tmp/blacklists.tar.gz ] # when downloading the last version of the BL
 | 
        
           | 878 | richard | 135 | 		then
 | 
        
           | 1366 | richard | 136 | 			[ -d $DIR_DG_BL/ossi ] && mv $DIR_DG_BL/ossi $DIR_tmp
 | 
        
           | 1369 | richard | 137 | 			[ -e $DIR_IP_BL/ossi ] && mv $DIR_IP_BL/ossi $DIR_tmp/ossi-ip-bl
 | 
        
           |  |  | 138 | 			rm -rf $DIR_DG_BL $DIR_IP_BL
 | 
        
           |  |  | 139 | 			mkdir $DIR_DG_BL $DIR_IP_BL
 | 
        
           | 878 | richard | 140 | 			tar zxf $DIR_tmp/blacklists.tar.gz --directory=$DIR_DG/
 | 
        
           |  |  | 141 | 			[ -d $DIR_tmp/ossi ] && mv -f $DIR_tmp/ossi $DIR_DG_BL/
 | 
        
           | 685 | richard | 142 | 		fi
 | 
        
           | 1042 | richard | 143 | 		rm -f $BL_CATEGORIES $WL_CATEGORIES $WL_CATEGORIES_ENABLED
 | 
        
           | 1015 | richard | 144 | 		rm -rf $DIR_DNS_BL $DIR_DNS_WL $DIR_IP_BL
 | 
        
           | 1042 | richard | 145 | 		touch $BL_CATEGORIES $WL_CATEGORIES $WL_CATEGORIES_ENABLED
 | 
        
           | 1015 | richard | 146 | 		mkdir $DIR_DNS_BL $DIR_DNS_WL $DIR_IP_BL
 | 
        
           | 1042 | richard | 147 | 		chown -R dansguardian:apache $DIR_DG $BL_CATEGORIES $WL_CATEGORIES $BL_CATEGORIES_ENABLED $WL_CATEGORIES_ENABLED
 | 
        
           |  |  | 148 | 		chmod -R g+w $DIR_DG $BL_CATEGORIES $WL_CATEGORIES $BL_CATEGORIES_ENABLED $WL_CATEGORIES_ENABLED
 | 
        
           | 1015 | richard | 149 | 		find $DIR_DG_BL/ -type f -name domains > $FILE_tmp # retrieve directory name where a domain file exist
 | 
        
           |  |  | 150 | 		$SED "s?\/domains??g" $FILE_tmp # remove "/domains" suffix
 | 
        
           | 1042 | richard | 151 | 		for dir_categorie in `cat $FILE_tmp` # create the blacklist and the whitelist files
 | 
        
           | 878 | richard | 152 | 		do
 | 
        
           | 1015 | richard | 153 | 			categorie=`echo $dir_categorie|cut -d "/" -f6`
 | 
        
           |  |  | 154 | 			categorie_type=`grep -A1 ^NAME:[$' '$'\t']*$categorie $DIR_DG_BL/global_usage | grep ^DEFAULT_TYPE | cut -d":" -f2 | tr -d " \t"`
 | 
        
           |  |  | 155 | 			if [ "$categorie_type" == "white" ]
 | 
        
           | 878 | richard | 156 | 			then
 | 
        
           | 1015 | richard | 157 | 				echo "$dir_categorie" >> $WL_CATEGORIES 
 | 
        
           | 1042 | richard | 158 | 				echo `basename $dir_categorie` >> $WL_CATEGORIES_ENABLED  # by default all WL are enabled 
 | 
        
           | 878 | richard | 159 | 			fi
 | 
        
           | 1811 | richard | 160 | 			echo "$dir_categorie" >> $BL_CATEGORIES # By default all categories are in BL
 | 
        
           | 878 | richard | 161 | 		done
 | 
        
           |  |  | 162 | 		rm -f $FILE_tmp
 | 
        
           | 1057 | richard | 163 | 		# Verify that the enabled categories are effectively in the BL (need after an update of the BL)
 | 
        
           |  |  | 164 | 		for ENABLE_CATEGORIE in `cat $BL_CATEGORIES_ENABLED` 
 | 
        
           |  |  | 165 | 		do
 | 
        
           |  |  | 166 | 			ok=`grep /$ENABLE_CATEGORIE$ $BL_CATEGORIES|wc -l`
 | 
        
           |  |  | 167 | 			if [ $ok != "1" ] 
 | 
        
           |  |  | 168 | 			then
 | 
        
           |  |  | 169 | 				$SED "/^$ENABLE_CATEGORIE$/d" $BL_CATEGORIES_ENABLED
 | 
        
           |  |  | 170 | 			fi
 | 
        
           |  |  | 171 | 		done
 | 
        
           | 1293 | richard | 172 | 		# Creation of DNSMASQ and Iptables BL and WL
 | 
        
           | 1015 | richard | 173 | 		for LIST in $BL_CATEGORIES $WL_CATEGORIES	# for each list (bl and wl)
 | 
        
           | 854 | richard | 174 | 		do
 | 
        
           | 1015 | richard | 175 | 			for PATH_FILE in `cat $LIST` # for each category
 | 
        
           |  |  | 176 | 			do
 | 
        
           |  |  | 177 | 				DOMAINE=`basename $PATH_FILE`
 | 
        
           |  |  | 178 | 				echo -n "$DOMAINE, "
 | 
        
           |  |  | 179 | 		  		if [ ! -f $PATH_FILE/urls ] # create 'urls' file if it doesn't exist
 | 
        
           |  |  | 180 | 				then
 | 
        
           |  |  | 181 | 					touch $PATH_FILE/urls
 | 
        
           |  |  | 182 | 					chown dansguardian:apache $PATH_FILE/urls
 | 
        
           |  |  | 183 | 				fi
 | 
        
           |  |  | 184 | 				$SED "s/\.\{2,10\}/\./g" $PATH_FILE/domains $PATH_FILE/urls # correct some syntax errors
 | 
        
           | 1383 | richard | 185 | 				# extract ip addresses for iptables
 | 
        
           | 1332 | richard | 186 | 				awk '/^([0-9]{1,3}\.){3}[0-9]{1,3}$/{print "add blacklist_ip_blocked " $0}' $PATH_FILE/domains > $FILE_ip_tmp
 | 
        
           | 1015 | richard | 187 | 				# for dnsmask, remove IP addesses, accented characters and commented lines.
 | 
        
           | 1293 | richard | 188 | 				egrep  -v "^([0-9]{1,3}\.){3}[0-9]{1,3}$" $PATH_FILE/domains > $FILE_tmp
 | 
        
           | 1015 | richard | 189 | 				$SED "/[äâëêïîöôüû]/d" $FILE_tmp
 | 
        
           |  |  | 190 | 				$SED "/^#.*/d" $FILE_tmp
 | 
        
           |  |  | 191 | 				if [ "$LIST" == "$BL_CATEGORIES" ]
 | 
        
           |  |  | 192 | 				then
 | 
        
           | 1365 | richard | 193 | 					# adapt to the dnsmasq syntax for the blacklist
 | 
        
           |  |  | 194 | 					$SED "s?.*?address=/&/$PRIVATE_IP?g" $FILE_tmp 
 | 
        
           | 1015 | richard | 195 | 					mv $FILE_tmp $DIR_DNS_BL/$DOMAINE.conf
 | 
        
           |  |  | 196 | 					mv $FILE_ip_tmp $DIR_IP_BL/$DOMAINE
 | 
        
           |  |  | 197 | 				else
 | 
        
           | 1365 | richard | 198 | 					# adapt to the dnsmasq syntax for the whitelist
 | 
        
           |  |  | 199 | 					$SED "s?.*?server=/&/$DNS1?g" $FILE_tmp 
 | 
        
           | 1015 | richard | 200 | 					mv $FILE_tmp $DIR_DNS_WL/$DOMAINE.conf
 | 
        
           |  |  | 201 | 				fi
 | 
        
           |  |  | 202 | 			done
 | 
        
           | 854 | richard | 203 | 		done
 | 
        
           | 1015 | richard | 204 | 		rm -f $FILE_tmp $FILE_ip_tmp
 | 
        
           | 1383 | richard | 205 | 		# Restoring ossi file of BL IP
 | 
        
           | 1369 | richard | 206 | 		[ -e $DIR_tmp/ossi-ip-bl ] && mv $DIR_tmp/ossi-ip-bl $DIR_IP_BL/ossi
 | 
        
           | 1339 | richard | 207 | 		rm -rf $DIR_tmp
 | 
        
           | 854 | richard | 208 | 		echo
 | 
        
           | 654 | richard | 209 | 		;;
 | 
        
           | 1015 | richard | 210 | 	# reload when categories are changed 
 | 
        
           | 386 | franck | 211 | 	-reload | --reload)
 | 
        
           | 1015 | richard | 212 | 		# for DG
 | 
        
           | 316 | richard | 213 | 		chown -R dansguardian:apache $DIR_DG_BL/ossi
 | 
        
           |  |  | 214 | 		chmod -R g+w $DIR_DG_BL/ossi
 | 
        
           | 311 | richard | 215 | 		cat_choice
 | 
        
           | 1042 | richard | 216 | 		#  for dnsmasq (rehabited domain names)
 | 
        
           | 316 | richard | 217 | 		if [ `wc -w $DIR_DG/exceptionsitelist|cut -d " " -f1` != "0" ]
 | 
        
           | 311 | richard | 218 | 		then
 | 
        
           | 316 | richard | 219 | 			for i in `cat $DIR_DG/exceptionsitelist`
 | 
        
           | 311 | richard | 220 | 			do
 | 
        
           | 1015 | richard | 221 | 				$SED "/$i/d" $DIR_DNS_BL/*
 | 
        
           | 311 | richard | 222 | 			done
 | 
        
           |  |  | 223 | 		fi
 | 
        
           | 1015 | richard | 224 | 		cp -f $DIR_DG_BL/ossi/domains $DIR_DNS_BL/ossi.conf
 | 
        
           |  |  | 225 | 		$SED "s?.*?address=/&/$PRIVATE_IP?g" $DIR_DNS_BL/ossi.conf
 | 
        
           | 1810 | raphael.pi | 226 | 		cp -f $OSSI_DOMAINS_WL $DIR_DNS_WL/ossi.conf
 | 
        
           |  |  | 227 | 		$SED "s?.*?server=/&/$DNS1?g" $DIR_DNS_WL/ossi.conf
 | 
        
           |  |  | 228 | 		ln -s $DIR_DNS_WL/ossi.conf $DIR_DNS_WL_ENABLED/ossi
 | 
        
           |  |  | 229 |   | 
        
           | 1574 | richard | 230 | 		/usr/bin/systemctl restart dnsmasq-blacklist
 | 
        
           |  |  | 231 | 		/usr/bin/systemctl restart dnsmasq-whitelist
 | 
        
           | 1488 | richard | 232 | 		/usr/local/bin/alcasar-iptables.sh
 | 
        
           | 503 | richard | 233 | 		;;
 | 
        
           | 1 | root | 234 | 	*)
 | 
        
           |  |  | 235 | 		echo "Argument inconnu :$1";
 | 
        
           |  |  | 236 | 		echo "$usage"
 | 
        
           |  |  | 237 | 		exit 1
 | 
        
           |  |  | 238 | 		;;
 | 
        
           |  |  | 239 | esac
 | 
        
           |  |  | 240 |   |