Benutzer-Werkzeuge


    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/main.php on line 62
  • Admin

  • Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 50

    Warning: Undefined array key "REMOTE_USER" in /usr/local/www/wiki.freifunk-bielefeld.de/lib/tpl/starter/tpl_functions.php on line 77
  • Registrieren

Webseiten-Werkzeuge


Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


Vorhergehende Überarbeitung
statusseite_aufsetzen [2023/06/04 11:32] (aktuell) – Externe Bearbeitung 127.0.0.1
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='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 '<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';