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';​