Benutzer-Werkzeuge

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

statusseite_aufsetzen [2013/10/12 02:33]
mwarning
statusseite_aufsetzen [2014/07/21 19:23]
Zeile 1: Zeile 1:
-**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='tun0' 
-  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 '<html>' 
-  echo '<head>' 
-  echo '<title>Gateway-Status</title>' 
-  echo '<link rel="stylesheet" type="text/css" href="style.css">' 
-  echo '</head>' 
-  echo '<body>' 
-   
-  echo '<br /><br />' 
-  echo '<h2>Statusseite des Gateways vpnx.freifunk-bielefeld.de</h2>' 
-  echo '<center>('`date`')</center>' 
-  echo '<table>' 
-  echo '<tr style="vertical-align:bottom;">' 
-  echo '<td id="left_top">'$wan_tx_str'</td>' 
-  echo '<td id="middle_top"><b>Load:</b>'$load'<br><b>Uptime:</b>'$uptime'</td>' 
-  echo '<td id="right_top">'$vpn_rx_str'</td>' 
-  echo '</tr>' 
-  echo '<tr>' 
-  echo '<td colspan=3><img src="schema.png" class="schema"></td></tr>' 
-  echo '<tr style="vertical-align:top;">' 
-  echo '<td id="left_bottom">'$wan_rx_str'</td>' 
-  echo '<td id="middle_bottom"><b>HDD:</b> '$hdd'<br><a href="vnstat/">Traffic Statistics</a></td>' 
-  echo '<td id="right_bottom">'$vpn_tx_str'</td>' 
-  echo '</tr>' 
-  echo '</table>' 
-  echo '</body>' 
-  echo '</html>' 
-   
-  #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: 
- 
-<code>*/2 *   * * *   www    /etc/lighttpd/generate.sh '/etc/lighttpd/www/index.html'</code> 
- 
-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';