calllog mit WOL des VDR mit inverssuche DACH, NL, F slimserver mit Portforwarding
Hallo Forum,
hier meine Calllog Variante:
Rufweiterleitung kann aus der Ferne aktiviert werden. Hierzu muss eine MSN mit Rufnummernübermittlung angerufen werden. Ein Anruf auf eine andere MSN löscht die Anrufweiterleitung wieder.
Telefonbuch der FritzBox wird genutzt.
falls keine Einträge vorhanden ist suche in zusätzlicher Datei ( Phonebook ).
Inverssuche für die Länder: Deutschland, Österreich, Schweiz, Niederlande und Frankreich
Gefundene Treffer werden in der Phonebook Datei gespeichert.
Ausgabe des Anrufers auf Squeezeboxradio, touch, SB3 Logitech streaming Server alias slimserver
Ausgabe des Anrufers auf einem Fernseher an einem VDR ( reelbox von reel multimedia )
Wake on call des VDR Videorecorders von internen MSN und von externer Handynummer. Bei interner MSN wird der VDR geweckt. Bei externer Nr (Handy) wird der VDR geweckt und die Firewall der Fritzbox für 10 Minuten geöffnet ( Portforwarding) und danach wieder geschlossen.
Alle anrufe werden protokolliert und liegen auf der Fritzbox im MS-DOS Format vor.
Hier das calllog Script:
Code:
#!/bin/sh
# cat calllog > /var/flash/calllog
# sh /var/flash/calllog "ANRUFERNR" "MSN" "LEITUNG" "" "TB"
ZEIT=`date +\"%H:%M\"`
echo ""$1" ;"$2" ; "$3"; "$4"; "$5";" >> /var/tmp/wol.log
# echo ""$1" ;"$2" ; "$3"; "$4"; "$5";"
caller="$1"
name="$5"
# set -e
# normalize caller
case "$caller" in
0049*)
caller=0${caller#*0049}
;;
49????????*)
caller=0${caller#*49}
;;
[1-9]????*)
caller=0${caller}
;;
[1-9]*)
caller=${prefix}${caller}
;;
esac
case "$2" in
3???MSN??)
# RUFUMLEITUNG setzen
if [ -z "$1" ]
then
echo "keine Absenderkennung"
else
echo "ATH0" | nc 127.0.0.1 1011
echo "ATD#451*"$1*"" | nc 127.0.0.1 1011
echo "ATH0" | nc 127.0.0.1 1011
fi
;;
3?andereMSN)
# RUFUMLEITUNG löschen
echo "ATH0" | nc 127.0.0.1 1011
echo "ATD#401**#91**" | nc 127.0.0.1 1011
echo "ATH0" | nc 127.0.0.1 1011
;;
0??WOLMSN???)
# WOL Prüfung echo "Booting PC"
if [ $1 = "01HANDYNR" ] || [ $1 = "01andereHandyNR" ] || [ $1 = "0dritteHandynr" ] || [ $1 = "0interneMSN" ]
then
/usr/bin/ether-wake -b 00:e0:f4:1f:6b:32
sleep 1
/usr/bin/ether-wake -b 00:E0:F4:1F:6B:32
echo wol gesendet
if [ $1 = "01Handynr" ] || [ $1 = "01anderehandnr" ] || [ $1 = "01drittehandynr" ]
then
echo "$ZEIT REMOTE WOL !!!!" | /var/media/ftp/Corsair-FlashVoyager-01/bin/busybox1.9.0 unix2dos >> /var/media/ftp/Corsair-FlashVoyager-01/user/pub/notice/info/anrufe.txt
/var/media/ftp/Corsair-FlashVoyager-01/bin/reelon.sh &
fi
exit 0
fi
;;
*)
echo "Falsche MSN" >/dev/null 2>/dev/null
;;
esac
if [ -z "$1" ]
then
caller="Anonym";
name="Anonym";
else
if [ -z "$name" ]
then
name=`cat /var/media/ftp/Corsair-FlashVoyager-01/phonebook.txt | fgrep "$1" | sed "s/|\ [0-9\ ]*//"`;
fi
if [ -z "$name" ]
then
case "$caller" in
0031*)
# echo Niederlande;
url="http://www.detelefoongids.nl/en/$1/11-2/?oWhat=$1&oWhere=";
name=$(wget -q -O - "$url" | grep -A 1 class=\"hidden\ fullName\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/[^! -~]//g;s/*//g;');
;;
0033*)
# echo Frankreich, hier nur Nummern ohne Landeskennung;
url="http://www.118218.fr/recherche/?q=$(echo $1 | sed -e 's/0033/0/g')&rewrited=&rewritedLocality=&address=&b=0&typ=r&st=I";
name=$(wget -q -O - "$url" | grep -e 'arg1\[0\] = \"'| sed -e 's/arg1\[0\]\ =//;s/";//g;s/"//g');
;;
0041*)
# echo bin in Schweiz;
url="http://allversal.ch/telsearch.php?tel=$1";
name=$(wget -q -O - "http://allversal.ch/telsearch.php?tel=$1" );
;;
0043*)
# echo bin in AUSTRIA;
url="http://www.telefonabc.at/result.aspx?what=$1&where=&exact=false&firstname=&lastname=&street=&appendix=&telpre=&telnr=&branch=&p=0&l=&sid=&did=&cc="
name=$(wget -q -O - "$url" | grep -A 1 class=\"given-name\" | sed -e 's/<[^<]*>/\ /g;s/^[a-zA-Z0-9]*//;s/ / /g;s/[^! -~]//g;s/-//g;s/!//g;s/ <//g')
;;
*)
url="http://www.dasoertliche.de/Controller?la=de&kw=$1&form_name=search_nat"
name=$(wget -q -O - "$url" | grep class=\"preview | sed -e 's/\ / /g;s/[ ]//g;s/^[ ]//g;s/<[^<]*>//g;s/ / /g;' | tr "\015" "\012")
if [ -z "$name" ]
then
url="http://www.klicktel.de/inverssuche/index/search?method=searchSimple&_dvform_posted=1&phoneNumber=$1"
name=$(wget -q -O - "$url" | grep "namelink" | sed 's/<[^<]*>/\ /g;s/ //;s/ /, /');
# echo bin in DE2 $name $1 $caller
fi
;;
esac
if [ -z "$name" ]
then
name="Unbekant";
else
squezname="$(echo "$squezname" | sed -e "N;s/\n//g")";
echo ""$name"| "$1"" >> /var/media/ftp/Corsair-FlashVoyager-01/phonebook.txt ;
fi
fi
fi
echo "$ZEIT Anrufer $name $1" | /var/media/ftp/Corsair-FlashVoyager-01/bin/busybox1.9.0 unix2dos >> /var/media/ftp/Corsair-FlashVoyager-01/user/pub/notice/info/anrufe.txt
squezname="$(echo "$name" | sed -e "s/ /_/g")"
unten="$squezname%20ruft%20an"
oben="Anruf%20von%20"$1""
urlsquez="http://IPnr.Squezeboxserver_UND_VDR:9000/status.txt?p0=display&p1='$oben'&p2='$unten'&p3=15&player=*"
wget -s $urlsquez
if [ "$?" -ne "0" ]; then
echo "VDR down" >/dev/null 2>/dev/null
else
# echo "VDR läuft"
echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
sleep 5
echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
sleep 5
echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
sleep 5
echo -e "MESG Anruf von "$name" $1 an $2 \n quit" | busybox nc 192.IPnr.Squezeboxserver_UND_VDR.3 2001
wget -s $urlsquez
fi
exit 0
Hier das Script das nach dem Wake On Call das Portforwarding aktiviert und nach 540 Sekunden wieder zu macht.
reelon.sh
Code:
#!/bin/sh
# wait till server is reachable
while !(ping -c 1 192.IP.VDR.3); do
sleep 10
done
# /var/media/ftp/Corsair-FlashVoyager-01/bin/rules.sh 80 80 1 tcp 192.IP.VDR.3 HTML
ctlmgr_ctl w forwardrules settings/rule0/activated 1
# echo aktiviere
sleep 540
# /var/media/ftp/Corsair-FlashVoyager-01/bin/rules.sh 80 80 0 tcp 192.IP.VDR.3 HTML
ctlmgr_ctl w forwardrules settings/rule0/activated 0
exit
Hier das Script welches die ar7.cfg entsprechend ändert Wird nicht mehr benötigt siehe folgenden Hinweis:
ACHTUNG: WER sich vertippt zerstört seine ar7.cfg und hat dann ein echtes Problem mit der FritzBox! ZWEITENS. DER EINTRAG für die Portweiterleitung muss zuvor manuell in der GUI der Fritzbox richtig eingetragen werden!!! Dieses Script hatte ich im Internet mal gefunden. Deshalb sind da noch Teile die nicht genutzt werden.
rules.sh
Code:
#!/bin/sh
# DIESES script wird nicht mehr benötigt!!!
REAL="/var/flash/ar7.cfg"
TEMP="/var/tmp/ar7.tmp"
TEMPNEU="/var/tmp/ar7NEU.tmp"
if [ "$1" != "" ]; then
echo "Commandline OK! Performing Action"
else
echo ""
echo "Usage: rule [SPort] [DPort] [0|1] [udp|tcp] [ip] [service]"
echo ""
echo "[SPort] = Incoming Port"
echo "[DPort] = Outgoing Port"
echo "[0|1] = 1 for set, 0 for delete"
echo "[udp|tcp] = UDP or TCP"
echo "[ip] = IP address to forward"
echo "[service] = Identify"
echo ""
echo "sample: rule 22 22 1 tcp 192.168.178.253 SSH"
exit
fi
#auslesen ob es diesen Eintrag schon gibt
cat $REAL > $TEMP
grep -e "# tcp 0.0.0.0:8080 192.IP.VDR.3:80 0 # HTTP-Server" $REAL
CHECKoff=$?
echo $CHECKoff
grep -e "tcp 0.0.0.0:8080 192.IP.VDR.3:80 1 # HTTP-Server" $REAL
CHECKon=$?
echo $CHECKon
# off und aus prüfen
if [ "$CHECKoff" = "0" ] && [ "$3" = "0" ]; then
echo "Eintrag bereits deaktiv. Nichts zu tun!"
# exit
fi
# on und an prüfen
if [ "$CHECKon" = "0" ] && [ "$3" = "1" ]; then
echo "Eintrag bereits aktiv. Nichts zu tun!"
# exit
fi
# anschalten wenn off
if [ "$CHECKoff" = "0" ] && [ "$3" = "1" ] ; then
echo "Eintrag wird aktiviert"
sed -e "s/# tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 0 # HTTP-Server/tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 1 # HTTP-Server/g" $TEMP > $TEMPNEU
echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; added to ar7.cfg'
cat $TEMPNEU > $REAL
fi
# ausschalten wenn on
if [ "$CHECKon" = "0" ] && [ "$3" = "0" ] ; then
echo "Eintrag wird DEaktiviert"
sed -e "s/tcp 0.0.0.0\:8080 192.IP.VDR.3\:80 1 # HTTP-Server/# tcp 0.0.0.0\:8080 192.IP.VDR.178.3\:80 0 # HTTP-Server/g" $TEMP > $TEMPNEU
echo 'rule "'$4' 0.0.0.0:'$1' '$5':'$2' 0 # '$6'"; removed from ar7.cfg'
cat $TEMPNEU > $REAL
fi
#Änderungen übernehmen
dsld -I
exit
Kleiner Tipp am Rande, ich prüfe beim Neustarten der FritzBox ob die Portweiterleitung geschaltet sein sollte und falls JA, wird diese sofort geschlossen. Dies ist für den Fall, dass ich die Portfreischaltung aktiviere und aus irgendeinem Grunde die Fritzbox einen Neustart macht!!!
reeloff.sh
Code:
#!/bin/sh
# /var/media/ftp/Corsair-FlashVoyager-01/bin/rules.sh 80 80 0 tcp 192.IP.VDR.3 HTML
ctlmgr_ctl w forwardrules settings/rule0/activated 0
exit
Und hier noch die BINARY Dateien welche auf meiner 7270 V1 ohne Probleme laufen:
Anhang anzeigen busybox1.9.zip
Ich hoffe, einer kann es brauchen und natürlich bin ich für Anmerkungen dankbar.
Viele Codeschnipsel habe ich mir hier im Forum gesucht und verwendet. Danke nochmals für alle die mir geholfen hatten.
Insgesamt werden einige MSN benötigt!
Über die Portweiterleitung kann ich aus der Ferne den Videorecorder programmieren. Bitte im VDR Web Frontend des VDRADMIN noch die Passwortabfrage einschalten !!!!!
Schönes Wochenende.