Meine Lösung ist zugegeben nicht optimal, aber so funktioniert es erstmal auch und ich bin relativ zufrieden. (Das mit dem Calltrough wollte ich nicht, denn dann muss die Box ja abnehmen oder? Also ich würde damit immer ein bisschen Zahlen müssen, wenn ich vom Handy aus anrufe... das will ich natürlich vermeiden)
Ich will hier mal meine Lösung dieses Problems posten:
Ich habe mir in root/usr/sbin beim modden eine Datei "remoteConect" mit folgendem Inhalt angelegt (kann man bestimmt noch optimieren, aber so läufts jedenfalls auf der Box):
Code:
#!/bin/sh
# remoteConect
# Script to Start/Close the Remote Conection to FritzBox an LAN
TEMP_DIR=/tmp
TEMP_FILE=remoteConect
SCRIPT_DIR=/mod/usr/sbin
START_FILE=remoteConectStart
STOP_FILE=remoteConectStop
SLEEP=10
if [ $# = 0 ]
then
if cat $TEMP_DIR/$TEMP_FILE 2> /dev/null
then
$SCRIPT_DIR/$STOP_FILE
rm $TEMP_DIR/$TEMP_FILE 2> /dev/null
else
$SCRIPT_DIR/$START_FILE
touch $TEMP_DIR/$TEMP_FILE
fi
else
if [ $1 = "help" ]
then echo "(status|start|stop|restart)"
else
case $1 in
"restart")
$SCRIPT_DIR/$STOP_FILE
sleep $SLEEP
$SCRIPT_DIR/$START_FILE
touch $TEMP_DIR/$TEMP_FILE
;;
"start")
$SCRIPT_DIR/$START_FILE
touch $TEMP_DIR/$TEMP_FILE
;;
"stop")
$SCRIPT_DIR/$STOP_FILE
rm $TEMP_DIR/$TEMP_FILE 2> /dev/null
;;
"status")
if cat $TEMP_DIR/$TEMP_FILE 2> /dev/null
then echo "started"
else echo "stoped"
fi
;;
esac
fi
fi
und diese anschließend mit
Code:
chmod gou+x root/usr/sbin/remoteConect
ausführbar gemacht.
Und nach dem modden in der Box über telnet mit
Code:
cat /var/flash/debug.cfg > /tmp/debug.cfg
vi /tmp/debug.cfg
folgenden Inhalt in die debug.cfg aufgenommen:
Code:
echo "wget http://LOGINNAME:[email protected]/nic/update?hostname=DOMAINNAME" > /mod/usr/sbin/remoteConectStart
echo "/etc/init.d/rc.webcfg start" >> /mod/usr/sbin/remoteConectStart
echo "/etc/init.d/rc.dropbear start" >> /mod/usr/sbin/remoteConectStart
echo "/etc/init.d/rc.openvpn-lzo start" >> /mod/usr/sbin/remoteConectStart
echo "matrixtunnel -A KEYDATEI -p KEYDATEI -d 0.0.0.0:443 -r FRITZBOXIP:81 -P /tmp/matrixssl.pid" >> /mod/usr/sbin/remoteConectStart
chmod gou+x /mod/usr/sbin/remoteConectStart
echo "/etc/init.d/rc.webcfg stop" > /mod/usr/sbin/remoteConectStop
echo "/etc/init.d/rc.dropbear stop" >> /mod/usr/sbin/remoteConectStop
echo "/etc/init.d/rc.openvpn-lzo stop" >> /mod/usr/sbin/remoteConectStop
echo "kill $(/tmp/matrixssl.pid)" >> /mod/usr/sbin/remoteConectStop
echo "rm /tmp/matrixssl.pid" >> /mod/usr/sbin/remoteConectStop
chmod gou+x /mod/usr/sbin/remoteConectStop
(interessant für dieses Problem sind alle Zeilen mit
echo "..." >> /mod/usr/sbin/remoteConectStart bzw.
echo "..." >> /mod/usr/sbin/remoteConectStop damit schreibt man die auszuführenden Befehle in das Start bzw. Stop Script)
Zu beachten ist, das nur beim ersten Eintrag in das jeweilige Script ein '>' stehen darf. Alle folgenden Einträge müssen mit '>>' gemacht werden, da sonst der bestehende Inhalt überschrieben wird.
nun mit
Code:
cat /tmp/debug.cfg > /var/flash/debug.cfg
die debug.cfg neu schreiben. Ab jetzt ist beim Neustart der Box das Script "remoteConect" benutzbar.
Das funktioniert folgender maßen:
- Parameterloser Aufruf (remoteConect), startet abwechselnd das start bzw. stop Script
- mit dem Parameter start, stop, restart (z.B. remoteConect start) kann das script den entsprechenden Anweisungen folge leisten
- mit status (remoteConect status) läßt sich der aktuelle Status "started" bzw. "stoped" anzeigen
- mit help (remoteConect help) bekommt man eine Übersicht der eben genannten Aufrufsmöglichkeiten angezeigt
Nun kann man dieses Script in der Listeners Config eintragen:
Code:
in:request HANDYNUMMER ^ /usr/sbin/remoteConect
Wenn ich nun meinen Telefonanschluß vom Handy aus anklingel, werden (nach der oben geschriebenen Konfiguration) abwechselnd folgende Dinge ausgeführt (natürlich nur einmal. Beim nächsten anklingeln wird dann das andere Ausgeführt - logisch!):
- DynDNS IP wird aktualisiert
- DS_Mod Web Oberfläche wird gestartet
- SSH Server (dropbear) wird gestartet
- openVPN wird gestartet
- matrixtunnel zur DS-Mod Web Oberfläche wird aufgebaut
bzw.
- DS_Mod Web Oberfläche wird beendet
- SSH Server (dropbear) wird beendet
- openVPN wird beendet
- matrixtunnel zur DS-Mod Web Oberfläche wird wieder geschlossen
Was ich jetzt eigentlich nur noch bräuchte, währe eine Bestätigung der Fritzbox an mein Handy über einen der beiden Statuse (wie auch immer das gramatikalisch ausgedrückt wird ;-)). Also z.B. immer beim Starten aller Dienste (remoteConectStart) soll an die Nummer, die den Aufruf gestartet hat nur einmal angeklingelt werden.