Firewall-Masquerade avec interface http

crabs_firewall-3.0.1 ©2005-2011 - Christophe CAZAJUS (crabs-mettre_le_signe_at-crabs-world.com)

~~ / ROOT / install.sh
Makefile file.lst install.sh rc.firewall config.sh firewall_var_nettoie.sh le_makefile firewall.awk ouvrir.conf fermer.conf
    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 
Makefile file.lst install.sh rc.firewall config.sh firewall_var_nettoie.sh le_makefile firewall.awk ouvrir.conf fermer.conf
~~ / ROOT / install.sh

Haut de page

Contacter crabs

Date de génération : 22/09/2011 21:48