**Installation der Statusseite** Eine kleine Statusseite die den Verkehr und den Status des Gateways anzeigt. Dafür wird lighttpd und ein CGI-Script verwendet. apt-get install lighttpd apt-get install gawk gawk wird für das CGI-Script benötigt. Der Inhalt von /etc/lighttpd/lighttpd.conf: server.document-root = "/etc/lighttpd/www/" server.port = 80 server.bind = "10.29.x.y" $SERVER["socket"] == "10.29.x.y:80" {} server.username = "www" server.groupname = "www" mimetype.assign = ( ".html" => "text/html", ".txt" => "text/plain", ".jpg" => "image/jpeg", ".png" => "image/png", ".css" => "text/css" ) index-file.names = ( "index.html" ) In der Konfigurationsdatei muss anstatt 10.29.x.y die korrekte IP eingetragen werden unter der die Statusseite im Freifunknetz erreichbar sein soll. Der Inhalt von /etc/lighttpd/generate.sh: #!/bin/bash dst="$1" src="/tmp/freifunk_status" vpn_if='fastd_bat' wan_if='vpnexit' avg_time=5 #write stdout to file exec >"$src" 2>&1 convert() { echo $1 | awk '{ split("B,KiB,MiB,GiB,TiB,EiB,PiB,YiB,ZiB", s, ",") c=1; x=$1 while (x>=1024 && c<8) {x/=1024; c++} xf=(c==1)?"%d":"%.2f" printf(xf" %s\n", x, s[c]) }' } vpn_tx1_bytes=`cat "/sys/class/net/$vpn_if/statistics/tx_bytes"` vpn_rx1_bytes=`cat "/sys/class/net/$vpn_if/statistics/rx_bytes"` wan_tx1_bytes=`cat "/sys/class/net/$wan_if/statistics/tx_bytes"` wan_rx1_bytes=`cat "/sys/class/net/$wan_if/statistics/rx_bytes"` sleep $avg_time vpn_tx2_bytes=`cat "/sys/class/net/$vpn_if/statistics/tx_bytes"` vpn_rx2_bytes=`cat "/sys/class/net/$vpn_if/statistics/rx_bytes"` wan_tx2_bytes=`cat "/sys/class/net/$wan_if/statistics/tx_bytes"` wan_rx2_bytes=`cat "/sys/class/net/$wan_if/statistics/rx_bytes"` wan_tx_speed=$((($wan_tx2_bytes-$wan_tx1_bytes)/$avg_time)) wan_rx_speed=$((($wan_rx2_bytes-$wan_rx1_bytes)/$avg_time)) vpn_tx_speed=$((($vpn_tx2_bytes-$vpn_tx1_bytes)/$avg_time)) vpn_rx_speed=$((($vpn_rx2_bytes-$vpn_rx1_bytes)/$avg_time)) wan_tx_str="`convert $wan_tx2_bytes` (`convert $wan_tx_speed`/s)" wan_rx_str="`convert $wan_rx2_bytes` (`convert $wan_rx_speed`/s)" vpn_tx_str="`convert $vpn_tx2_bytes` (`convert $vpn_tx_speed`/s)" vpn_rx_str="`convert $vpn_rx2_bytes` (`convert $vpn_rx_speed`/s)" u=`uptime` load="${u##*:}" u="${u%%,*}" uptime="${u##*up}" hdd=`df -h | grep '/$' | cut -d' ' -f 20` echo '' echo '' echo 'Gateway-Status' echo '' echo '' echo '' echo '

' echo '

Statusseite des Gateways vpnx.freifunk-bielefeld.de

' echo '
('`date`')
' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '' echo '
'$wan_tx_str'Load:'$load'
Uptime:'$uptime'
'$vpn_rx_str'
'$wan_rx_str'HDD: '$hdd'
Traffic Statistics
'$vpn_tx_str'
' echo '' echo '' #move to final destination mv "$src" "$dst" exit 0 Für die Statusseite werde zusätzlich die beiden Dateien {{:style.css.zip|style.css}} und {{:schema.png?linkonly|schema.png}} benötigt. cd /etc/lighttpd/www wget http://freifunk-bielefeld.de/lib/exe/fetch.php?media=style.css.zip -O style.css wget http://freifunk-bielefeld.de/lib/exe/fetch.php?media=schema.png -O schema.png Das obige Script generiert die Statusseite und soll alle zwei Minuten ausgeführt werden. Dafür wird ein Eintrag in die /etc/crontab vorgenommen: */2 * * * * www /etc/lighttpd/generate.sh '/etc/lighttpd/www/index.html' Natürlich muss das script auch ausführbar sein: chmod a+x /etc/lighttpd/generate.sh Das Verzeichnis für den Inhalt muss noch erstellt werden: mkdir /etc/lighttpd/www Bevor lighttpd gestartet wird wird dafür noch eine Nutzer und eine Gruppe angelegt: groupadd www useradd -g www -d /etc/lighttpd/www -s /sbin/nologin www chown -R www:www /etc/lighttpd/www/ chmod -R 775 /etc/lighttpd/www/ Nun kann der Webserver gestartet werden. /etc/init.d/lighttpd start **vnStat** [[http://humdi.net/vnstat/|vnStat]] protokolliert den Netzwerkverkehr auf mehreren Anschlüssen und listest das Volumen je Minute/Stunde/Tag/Monat auf. apt-get install php5-cgi apt-get install vnstat vnstat -u -i fastd_bat vnstat -u -i tun0 vnstat -u -i icvpn In der /etc/vnstat.conf muss unter #default Interface: Interface "tun0" Interface "fastd_bat" Interface "icvpn" ergänzt werden\\ In /etc/lighttpd/lighttpd.conf muss dann hinzugefügt werden: server.modules = ("mod_fastcgi") fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" ))) und index-file.names = ( "index.html" ) wird durch index-file.names = ( "index.html", "index.php" ) ersetzt Nun muss nur noch das php-frontend in den richtigen Pfad heruntergeladen und entpackt werden und die /etc/lighttpd/www/vnstat/config.php angepasst werden: wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz tar -xvzf vnstat_php_frontend-1.5.1.tar.gz mv vnstat_php_frontend-1.5.1 /etc/lighttpd/www/vnstat Alle Interfaces müssen als array aufgeführt sein: $iface_list = array('tun0', 'fastd_bat', 'icvpn', 'eth0'); und für jedes Interface wird noch ein Titel vergeben $iface_title['tun0'] = 'Exit-VPN'; $iface_title['fastd_bat'] = 'Freifunk intern'; $iface_title['icvpn'] = 'IC-VPN'; $iface_title['eth0'] = 'Netzwerkkarte';