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 ECHO() { echo -e "\t$*" ; } 25 ECHON() { echo -en "\t$*" ; } 26 toXML() { 27 sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/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&va=$va&dd=$dd&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
Date de génération : 22/09/2011 21:48