Howtos: Allgemeines
- Rechner im Netz herunterfahren
- Sonstige Infos für Newbie's
- Was mache ich, wenn sich meine Box nicht Freetzen lässt
- Wie baue ich meinen ersten trunk ?
- Wake on Lan (WoL) mit der Fritzbox
- Swap-File anlegen
- Installation
- Aktualisierung
- Fehlerbehebung
- Manuelles einspielen des Images
- Weiterführende Links
- Erste Schritte mit Freetz
- External
- Konfiguration
- Auswahl
- Installation
- Automatisches starten/stoppen von Diensten
- Firmware-build-Prozess und Update
- Benutzer dauerhaft in der passwd speichern
- Kleiner Webserver mit BusyBox
- Konfiguration
- Freetz Linux
Kleiner Webserver mit BusyBox
BusyBox enthält einen kleinen Webserver, den man z.B. so starten kann:
httpd -P /var/run/port90.pid -p 90 -c /mod/etc/webcfg.conf -h /var/media/ftp/irgendwo/htdocs/ -r "Port 90"
Diese Zeile startet den Webserver auf Port 90, d.h. um ihn zu erreichen, benutzt man http://fritz.box:90. Wenn man in /var/media/ftp/irgendwo/htdocs/ eine Datei namens index.html abgelegt hat, wird diese angezeigt.
Der Inhalt von Verzeichnissen wird nicht automatisch angezeigt. Dafür kann man ein CGI-Skript mit dem Namen index.cgi im Unterverzeichnis cgi-bin anlegen, im Beispiel also /var/media/ftp/irgendwo/htdocs/cgi-bin/index.cgi.
#!/bin/sh # standardkonformen HTTP-Header erzeugen echo -en "Content-Type: text/html\r\n\r\n" cat << EOF <html> <head> <title>Index of ${QUERY_STRING}</title> </head> <body> <h2>Index of ${QUERY_STRING}</h2> <table cellspacing="2" border="0"> <tr align="left"><th>Name</th><th> Last modified</th><th> Size</th></tr> <tr><td colspan="3"><hr></td></tr> <tr><td>$([ "$QUERY_STRING" == "/" ] || echo '<a href="..">..</a>')</td></tr> $( # alle Fehler ins Nirvana umleiten exec 2>/dev/null # Datumsformat 1 zum Finden in der Verzeichnisliste date_format1="[A-Z][a-z]{2} [A-Z][a-z]{2} [ 123][0-9] [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4}" # langer Ersetzungsausdruck (daher separat), der eine Tabellenzeile # generiert replace="<tr><td><tt><a href=\"\3\">\3<\/a><\/tt><\/td><td><tt>\ \ \2<\/tt><\/td><td align=right><tt>\ \ \1<\/tt><\/td><\/tr>" # Datumsformat 2 zum Separieren eines führenden Leerzeichens bei der # Tageszahl (muß durch festes HTML-Leerzeichen ersetzt werden) date_format2="([A-Z][a-z]{2} [A-Z][a-z]{2} ) ([0-9] [0-9]{2}:[0-9]{2}:[0-9]{2} [0-9]{4})" busybox ls -lLep ../${QUERY_STRING} | # im Wurzelverzeichnis "cgi-bin" herausfiltern ([ "$QUERY_STRING" == "/" ] && grep -v 'cgi-bin' || cat) | # Zeilen numerieren, damit Reihenfolge innerhalb der beiden Gruppen # (Verzeichnisse und der Rest) später erhalten bleibt beim Sortieren awk '{printf("%5d %s\n", NR,$0)}' | # "X" vor Verzeichnisse setzen, "Y" vor den Rest ("X" < "Y") sed -r 's/^([0-9 ]+ d)/X \1/' | sed -r 's/^([0-9 ]+)/Y \1/' | # Sortieren bewirkt Gruppierung der Einträge sort | # Sortierhilfen + nicht benötigte Spalten löschen sed -r 's/^([^ ]+ +){6}(.*)/\2/' | # Dateigrößen für Verzeichnisse durch "---" ersetzen sed -r 's/^[0-9]+(.*)\/$/---\1/' | # eine Tabellenzeile je Verzeichniseintrag erzeugen sed -r "s/^([-0-9, ]+) ($date_format1) +(.*)$/$replace/" | # Sonderfall führendes Leerzeichen bei Tageszahl im Datum sed -r "s/$date_format2/\1\ \2/" ) </table> </body> </html> EOF
Der BusyBox-httpd kann auch PHP-Skripte ausführen, wenn man das PHP-Package installiert hat. Dazu muss man in /mod/etc/webcfg.conf eine neue Zeile einfügen:
*.php:/usr/bin/php-cgi
Damit index.php-Dateien verarbeitet werden, kann man beim index.cgi-Skript nach der ersten Zeile folgende Zeilen einfügen:
if test -s "../${QUERY_STRING}/index.php" ; then echo -e "Status: 302 Found\r" echo -e "Location: index.php\r" exit 0 fi