Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: weitere FLI4L korrigiert

Table of Contents

Hier soll aufgezeigt werden, wie man auf der eigenen Homepage eine Status-Seite erstellt, auf der der On- oder Offline-Status des eigenen FLI4Lfli4l-Routers ersichtlich ist. Wird diese Website angesurft, während der eigene Router offline ist, erscheint eine frei definierbare Website, wo z.B. zu lesen ist: Sorry, bin offline.

...

Benötigt wird Webspace beim Provider mit FTP-Zugriffsmöglichkeit.
Ein laufender HTTP-Server auf dem FLI4Lfli4l-Router, der von aussen erreichbar sein muss. Nicht ausreichend ist der interne Mini-HTTPD, der für das Webinterface vom Router benötigt wird!
Es muss ein zweiter HTTP-Server eingerichtet werden. Wie man das macht, stehtMini-Howto fuer FLI4L fli4l als Mini-Webserver von Florian Zierer
Wer, wie im oben genannten HOWTO erwähnt, keine Festplatte hat, oder sie nicht nutzen will, kann, wenn noch genügend Platz auf der Diskette ist, das Verzeichnis des 2. HTTP-Servers auch so legen, dass es über die Bootdiskette in die RAM-Disk entpackt wird. Der Vorteil hierbei: Die Platte läuft bei Zugriff nicht an, wenn sie per hdparm schläft.

...

Nun muss ein Verzeichnis für den zweiten HTTP-Server erstellt und/oder gemountet (eingebunden) werden. Entweder nutzt man dafür eine Partition der Festplatte, oder die RAM-Disk.
Dieses Verzeichnis soll unsere Homepage-Dateien auf dem Router aufnehmen. Da der Mini-HTTP für die Stastusanzeige in .../usr/local/htdocs hat, kommen unsere eigenen Dateien der Einfachheit halber nach .../usr/local/htdocs2. Dieses Verzeichnis ist zu erstellen, bzw als solches zu mounten.
Im Verzeichnis des 2. HTTP-Servers unseres FLI4Lfli4l-Routers wird nun ein kleines Image abgelegt, im Folgenden transparent.gif genannt. Dieses Image soll winzig klein und transparent sein. Wer so etwas nicht selber erstellen kann, kann es sich bei mir herunterladen: transparent.gif

...

Die vorlage.txt in fli4l-2.0.3/opt/files/opt/usr/local/mybin ist, nachdem eine neue Diskette erstellt worden ist, sowie ein Reboot gemacht wurde, später auf dem FLI4Lfli4l-Router zu finden in: /usr/local/bin/vorlage.txt. Sie wandert also von usr/local/mybin nach /usr/local/bin, sozusagen;-) Genau genommen wandert sie nicht, es wird lediglich ein Softlink von usr/local/mybin zu /opt/files/opt/usr/local/mybin erstellt. Das nur der Vollständigkeit halber.

...

Code Block
#!/bin/sh
#-------------------------------------------------------
# /etc/ppp/ip-up.user
#
# Enter your specific commands here, wget etc.
#
# Creation:       08.09.2000  fm
# Last Update:  15.11.2001  asta
#-------------------------------------------------------
# Seite generieren
    export datum=$(date "+%d.%m.%Y")
    export time=$(date "+%H:%M:%S")

# Alle sed-Anweisungen in einer Zeile !!!
# [ _ip_ wird durch Inhalt $ip, _datum_ durch $datum und _time_ durch $time ersetzt.....]
    /usr/bin/sed -e 's/_ip_/'$4'/g' /usr/local/bin/vorlage.txt | /usr/bin/sed -e 's/_datum_/'$datum'/g' | /usr/bin/sed -e 's/_uhrzeit_/'$time'/g' > /tmp/datei.txt
 
# Übertragen der Seite...
#################################################################################
 
/bin/echo "machine dein_provider.de login dein_login password GEHEIM" > /.netrc
chmod 600 /.netrc
(/bin/echo "cd public_html/geheim/"; /bin/echo "send /tmp/datei.txt index.html"; echo "bye" ) |
/usr/bin/ftp provider.de
rm /tmp/datei.txt
 
