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."