[Shorewall-users] 1.2.10 Preview

Dario Lesca
Mon, 18 Mar 2002 16:43:59 -0000

----- Original Message -----
From: "Tom Eastep"
<teastep@shorewall.net>
>
>     shorewall try <configuration directory>
>

Following your suggest into "Re: [Shorewall-users] HowTo avoid to be close
out
when active a new configurations from remote host", I have generate
the following script.

Now that this option has been inserted into shorewall, I will throw mine
script.
Check if something could be useful for you (perhaps it is in Italian, if you
thing
it could be useful for you i can translate the comment)

Many Thanks.

Dario Lesca

-----------------[setupshwconf.sh]--------------
#!/bin/bash

# Run shorewall and get status ...
function test_shorewall
{
        test $# != 2 && exit 1
        config=$1
        azione=$2
        flog=/tmp/setupshwconf.log
        stat=/tmp/setupshwconf.stat
        function my_run {
                c=$2
                a=$3
                cmd="shorewall -c $c $a"
                date
                echo $cmd
                eval $cmd
                echo $? > $stat
        }

        rm -rf $stat

        my_run shw_stat "$config" "$azione"  2>&1 |
        awk -v flog=$flog ''{printf "."; print $0 >
flog}''

        test -f $stat && st=$(cat $stat) || st=10
        rm -rf $stat
        echo " (status=$st)"

        return $st
}

SHOREWALL=/etc/shorewall
NEW_CONFIG=$(cd $1 && pwd -P)
CURR_CONFIG=$SHOREWALL/Config/Current.cfg

if [ ! -d "$1" ]
then
        echo "Usage: $(basename $0) {directory whit config file of
shorewall}"
        if test -f $CURR_CONFIG
        then
                echo "       (last config files from: $(cat
$CURR_CONFIG))"
        fi
        exit 2
fi

echo "Verifica sintassi nuova configurazione ..."
if ! test_shorewall $NEW_CONFIG check
then
        tput bel
        echo "ATTENZIONE: I file utilizzati contengono qualche errore"
        echo "Procedura interrotta, nulla di fatto."
        exit 1
fi

cat << EOF
OK: File di configurazione privi di errori sintattici.

Si procede ora con l''attivazione della nuova configurazione.

Per prevenire eventuali errori di configurazione, dopo la sua
attivazione verra'' richiesto di digitare la stringa OK.

Se entro $sec secondi non verra'' digitato nulla, sara''
ripristinata
la configurazione precedente, oppure disattivato il firewall nel
caso nessuna configurazione sia stata ancora attivata.

EOF

sleep 3

echo "Attivazione nuova configurazione ..."
if ! test_shorewall $NEW_CONFIG restart
then
        tput bel
        echo "ATTENZIONE: caricamento nuova configurazione fallito!"
        inp="ERROR!"
else
        echo "Nuova configurazione attivata."
        echo

        stty -echo
        str="Per renderla operativa digitare OK entro %2d secondi: "
        nch=$(printf "$str" 0|wc -c)
        sec=9
        while [ -z "$inp" -a $sec != 0 ]
        do
                tput bel
                printf "$str" $sec
                read -t 1 inp
                i=$nch
                while [ $i -gt 0 ]
                do
                        printf " \b\b"
                        i=$[$i - 1]
                done
                sec=$[$sec - 1]
        done
        stty echo
fi

if test "$inp" = OK
then
        echo "OK: Attivo la nuova configurazione."
        cp -va $NEW_CONFIG/* $SHOREWALL/.
        echo $NEW_CONFIG > $CURR_CONFIG

        echo "Avvio la nuova configurazione ..."
        azione=restart
else
        echo "ATTENZIONE!: La nuova configurazione non e'' stata
attivata."
        echo
        if test -f $CURR_CONFIG
        then
                echo "Ripristino la configurazione precedente ..."
                azione=restart
        else
                echo "Disattivo il firewall ..."
                azione=clear
        fi
fi
service shorewall $azione

echo "Termime Procedura."

--------------------------------[setupshwconf.sh]--------------