crabs_firewall-3.0.1 ©2005-2011 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)
1 #!/bin/bash 2 # 3 # ============================================================================= 4 # crabs_firewall-3.0.1 : Firewall-Masquerade avec interface http 5 # Copyright (C) 2005-2011 : Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com) 6 # 7 # Ce source fait partie d'un projet logiciel libre. Vous pouvez le distribuer 8 # et/ou le modifier en respectant les termes de la GNU General Public License 9 # version 2 ou (suite a votre propre choix) une version ulterieure. 10 # 11 # Ce programme est distribue dans l'espoir qu'il puisse etre utile, mais 12 # sans aucune garantie, meme si il est associe a un produit qui vous en 13 # propose une. Conformez-vous a la GNU General Public License pour avoir 14 # plus de precisions. 15 # 16 # L'auteur ne peut etre tenu responsable de l'utilisation faite des 17 # composantes associees a ce projet (en partie ou dans leur totalite). 18 # 19 # Une copie du fichier de la GNU GPL est fournie dans le repertoire DOC 20 # de ce projet sous le nom gnu_gpl.txt 21 # 22 # ============================================================================= 23 # 24 #### 25 #### VARIABLES GLOBALES DU SCRIPT 26 #### 27 cd `dirname $0` 28 cd .. 29 PROJET=`pwd` 30 BT="Installation Firewall" 31 rep=/tmp/fw_install_rep.$$ 32 tmp=/tmp/fw_install_tmp.$$ 33 CONF=/etc/firewall.d/etc/config.sh 34 VARIANT=${VARIANT:-NORMAL} 35 36 [ -f $CONF ] && . $CONF 37 38 # -=> PARAMETRAGE UTILISATEUR 39 FW_USER=${FW_USER:-"firewall"} 40 FW_UID=${FW_UID:-"150"} 41 FW_GROUP=${FW_GROUP:-"firewall"} 42 FW_GID=${FW_GID:-"150"} 43 FW_SHELL=${FW_SHELL:-"/bin/bash"} 44 FW_HOME=${FW_HOME:-"/firewall"} 45 46 # -=> PARAMETRAGE GENERAL 47 FW_TITRE=${FW_TITRE:-"Nom du firewall"} 48 49 FW_I0_ETH=${FW_I0_ETH:-"eth0"} 50 FW_I0_NET=${FW_I0_NET:-"lan"} 51 FW_I0_ADR=${FW_I0_ADR:-"192.168.1.0/24"} 52 53 FW_I1_ETH=${FW_I1_ETH:-"eth1"} 54 FW_I1_NET=${FW_I1_NET:-"internet"} 55 FW_I1_ADR=${FW_I1_ADR:-"0.0.0.0/0"} 56 57 FW_W=${FW_W:-"1024"} 58 FW_H=${FW_H:-"150"} 59 60 FW_HISTO=${FW_HISTO:-"100"} 61 62 #### 63 #### PARAMETRAGE GENERAL 64 #### 65 fw_nom() 66 { 67 dialog --backtitle "$BT" --title "Paramétrage général" \ 68 --cancel-label "Annuler" \ 69 --ok-label "Appliquer" \ 70 --form "Nom et Interfaces" 0 0 0 \ 71 Nom 1 1 "$FW_TITRE" 1 10 50 50 \ 72 "Primaire: if=" 3 1 "$FW_I0_ETH" 3 14 6 8 \ 73 "network=" 3 23 "$FW_I0_NET" 3 31 8 8 \ 74 "address=" 3 41 "$FW_I0_ADR" 3 49 20 20 \ 75 "Second. : if=" 5 1 "$FW_I1_ETH" 5 14 6 8 \ 76 "network=" 5 23 "$FW_I1_NET" 5 31 8 8 \ 77 "address=" 5 41 "$FW_I1_ADR" 5 49 20 20 \ 78 "image (px)" 7 1 "$FW_W" 7 12 6 6 \ 79 "x" 7 19 "$FW_H" 7 21 6 6 \ 80 "historique=" 7 41 "$FW_HISTO" 7 52 4 4 \ 81 2> $rep 82 if [ $? != 0 ] ; then 83 return 84 fi 85 eval `awk ' \ 86 NR==1 { printf( "FW_TITRE=\"%s\"\n", $0 ) ; } \ 87 NR==2 { printf( "FW_I0_ETH=\"%s\"\n", $0 ) ; } \ 88 NR==3 { printf( "FW_I0_NET=\"%s\"\n", $0 ) ; } \ 89 NR==4 { printf( "FW_I0_ADR=\"%s\"\n", $0 ) ; } \ 90 NR==5 { printf( "FW_I1_ETH=\"%s\"\n", $0 ) ; } \ 91 NR==6 { printf( "FW_I1_NET=\"%s\"\n", $0 ) ; } \ 92 NR==7 { printf( "FW_I1_ADR=\"%s\"\n", $0 ) ; } \ 93 NR==8 { printf( "FW_W=\"%s\"\n", $0 ) ; } \ 94 NR==9 { printf( "FW_H=\"%s\"\n", $0 ) ; } \ 95 NR==10 { printf( "FW_HISTO=\"%s\"\n", $0 ) ; }' \ 96 $rep` 97 } 98 #### 99 #### CREATION DE L'UTILISATEUR 100 #### 101 fw_user() 102 { 103 dialog --backtitle "$BT" --title "Paramétrage utilisateur" \ 104 --cancel-label "Annuler" \ 105 --ok-label "Créer" \ 106 --form "Saisir les informations sur l'utilisateur" 0 0 0 \ 107 Username 1 1 "$FW_USER" 1 10 16 16 \ 108 UID 1 30 "$FW_UID" 1 35 6 6 \ 109 Group 3 1 "$FW_GROUP" 3 10 16 16 \ 110 GID 3 30 "$FW_GID" 3 35 6 6 \ 111 Home 5 1 "$FW_HOME" 5 10 40 128 \ 112 Shell 7 1 "$FW_SHELL" 7 10 40 40 \ 113 2> $rep 114 if [ $? != 0 ] ; then 115 return 116 fi 117 eval `awk ' \ 118 NR==1 { printf( "FW_USER='%s'\n", $0 ) ; } \ 119 NR==2 { printf( "FW_UID='%s'\n", $0 ) ; } \ 120 NR==3 { printf( "FW_GROUP='%s'\n", $0 ) ; } \ 121 NR==4 { printf( "FW_GID='%s'\n", $0 ) ; } \ 122 NR==5 { printf( "FW_HOME='%s'\n", $0 ) ; } \ 123 NR==6 { printf( "FW_SHELL='%s'\n", $0 ) ; }' \ 124 $rep` 125 echo "groupadd -g '$FW_GID' '$FW_GROUP'" > $tmp 126 groupadd -g "$FW_GID" "$FW_GROUP" >> $tmp 2>&1 127 if [ $? != 0 ] ; then 128 echo "Echec a la creation du groupe" >> $tmp 129 fi 130 echo "useradd -u '$FW_UID' -g '$FW_GID' -s '$FW_SHELL' -d '$FW_HOME' '$FW_USER'" >> $tmp 131 useradd -u "$FW_UID" -g "$FW_GID" -s "$FW_SHELL" -d "$FW_HOME" "$FW_USER" \ 132 >> $tmp 2>&1 133 if [ $? != 0 ] ; then 134 echo "Echec a la creation de l'utilisateur" >> $tmp 135 fi 136 dialog --backtitle "$BT" --title "Creation utilisateur: compte rendu" \ 137 --exit-label "Continuer" --textbox $tmp 0 0 138 } 139 140 #### 141 #### ENREGISTRE LE FICHIER DE CONF 142 #### 143 ## CETTE FONCTION EST APPELEE LORS DE L'INSTALL : cf file.lst 144 store_cfg() 145 { 146 > $1 147 echo "export FW_TITRE=\"${FW_TITRE}\"" >> $1 148 echo "export FW_USER=\"${FW_USER}\"" >> $1 149 echo "export FW_UID=\"${FW_UID}\"" >> $1 150 echo "export FW_GROUP=\"${FW_GROUP}\"" >> $1 151 echo "export FW_GID=\"${FW_GID}\"" >> $1 152 echo "export FW_SHELL=\"${FW_SHELL}\"" >> $1 153 echo "export FW_HOME=\"${FW_HOME}\"" >> $1 154 echo "export FW_I0_ETH=\"${FW_I0_ETH}\"" >> $1 155 echo "export FW_I0_NET=\"${FW_I0_NET}\"" >> $1 156 echo "export FW_I0_ADR=\"${FW_I0_ADR}\"" >> $1 157 echo "export FW_I1_ETH=\"${FW_I1_ETH}\"" >> $1 158 echo "export FW_I1_NET=\"${FW_I1_NET}\"" >> $1 159 echo "export FW_I1_ADR=\"${FW_I1_ADR}\"" >> $1 160 echo "export FW_W=\"${FW_W}\"" >> $1 161 echo "export FW_H=\"${FW_H}\"" >> $1 162 echo "export FW_HISTO=\"${FW_HISTO}\"" >> $1 163 } 164 165 #### 166 #### UTILITAIRE D'INSTALL DE FICHIER 167 #### 168 nufile=0 nbfile=0 169 do_mkdir() 170 { 171 echo $pourcent 172 echo "XXX" 173 echo "Dossier: $4" 174 echo "XXX" 175 echo "### Dossier: $4" 1>&2 176 echo " mkdir -m $1 $4" 1>&2 177 [ -d $4 ] || mkdir -m $1 $4 1>&2 178 echo " chown $2:$3 $4" 1>&2 179 chown $2:$3 $4 1>&2 180 } 181 do_file() 182 { 183 echo $pourcent 184 echo "XXX" 185 echo "Fichier: $4" 186 echo "XXX" 187 echo "### Fichier: $4" 1>&2 188 fic=`basename $5` 189 if [ "`echo $fic|cut -c1`" == '|' ] ; then 190 cmd="`echo $fic|cut -c2-`" 191 echo " $cmd $4" 1>&2 192 $cmd $4 1>&2 193 else 194 echo " cp $5 $4" 1>&2 195 cp $5 $4 1>&2 196 fi 197 echo " chown $2:$3 $4" 1>&2 198 chown $2:$3 $4 1>&2 199 echo " chmod $1 $4" 1>&2 200 chmod $1 $4 1>&2 201 } 202 do_link() 203 { 204 echo $pourcent 205 echo "XXX" 206 echo "Lien: $4" 207 echo "XXX" 208 echo "### Lien: $4" 1>&2 209 [ -f $4 ] && rm $4 210 echo " ln $5 $4" 1>&2 211 ln $5 $4 1>&2 212 echo " chown $2:$3 $4" 1>&2 213 chown $2:$3 $4 1>&2 214 echo " chmod $1 $4" 1>&2 215 chmod $1 $4 1>&2 216 } 217 traite_fichier() 218 { 219 type=$1 220 mode=$2 221 if [ $3 == USER ] ; then user=$FW_USER ; else user=$3 ; fi 222 if [ $4 == GROUP ] ; then group=$FW_GROUP ; else group=$4 ; fi 223 dst=`echo $5 | sed "s?%FW_HOME%?$FW_HOME?"` 224 case "$type" in 225 d) do_mkdir $mode $user $group $dst ;; 226 f) src=$PROJET/`echo $6 | sed -e "s?%BIN%?BIN/$OS/$VARIANT?" -e "s?%SBIN%?BIN?"` 227 do_file $mode $user $group $dst $src ;; 228 l) do_link $mode $user $group $dst $6 ;; 229 esac 230 } 231 #### 232 #### REALISE L'INSTALL 233 #### 234 fw_do_install() 235 { 236 date >&2 237 lst=$PROJET/ETC/file.lst 238 nbfile=`wc $lst|awk '{print $1}'` 239 nufile=1 240 for l in `cat $lst| tr ' \t' '::'` ; do 241 p1=$((nufile*100)) 242 pourcent=$((p1/nbfile)) 243 traite_fichier `echo $l| tr ':' ' '` 244 ((nufile++)) 245 done 246 } 247 fw_install() 248 { 249 fw_do_install 2>$tmp | \ 250 dialog --backtitle "$BT" --title "Installation" \ 251 --gauge "Avancement de l'installation" 7 70 0 252 dialog --backtitle "$BT" --title "Installation: compte rendu" \ 253 --exit-label "Continuer" --textbox $tmp 0 0 254 } 255 #### 256 #### PROGRAMME PRINCIPAL 257 #### 258 DI="NOM" 259 while true ; do 260 dialog --backtitle "$BT" --title "Paramétrage & installation du firewall" \ 261 --clear --cancel-label "Quitter" --ok-label "Go..." \ 262 --default-item "$DI" \ 263 --menu "Menu Principal" 0 0 0 \ 264 "NOM" "Nom de la configuration et identification des réseaux" \ 265 "USER" "Utilisateur assurant la collecte et le service Web" \ 266 "INSTALL" "Installation des fichiers" \ 267 "QUITTER" "Retour au shell" \ 268 2>$rep 269 if [ $? != 0 ] ; then 270 break ; 271 fi 272 DI="`cat $rep`" 273 case "`cat $rep`" in 274 'NOM') fw_nom ;; 275 'USER') fw_user ;; 276 'INSTALL') fw_install ;; 277 'QUITTER') break ;; 278 esac 279 done 280 281 rm -f $rep $tmp 282 283
Date de génération : 22/09/2011 21:48