/bin/echo "<html>
      <head><title>Aktuelle Daten von `hostname`</title></head>
      <body>
      <h3>Hello! You are visiting my privat webserver.</h3>
      <h2>If you can read this, I am online now!</h2>
 
      <br>
      Technical referense:<br>
      Hostname: `hostname`<br>
      Linux: FLI4Lfli4l v `cat /etc/version`, the on(e)-disk-router <br>
      P166MMX, 64 MB SDRAM, 2xFloppy, 540 MB HDD, 1xFritz!Card PCI, 2x NE2000 comp ISA Ethernet 10 MBit<br>
      <h3>Uptime (my fli4l-router is running since): " > /usr/local/htdocs2/online.html

MYTIME=`/bin/cat /proc/uptime | /usr/bin/cut -d' ' -f1 | /usr/bin/cut -d'.' -f1`
SEC=`/usr/bin/expr $MYTIME % 60`
MYTIME=`/usr/bin/expr $MYTIME / 60`
MIN=`/usr/bin/expr $MYTIME % 60`
MYTIME=`/usr/bin/expr $MYTIME / 60`
HRS=`/usr/bin/expr $MYTIME % 24`
DAYS=`/usr/bin/expr $MYTIME / 24`
/bin/echo "$DAYS Days $HRS:$MIN:$SEC" >> /usr/local/htdocs2/online.html
 
/bin/echo " </h3>
      <h2><b>IP-Adresse: $4</b></h2>
      <h4>Use this IP for connections with me!</h4>
      <br><br><br>
      <h3>Automaticaly generated file: `date`.</h3>
      </body>
      </html>" >> /usr/local/htdocs2/online.html

# KEIN exit 0 am Ende der ip-up.user für FLI4Lfli4l 2x !

/usr/local/htdocs2/online.htm ist an die eigenen Gegebenheiten anzupassen (3 Mal in obiger Auflistung). Je nachdem, wo das httpd-Verzeichnis für den 2.Webserver eingerichtet wurde, muss der PATH hier angegeben werden.
Die Variable, die die IP enthällt, war bei fli4l 1.6.x in der /usr/local/bin/ip-up: $1, bei fli4l ab 2.0.1 in der /etc/ppp/ip-up.user hingegen ist es nun: $4, oder $local. Ich bitte dieses bei einem Update zu beachten. 
Die ip-up.user füllt erst die vorlage.txt aus, und speichert sie inklusive der eingesetzten Variablen als /tmp/datei.txt.
Die /tmp/datei.txt wird per ftp nach http:/provider/homepage/geheim/index.html geladen, und anschliessend gelöscht.

Danach wird eine zweite HTML-Seite per echo-Anweisung generiert und auf unserem HTTP-Server als online.html gespeichert (Path anpassen!!), Auch hier gibt es ein paar leckere Features. Die Variable hostname wird automatisch durch den Namen des FLI4L-Routers ersetzt. Ausserdem enthält die Seite die Uptime des Routers:-). Für den Uptime-Script-Teil möchte ich den Mitgliedern der Mailingliste und Newsgroup spline.fli4l danken. Ich weiss leider nicht mehr, wer obiges gepostet hat. Deswegen kann ich keinen Namen nennen, sorry.

...

Code Block
[snip script]
#-------------------------------------------------------------------------
# start mini_httpd and restart it, if it is killed
#-------------------------------------------------------------------------
cd $docroot
{ trap "" 1
  while true; do
    /usr/local/sbin/mini_httpd -D -p $HTTPD_PORT -u root -c "**.cgi" 2>&1 | $log
  done
} &
cd /

#-------------------------------------------------------------------------
# start des 2. Webservers auf port 80
#-------------------------------------------------------------------------
cd /usr/local/htdocs2        # Verzeichniss in dem die HTML Seite zu finden ist
/usr/local/sbin/mini_httpd -u root -c "*.cgi" -p 80
cd /

Wobei der normale, erste Mini-HTTPD für die Statusanzeige in der httpd.txt auf Port 81 zu konfigurieren ist. Der 2 Mini-HTTPD läuft auf Port 80.:

Code Block
#------------------------------------------------------------------------------
# Optional package: HTTP-Server for Monitoring
#------------------------------------------------------------------------------
OPT_HTTPD='yes'                  # install mini web server: yes or no
HTTPD_PORT='81'                 # http port, see also FIREWALL_DENY_PORT_x !

Port 80 ist in der base.txt für Zugriffe von aussen freizuschalten:

Code Block
FIREWALL_DENY_PORT_3='54:79    REJECT'  # privileged ports: reject or deny
FIREWALL_DENY_PORT_4='81:112    REJECT' # 80 für httpd-2 geöffnet

...