Firewall-Masquerade avec interface http

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

~~ / WWW / SITE / OLD / index.cgi
Makefile index.cgi graph.cgi firewall.xsl firewall.css firewall.js
    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 ECHO() { echo -e "\t$*" ; }
   25 ECHON() { echo -en "\t$*" ; }
   26 toXML() {
   27     sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g'
   28     }
   29 
   30 . /etc/firewall.d/etc/config.sh
   31 BIN=$FW_HOME/bin
   32 DATA=$FW_HOME/var
   33 mode=accueil
   34 eval `$BIN/cgi_shell SH`
   35 case $mode in
   36     accueil) titre=Accueil ;;
   37     iptables) titre=iptables ;;
   38     config) titre="Configuration $val" ;;
   39     log) titre="Fichiers de Log" ;;
   40     stat) titre="Statitiques du $val"
   41     ;;
   42     *) titre="Va y avoir un probleme" ;;
   43 esac
   44 ###
   45 ### INFOS GENERALES:  peuvent etre utiles a toutes les pages
   46 ###
   47 DATE=`date +'Nous sommes le <em>%d/%m/%Y</em> à <em>%H:%M:%S</em>.'`
   48 UPTIME="Up Time: <em>`uptime`</em>"
   49 if [ -f /etc/firewall.d/firewall.etat ] ; then
   50     fwmode=`cat /etc/firewall.d/firewall.etat`
   51 else
   52     fwmode="indéfini"
   53 fi
   54 CONFIG="Firewall en mode : <em>$fwmode</em>"
   55 ###
   56 ### INFOS POUR LES STATS: sorte de cookies via GET
   57 ### les 'post' priment sur les 'get'
   58 ###
   59 auto=${auto:-"no"}
   60 if [ $auto = no ] ; then
   61     vi=${vi:-"auto"} va=${va:-"auto"} dd=${dd:-"0"} df=${df:-"24"}
   62     vi=${pvi:-"$vi"} va=${pva:-"$va"} dd=${pdd:-"$dd"} df=${pdf:-"$df"}
   63 else
   64     vi=auto va=auto dd=auto df=auto
   65 fi
   66 CK="vi=$vi&amp;va=$va&amp;dd=$dd&amp;df=$df"
   67 if [ $REQUEST_URI = / ] ; then
   68     # pour l'instant on a du post que pour les stats
   69     export REQUEST_URI="/?mode=$mode&val=$val&vi=$vi&va=$va&dd=$dd&df=$df"
   70 fi
   71 ###
   72 ###  LE MENU: Accueil, iptables, conf & stat
   73 ###
   74 MENU() { echo -e "\t$*" >> /tmp/fw_menu_xml.$$ ; }
   75 MENU "<menu>"
   76 MENU '\t<item nom="Accueil" mode="accueil" />'
   77 MENU '\t<item nom="Paramètres" mode="iptables" />'
   78 MENU '\t<liste nom="Log" role="log">'
   79 for f in `ls /var/log/{messages,syslog}*| sort -t . -k 2,3n` ; do
   80     conf=`basename $f`
   81     MENU "\t\t<choix nom=\"$conf\" val=\"$conf\"/>"
   82 done
   83 MENU '\t</liste>'
   84 MENU '\t<liste nom="Config" role="config">'
   85 for f in /etc/firewall.d/conf/*.conf ; do
   86     conf=`basename $f .conf`
   87     MENU "\t\t<choix nom=\"$conf\" val=\"$conf\"/>"
   88 done
   89 MENU '\t</liste>'
   90 files=`ls $DATA/* | sort -rn`
   91 MENU '\t<liste nom="Stat" role="stat">'
   92 MENU "\t\t<choix nom=\"dernières\" val=\"\"/>"
   93 prem=''
   94 for f in $files ; do
   95     fic=`basename $f .dat`
   96     MENU "\t\t<choix nom=\"$fic\" val=\"$fic\"/>"
   97     [ -z "$prem" ] && prem=$fic
   98 done
   99 MENU '\t</liste>'
  100 MENU "</menu>"
  101 if [ $mode = stat ] ; then
  102     if [ -z "$val" ] ; then
  103         titre="Statitiques du $prem (dernières stat)"
  104         date=$prem
  105     else
  106         date=$val
  107     fi
  108 fi
  109 cat - <<XML
  110 Content-type: text/xml
  111 
  112 <?xml version="1.0" encoding="iso-8859-1" ?>
  113 <?xml-stylesheet type="text/xsl" href="firewall.xsl" ?>
  114 <firewall mode="$mode" etat="$fwmode">
  115     <nom>$FW_TITRE</nom>
  116     <page>$titre</page>
  117     <ck>$CK</ck>
  118 XML
  119 [ -f /tmp/fw_menu_xml.$$ ] && cat /tmp/fw_menu_xml.$$
  120 TIMEOUT=""
  121 case $mode in
  122 iptables)
  123     ECHO "<actif mode=\"$mode\" courant=\"\"/>"
  124     ECHO '<iptables>'
  125     ECHON '<table nom="filter">'
  126     $BIN/suid_iptables | toXML
  127     ECHO '</table>'
  128     ECHON '<table nom="nat">'
  129     $BIN/suid_iptables nat | toXML
  130     ECHO '</table>'
  131     ECHO '</iptables>'
  132     TIMEOUT=120
  133     ;;
  134 config)
  135     ECHO "<actif mode=\"$mode\" courant=\"$val\"/>"
  136     ECHO '<configuration>'
  137     ECHON "<conf nom=\"$val\">"
  138     cat /etc/firewall.d/conf/$val.conf | toXML
  139     ECHO '</conf>'
  140     ECHON "<conf nom=\"$val\">"
  141     cat /etc/firewall.d/shell/$val.sh | toXML
  142     ECHO '</conf>'
  143     ECHO '</configuration>'
  144     ;;
  145 log)
  146     ECHO "<actif mode=\"$mode\" courant=\"$val\"/>"
  147     ECHO '<logs>'
  148     type=`echo $val| cut -d. -f1`
  149     num=`echo $val| cut -s -d. -f2`
  150     ECHON '<log nom="'$val'">'
  151     case "$type" in
  152         syslog|messages) $BIN/suid_cut80 "$type" "$num" | toXML ;;
  153         *) echo "je sais pas faire..." | toXML ;;
  154     esac
  155     ECHO '</log>'
  156     ECHO '</logs>'
  157     TIMEOUT=120
  158     ;;
  159 stat)
  160     ECHO "<actif mode=\"$mode\" courant=\"$val\"/>"
  161     ECHO '<stat>'
  162     ECHO '\t<saisie>'
  163     ECHO "\t\t<vi>$vi</vi>"
  164     ECHO "\t\t<va>$va</va>"
  165     ECHO "\t\t<dd>$dd</dd>"
  166     ECHO "\t\t<df>$df</df>"
  167     ECHO "\t\t<dt>$val</dt>"
  168     ECHO "\t\t<last>$prem</last>"
  169     ECHO '\t</saisie>'
  170     style="width:${FW_W}px;height:${FW_H}px;"
  171     ECHO "\t<graphiques style=\"$style\" date=\"$date\">"
  172     ECHO "\t\t<graphique nom=\"recv eth1\" type=\"r1\"/>"
  173     ECHO "\t\t<graphique nom=\"send eth0\" type=\"s0\"/>"
  174     ECHO "\t\t<graphique nom=\"recv eth0\" type=\"r0\"/>"
  175     ECHO "\t\t<graphique nom=\"send eth1\" type=\"s1\"/>"
  176     ECHO "\t\t<graphique nom=\"CPU activity\" type=\"cpu\"/>"
  177     ECHO '\t</graphiques>'
  178     ECHO '</stat>'
  179     TIMEOUT=300
  180     ;;
  181 *)
  182     ECHO "<actif mode=\"accueil\" courant=\"\"/>"
  183 esac
  184 if [ ! -z $TIMEOUT ] ; then
  185     ECHO "<refresh>${TIMEOUT}000</refresh>"
  186     ECHON "<refresh_url>"
  187     echo -n "$REQUEST_URI" | toXML
  188     echo "</refresh_url>"
  189 fi
  190 cat - <<XML
  191     <accueil>
  192         <info>$DATE</info>
  193         <info>$UPTIME</info>
  194         <info>$CONFIG</info>
  195     </accueil>
  196 </firewall>
  197 
  198 XML
  199 [ -f /tmp/fw_menu_xml.$$ ] && rm /tmp/fw_menu_xml.$$
  200 
Makefile index.cgi graph.cgi firewall.xsl firewall.css firewall.js
~~ / WWW / SITE / OLD / index.cgi

Haut de page

Contacter crabs

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