Das Fritz!Box-Telefon
Billiger telefonieren: Die Fritz!Box als Least Cost Router
Der Clou: Einbindung in den Webserver
Das soeben in den Startprozess eingebundene Script erfüllt zwei Aufgaben. Zum einen startet es den tsbdaemon. Dieser prüft stündlich, ob sich die Tarifinformationen geändert haben und erneuert gegebenenfalls die Wähltabelle in der Fritz!Box.
Zuvor ruft das Script aber noch die Datei tsbinstaller aus dem Web ab, die es in sich hat. Denn das darin enthaltene Script verbiegt die HTML-Struktur der Fritz!Box derart, dass die neuen Konfigurations- und Statusseiten des LCR vom Webserver der Fritz!Box angezeigt werden.
Wenn Sie sich mit Ihrem Webbrowser auf den Fritz!Box-Konfigurationsseiten befinden, genügt ab sofort die Eingabe der Adresse fritz.box/tsb.htm, um die Konfiguration des LCR-Moduls zu starten. Durch die Integration in die Webstruktur der Fritz!Box hat die LCR-Konfiguration Zugang zu allen Statusinformationen und Systemdateien der Box.
Für interessierte Leser haben wir das Script abgebildet, mit dem Becker eigene Seiten in die HTML-Struktur der Fritz!Box einbindet. Durch symbolische Links und mount-Befehle leitet er das Root-Verzeichnis des Webservers aus dem statischen Speicher der Fritz!Box in eine Kopie im RAM um. Dadurch kann er dann eigene Webseiten unter fritz.box/tsb.htm vom Webserver der Box ausgeben lassen.
#!/bin/sh
# Fritz!Box WWW Seiten erweitern
# Copyright 2006 by Harald Becker - www.Telefonsparbuch.de
# Verzeichnisstruktur:
# /usr/www: html -> /var/html
# /var : html -> /usr/www/1und1
# /usr/www/1und1: html -> /usr/www/all/html
# /usr/www/1und1/cgi-bin -> ../../cgi-bin
TSBserver="lcr.telefonsparbuch.de"
TSBurl="http://$TSBserver/software/fritzbox"
TSBfile="xrelease_lcr_updater.tar"
echo "TSB: TSB Verzeichnisse anlegen"
for DIR in /var/tmp/tsb /var/tmp/tsb/data /var/tmp/tsb/www /var/tmp/tsb/www/htmltsb /var/tmp/tsb/www/cgi-bin /var/tmp/tsb/www/cgi-bin/tsb; do
echo "TSB: mkdir -m 777 $DIR"
if [ ! -d $DIR ]; then mkdir -m 777 $DIR; fi
done
echo "TSB: Verbindung zum Server testen (ping $TSBserver)"
while !(ping -c 1 $TSBserver); do sleep 5; done
echo "TSB: Lade LCR Updater Packet: $TSBurl/$TSBfile"
wget -qO /var/tmp/tsb.tar "$TSBurl/$TSBfile"
echo "TSB: TAR Archiv auspacken"
tar -C /var/tmp -xf /var/tmp/tsb.tar
echo "TSB: nicht mehr benötigte Dateien löschen"
echo "rm -f /var/tmp/tsb.tar"
rm -f /var/tmp/tsb.tar
echo "TSB: Dateirechte setzen"
chmod -R 444 /var/tmp/tsb/www/*
chmod 755 /var/tmp/tsb/www/cgi-bin
chmod 755 /var/tmp/tsb/www/cgi-bin/tsb
chmod 755 /var/tmp/tsb/*
chmod 755 /var/tmp/tsb/www/cgi-bin/tsb/*
basedir="/var/tmp/tsb/www"
echo "TSB: Links zu Originaldateien erstellen"
for file in /usr/www/cgi-bin/*; do
if [ "${file#/usr/www/cgi-bin/system_status}" = "$file" ]; then
destfile="${file##/usr/www/cgi-bin/}"
echo "TSB: cp $file $basedir/cgi-bin/$destfile"
cp $file $basedir/cgi-bin/$destfile
chmod 555 $basedir/cgi-bin/$destfile
fi
done
echo "TSB: ln -s /usr/bin/system_status $basedir/cgi-bin/system_status"
rm -f $basedir/cgi-bin/system_status
ln -s /usr/bin/system_status $basedir/cgi-bin/system_status
echo "TSB: ln -s /usr/www/html $basedir/html";
ln -s /usr/www/html $basedir/html
for name in 1und1 1und1/cgi-bin avm avm/cgi-bin; do
echo "TSB: create dir: $basedir/$name"
mkdir -m 777 "$basedir/$name"
done
# mount setzen
echo "TSB: binde original Webseitenstruktur ein"
for name in 1und1 avm; do
echo "TSB: mount -o bind $basedir/$name /usr/www/$name"
mount -o bind $basedir/$name /usr/www/$name
echo "TSB: ln -s /usr/www/all/html/index.html $basedir/$name/index.html"
ln -s /usr/www/all/html/index.html $basedir/$name/index.html
echo "TSB: ln -s /usr/www/all/html $basedir/$name/html"
ln -s /usr/www/all/html $basedir/$name/html
echo "TSB: ln -s /var/tmp/tsb/www/cgi-bin/tsb/_index.html /var/tmp/tsb/www/$name/tsb.htm"
ln -s /var/tmp/tsb/www/cgi-bin/tsb/_index.html /var/tmp/tsb/www/$name/tsb.htm
echo "TSB: ln -s /var/tmp/tsb/www/cgi-bin/tsb/_index.html /var/tmp/tsb/www/$name/tsb.html"
ln -s /var/tmp/tsb/www/cgi-bin/tsb/_index.html /var/tmp/tsb/www/$name/tsb.html
echo "TSB: ln -s /var/tmp/tsb/www/htmltsb /var/tmp/tsb/www/$name/htmltsb"
ln -s /var/tmp/tsb/www/htmltsb /var/tmp/tsb/www/$name/htmltsb
done
echo "mount -o bind /var/tmp/tsb/www/cgi-bin /usr/www/cgi-bin"
mount -o bind /var/tmp/tsb/www/cgi-bin /usr/www/cgi-bin
for name in 1und1/cgi-bin avm/cgi-bin; do
for file in $basedir/cgi-bin/*; do
destfile=${file##$basedir/cgi-bin/}
echo "TSB: ln -s ../../cgi-bin/$destfile /var/tmp/tsb/www/$name/$destfile"
ln -s ../../cgi-bin/$destfile /var/tmp/tsb/www/$name/$destfile
done
done
echo "TSB: install done."