source: ipk/source.sh4/tools_callmonitor/_path_/usr/local/share/titan/plugins/callmonitor1/fritzbox_msg_new.sh @ 42829

Last change on this file since 42829 was 42829, checked in by karlo, 6 years ago

fix callmon (html -> XML)

  • Property svn:executable set to *
File size: 31.8 KB
Line 
1#!/bin/sh
2
3CONFIG=`echo "$0callmon.conf" | sed s/fritzbox_msg_new.sh//`
4NC=`echo "$0nc" | sed s/fritzbox_msg_new.sh//`
5if [ ! -x $NC ] ; then
6   NC="nc"
7fi
8
9ICONV=`echo "$0iconv" | sed s/fritzbox_msg_new.sh//`
10CURL=`echo "$0curl" | sed s/fritzbox_msg_new.sh//`
11if [ ! -x $CURL ] ; then
12   CURL="curl"
13fi
14LPATH=`echo "$0" | sed s/'\/fritzbox_msg_new.sh'//`
15LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$LPATH
16export LD_LIBRARY_PATH
17
18. $CONFIG
19#. ./callmon.conf
20#
21#-------------------------------------------------------------------------------
22#
23# To enable the callmonitor on your fritzbox use your telephone and call
24#    #96*5*         to enable
25#    #96*4*         to disable
26#
27#
28#SETUP---start------------------------------------------------------------------
29#
30##FRITZBOXIP=10.0.0.99   #IP of your fritzbox
31TELDPORT=1012            #callmonitor port (default 1012)
32#
33#SETUP---end--------------------------------------------------------------------
34#
35#
36#Options---start----------------------------------------------------------------
37#
38Version=v2.60                   #Zur Versionsanzeige im telnet
39debug=0                             #wenn debug auf 1 steht wird am TV nichts angezeigt
40##Ziel=4711                         #bitte Rufnummer eintragen die Überwacht werden soll
41if [ ! $Ziel ]; then
42    Ziel=4711
43fi
44##Ziel_2=4711                   #2te Rufnummer die Überwacht werden soll
45if [ ! $Ziel_2 ]; then
46    Ziel_2=4711
47fi
48                                            #wenn keine zweite dann gleiche nochmal eintragen!
49##Alle=1                  #wenn hier eine 1 steht werden alle Rufnummern überwacht
50                      #unabhängig von Ziel und Ziel_2
51##monRing=1               #eingehende Anrufe anzeigen
52##muteRing=0              #Ton aus bei Anruf
53##monCall=0               #ausgehende Anrufe anzeigen
54monDisconnect=0       #Beenden eines Anrufes anzeigen. Hier ist noch ein Bug drin!
55                      #Es werden immer alle Gespräche überwacht (alle Rufnummern
56                      #werden überwacht- Ziel und Ziel_2 funktionieren hier nicht
57                      #). Ich habe das deshalb immer auf 0.
58ip=127.0.0.1            #ip Adresse der Dreambox
59##anzeigetimeout=10       #Wie lange soll die Meldung angezeigt werden?
60##anzeigewennaus=0        #Wenn 1 dann werden alle Meldungen gespeichert und angezeigt
61                      #wenn die Dreambox eingeschaltet wird (kann ganz schön viel
62                      #werden!). Wenn 0 werden die Meldungen nicht angezeigt wenn
63                      #die Box aus war als z.B. ein Anruf eingegangen ist.
64                      #Empfehlen tue ich eine 0. Wer weis was passiert wenn man im
65                      #Urlaub ist und etliche Meldungen gespeichert werden.
66uebersichtsseite=0    #Wenn anzeige wenn aus und uebersichtsseite 1 ist, dann werden
67                      #nach dem einschalten der Dream aus dem Standy alle verpassten
68                      #Anrufe in einer Übersichtseite angezeigt mit Datum und Uhrzeit
69                      #Hierzu muss OpenPanel installiert sein.
70                      #Hier muss aber noch ein Start Script erstellt werden!                 
71loginname=root        #Loginname für Dreambox (Beispiel:root)
72passwort=kathrein       #passwort für Dreambox (Beispiel:dreambox)
73vorwahl=030                     #Eigene Vorwahl eintragen
74#
75#Options---end------------------------------------------------------------------
76#
77#
78#---- do not change anything below here ----
79#
80#additional paths to files we use (will be created automatically if not present)
81#detecting Dreambox-Type (DM7020 or DM7000 or DM500 or DM600PVR)
82 FRITZCACHE=/tmp/fritzbox.cache              #stores successfull reverse searches
83#FRITZBUCH=/var/fritzbuch.tele               #original
84 FRITZBUCH=/mnt/swapextensions/fritzbuch.tele #TitanNit
85 TMPFILE=/tmp/fritzbox.tmp                   #stores page from wget command
86 TMPSTATUS=/tmp/fritzdream.status            #status der Dreambox (standby usw)
87 TMPRING=/tmp/tmpring.xml                    #stores missed calls
88 TMPINCOMING=/tmp/ringin.tmp                     #for checking ring overview
89
90NULL=/dev/null                              #'NULL'
91SCRIPT=$0                                   #full path to this script
92export SCRIPT
93
94#-------------------------------------------------------------------------------
95#definition of the reverse search online (GOYELLOW.DE)
96#-------------------------------------------------------------------------------
97SEARCHPRV="GoYellow"
98SEARCHURL="http://www.goyellow.de/schnellsuche/?LIP=simpleSearch&MDN="
99SEARCHURL="http://www.goyellow.de/inverssuche/?TEL="
100SEARCHPDETAIL="Detailinformationen"
101SEARCHERR="Keine.Einträge.gefunden"        #replace spaces with dots (regex)
102#-------------------------------------------------------------------------------
103#check if FritzBox! is up and callmonitor port is reachable. if not exit.
104#-------------------------------------------------------------------------------
105#cat /dev/null | ./nc $FRITZBOXIP $TELDPORT
106cat /dev/null | $NC $FRITZBOXIP $TELDPORT
107if [ $? != 0 ]; then
108 echo "Fritzbox (" $FRITZBOXIP ") ist nicht auf Port" $TELDPORT "erreichbar!"
109 echo "Skript wird beendet!"
110 FRITZUP=down
111 exit 1
112else
113 FRITZUP=up
114fi
115#-------------------------------------------------------------------------------
116#if script is called without any parameters show help text
117#-------------------------------------------------------------------------------
118if [ "$1" = "" ]; then
119 echo
120 echo "Usage: $SCRIPT START STOP CLEANUP SORTNAME SORTNUMBER TEST [phonenumber]"
121 echo
122 echo "START               Start Script and deamonize"
123 echo "STOP                kill all processes we created"
124 echo "CLEANUP             delete all temporary files incl. cache"
125 echo "SORTNAME            sort cache file by name"
126 echo "SORTNAME -r         sort cache file by name (reverse)"
127 echo "SORTNUMBER          sort cache file by number"
128 echo "SORTNUMBER -r       sort cache file by number (reverse)"
129 echo "TEST [phonenumber]  For testing connectivity and trying the search"
130 echo "loadPhoneBook"
131 echo
132fi
133#-------------------------------------------------------------------------------
134#reading function to interpret the data read from FritzBox! callmonitor port
135#-------------------------------------------------------------------------------
136mysearch () {
137
138if [ "$1" = "Unbekannt" ]; then
139   NAME="ohne Rufnummer"
140   ADDRESSE=""
141else
142   #remove spaces from $1 and replace '+49' with ''0'
143   NUMMER=`echo $1 | sed -e "s@\ @@g" -e "s@+49@0@"`
144   #UH
145   NUMMER=`echo $NUMMER | sed -e "s/^1/${vorwahl}1/g"`
146   NUMMER=`echo $NUMMER | sed -e "s/^2/${vorwahl}2/g"`
147   NUMMER=`echo $NUMMER | sed -e "s/^3/${vorwahl}3/g"`
148   NUMMER=`echo $NUMMER | sed -e "s/^4/${vorwahl}4/g"`
149   NUMMER=`echo $NUMMER | sed -e "s/^5/${vorwahl}5/g"`
150   NUMMER=`echo $NUMMER | sed -e "s/^6/${vorwahl}6/g"`
151   NUMMER=`echo $NUMMER | sed -e "s/^7/${vorwahl}7/g"`
152   NUMMER=`echo $NUMMER | sed -e "s/^8/${vorwahl}8/g"`
153   NUMMER=`echo $NUMMER | sed -e "s/^9/${vorwahl}9/g"`
154   echo "$NUMMER"
155   echo "Searching for $NUMMER in cache file..."
156   if [ ! -f $FRITZBUCH ]; then  touch $FRITZBUCH; fi
157    #try to get caller-id via $NUMBER from $FRITZBUCH
158    NAME=`grep $NUMMER $FRITZBUCH | sed -e "s@$NUMMER\#@@" -e "s@;@\n@g"`
159    ADDRESSE=`echo $NAME | sed -e 's/.*->//g'`
160    NAME=`echo $NAME | sed -e 's/->.*//g'`
161    echo -e
162    echo -e "NAME nach Cache Suche: $NAME"
163    echo -e "ADRESSE nach Cache Suche: $ADDRESSE"
164   
165   if [ "$NAME" = "" ]; then
166    #try to get caller-id of $NUMMER via internet
167    echo "Searching for $NUMMER via $SEARCHPRV"
168    wget "$SEARCHURL$NUMMER"  -O $TMPFILE
169    #extract caller-id from online result
170    #UH20100112
171#    NAME=`grep $SEARCHPDETAIL $TMPFILE | head -n 1 | sed -e "/</{; :loop; s/<[^<]*>//g; /</{; N; b loop; }; };"`
172#    ADDRESSE=`grep "address" $TMPFILE| head -n 1`
173#    ADDRESSE=`echo $ADDRESSE | sed 's/<[^>]*>/ /g'`
174
175    NAME=`grep $SEARCHPDETAIL $TMPFILE | head -n 1 | sed -e 's/.*Detailinformationen zu //g' | sed -e 's/ in .*//g'`
176    STRASSE=`grep '<span class="street street-address">' $TMPFILE | head -n 1 | sed -e 's/<span class="street street-address">//g' | sed -e 's/<\/span>.*//g'`
177    POSTCODE=`grep '<span class="postcode postal-code">' $TMPFILE | head -n 1 | sed -e 's/.*<span class="postcode postal-code">//g' | sed -e 's/<\/span>.*//g'`
178    ORT=`grep '<span class="city locality">' $TMPFILE | head -n 1 | sed -e 's/.*<span class="city locality">//g' | sed -e 's/<\/span>.*//g'`
179    ADDRESSE="$STRASSE~n$POSTCODE $ORT"
180
181    if [ "$NAME" = "" ]; then
182     if grep $SEARCHERR $TMPFILE > $NULL; then
183      NAME="Unbekannt"
184      ADDRESSE=""
185     fi;
186    fi;
187    if [ "$NAME" = "" ]; then
188     NAME="Unbekannt"
189     ADDRESSE=""
190    else
191     #dirty workarround to fix 'new-lines' when multiple caller-ids exist
192     #to make sure only 1 line will be written to cache file
193     #NAME=`printf %s***** $NAME | sed -e "s@\*\*\*\*\*@ @g;"
194     #echo "Name gefunden in Goyellow: " $NAME
195     echo -e
196     echo -e "$NUMMER#$NAME->$ADDRESSE" >> $FRITZCACHE
197     export NAME
198     export ADDRESSE
199    fi;
200   fi;
201fi;
202};
203
204
205rdom () { local IFS=\> ; read -d \< E C ;}
206
207loadXML(){
208        #ID="$1"
209        echo "Lese ID: $1"
210        $CURL --data "sid=$SID&pbid=$1" http://$FRITZBOXIP:49000/phonebook.lua  > /tmp/curlhelp7.tmp
211               
212         while rdom; do
213            if [[ $E = realName ]]; then
214                name=$C
215                #exit
216            fi
217            if [[ $E = number* ]]; then
218                type=`echo "$E" | cut -d'"' -f2 | sed s/" "//g | sed s/"home"/"privat"/g | sed s/"work"/"geschaeftl."/g | sed s/"mobile"/"mobil"/g `
219                nummer=$C
220                tel=`echo $nummer | sed s/"+49"/"0"/g| sed s/" "//g`
221                echo "$tel#$name->$type"  >> $FRITZBUCH
222            fi
223        done < /tmp/curlhelp7.tmp
224};
225
226loadXMLsh4(){
227        echo "Lese ID: $1"
228        $CURL --data "sid=$SID&pbid=$1" http://$FRITZBOXIP:49000/phonebook.lua  > /tmp/curlhelp7.tmp
229        while read line; do
230                X=`echo $line | grep realName | wc -c`
231                if [[ $X -gt 0 ]]; then
232                        #E=`echo $line | cut -d'<' -f2 | cut -d'>' -f1`         
233                        C=`echo $line | cut -d'>' -f2 | cut -d'<' -f1`
234                        name=$C
235                        #echo $name
236                fi
237               
238                X=`echo $line | grep "number type" | wc -c`
239                if [[ $X -gt 0 ]]; then
240                        type=`echo $line| cut -d'"' -f2 | sed s/" "//g | sed s/"home"/"privat"/g | sed s/"work"/"geschaeftl."/g | sed s/"mobile"/"mobil"/g `
241                        tel=`echo $line | cut -d'>' -f2 | cut -d'<' -f1`
242                        echo "$tel#$name->$type"  >> $FRITZBUCH
243                fi
244                   
245        done < /tmp/curlhelp7.tmp
246};
247
248loadFritzBook70 () {
249    echo "Version 70"
250               
251        Challenge=`wget -O - "http://$FRITZBOXIP/login_sid.lua" 2>/dev/null | grep Challenge | cut -d"<" -f6 | cut -d">" -f2`
252        Passwd="$FritzPass"
253        # login aufbauen und hashen
254        echo "login aufbauen und hashen start"
255        CPSTR="$Challenge-$Passwd"
256        MD5=`echo -n $CPSTR | $ICONV -f ISO8859-1 -t UTF-16LE > /tmp/helpx; md5sum /tmp/helpx | awk '{print substr($0,1,32)}'`
257        RESPONSE="$Challenge-$MD5"
258
259        POSTDATA="username=$FritzUser&response=$RESPONSE"
260
261        SID=`wget -O - --post-data="$POSTDATA" "http://$FRITZBOXIP/login_sid.lua" 2>/dev/null  | grep SID | cut -d"<" -f4 | cut -d">" -f2`
262
263        echo "login aufbauen und hashen ende SID:$SID"
264             
265        BOOKID=-1       #Liste mit möglichen IDs
266        $CURL --data "sid=$SID&pbid=$BOOKID" http://$FRITZBOXIP:49000/phonebook.lua | grep "id:"  > /tmp/curlhelp1.tmp
267        #langsamere Routine nur bei sh4-Boxen verwenden
268        sh4=`cat /proc/cpuinfo | grep "sh4" | wc -c`
269       
270        while read line
271                do
272                        BOOKID=`echo $line | cut -d':' -f2 | sed s/" \, name"//g`
273                        NAME=`echo $line | cut -d':' -f3`
274                        echo "Lese $NAME BookID: $BOOKID"
275                        if [ $sh4 -eq 0 ]; then
276                                loadXML $BOOKID
277                        else
278                                loadXMLsh4 $BOOKID
279                        fi
280                done < /tmp/curlhelp1.tmp     
281
282       
283};
284
285loadFritzBook () {
286 if [ $usePhoneBook = "1" ]; then
287        rm $FRITZBUCH
288        if [ ! -f $FRITZBUCH ]; then
289            echo "FritzBook new -> $FRITZBUCH"
290           
291            loadFritzBook70
292           
293            rm /tmp/curlhelp1.tmp
294            rm /tmp/curlhelp7.tmp
295           
296        fi
297    fi 
298
299};
300#-------------------------------------------------------------------------------
301#Script has been initiated with parameters
302#(START,RING,CALL,DISCONNECT,CONNECT,STOP,SORTNAME,SORTNUMBER,TEST,CLEANUP)
303
304timeout=14
305while [ -e /tmp/callrun ]; do
306    if [ $timeout != "0" ]; then
307        timeout=$(($timeout-1))
308        sleep 1
309    else
310        break
311    fi
312done
313
314touch /tmp/callrun
315
316timeout=14
317while [ -e /tmp/xmessage ]; do
318    if [ $timeout != "0" ]; then
319        timeout=$(($timeout-1))
320        sleep 1
321    else
322        break
323    fi
324done
325case $1 in
326  START|start)
327  echo
328  echo "------------------------------------"
329  echo "Fritzbox Callmonitor" $Version "gestartet"
330  echo "---Folgende Optionen sind gesetzt---"
331  echo "Debugmodus: " $debug
332  echo "Ueberwachte Rufnummern: " $Ziel " und " $Ziel_2
333  echo "Alle Rufnummern ueberwachen: " $Alle
334  echo "Eingehende Anrufe ueberwachen: " $monRing
335  echo "Ausgehende Anrufe ueberwachen: " $monCall
336  echo "Verbindungsende ueberwachen: " $monDisconnect
337  echo "IP Adresse der TV-Box: " $ip
338  echo "Anzeigetimeout: " $anzeigetimeout
339  echo "Anzeigewennaus: " $anzeigewennaus
340  #echo "Übersichtsseite: " $uebersichtsseite
341  echo "Fritzbox Telefonbuch: " $usePhoneBook
342  echo "------------------------------------"
343  echo "**************************************"
344  echo "loadFritzBook start"
345  loadFritzBook
346  echo "loadFritzBook ende"
347  if [ $debug = 0 ]; then
348     #wget -T 1 -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=Skript%20gestartet&body=FritzBox!%20Callmonitor%20gestartet&timeout=3"
349     $CURL "http://$ip/cgi-bin/xmessage?caption=Skript%20gestartet&body=FritzBox!%20Callmonitor%20gestartet&timeout=3" -o /dev/null
350     (touch /tmp/xmessage; sleep 4; rm  /tmp/xmessage) &
351  fi
352  #very tricky line to get data from FritzBox! using netcat and divide it using
353  #awk. Only make changes to this line if you completely understand it!
354  #Make sure the next line end with a trailing '&' or your dreambox will hang!
355    #tail -f < /dev/null|./nc $FRITZBOXIP $TELDPORT|awk -F";" '{if ($4==""){$4="Unbekannt"} system (ENVIRON ["SCRIPT"] " "$2" "$1" "$3" "$4" "$5" "$6" "$7 )}' &
356    echo "tail start"
357    tail -f < /dev/null|$NC $FRITZBOXIP $TELDPORT|awk -F";" '{if ($4==""){$4="Unbekannt"} system (ENVIRON ["SCRIPT"] " "$2" "$1" "$3" "$4" "$5" "$6" "$7 )}' &
358    echo "Ende"
359     ;;
360  RING)
361    mysearch $5
362    echo $2" "$3" Ankommend: von "$5" auf "$6"und hier noch wert 7 "$7
363    #title of messagebox
364    c=">>>> Anruf ankommend <<<<"
365    #prepare text
366    #UH20100110
367        fuer=$6
368    if [ "$6" = "4711" ]
369       then fuer="Name1"
370#       elif [ "$6" = "MSN2" ]
371#          then fuer="Name2"
372    fi
373
374#    b=" Anruf von "$5"~n~n "$NAME"~n "$ADDRESSE"~n für "$6
375    b=" Anruf von "$5"~n~n "$NAME"~n "$ADDRESSE"~n~n~n für "$fuer
376
377    b1=`echo $b               | sed -e '{s/4711/Name1/g;s/MSN2/Name2/g;s/MSN3/Name3/g;s/SIP0/VOIP0/g;s/SIP1/VOIP1/g;s/SIP2/VOIP2/g;}'`
378#    b1=`echo $b               | sed -e '{s/4711/Name1/g;s/MSN2/Name2/g;s/MSN3/Name3/g;s/SIP0/VOIP0/g;s/SIP1/VOIP1/g;s/SIP2/VOIP2/g;}'`
379    #Wert in Logb zwischenspeichern für TMPRING
380    logb=`echo $b1            | sed -e '{s/~n//g;}'` 
381
382    b1=`echo $b1              | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
383    c1=`echo $c               | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
384    #Eingehende Anrufe anzeigen?
385    if [ $monRing = 1 ]; then
386      #Welche Rufnummern sollen überwacht werden?
387      if [ $6 = $Ziel -o $6 = $Ziel_2 -o $Alle = 1 ] ; then
388        #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
389        #wget -O- http://$ip/query?boxstatus > $TMPSTATUS
390        $CURL http://$ip/query?boxstatus > $TMPSTATUS
391        #STANDBY=`grep "standby" $TMPSTATUS| head -n 1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
392        STANDBY=`grep "standby" $TMPSTATUS| wc -l`
393        #STANDBY=0
394        echo "Standbystatus: $STANDBY"
395          if [ $STANDBY = 0 ]; then
396            if [ $debug = 0 ]; then
397              if [ $muteRing = 1 ]; then #wenn Option gesetzt ist dann wird der Ton abgeschaltet
398                #wget -O- http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
399                #mute=`grep "mute" $TMPSTATUS| head -n 1 | sed -e '{s/mute://g;s/<br>//g;s/ //g}'`
400                #if [ $mute = 0 ]; then
401                  #wget -q -O /dev/null "http://@$ip/query?sendrc&rcmute"  >> $NULL #Befehl für Tonsperre
402                    $CURL http://$ip/query?mutestatus > $TMPSTATUS
403                                mute=`grep "muteon" $TMPSTATUS| wc -l`
404                                if [ $mute = 0 ]; then
405                        $CURL "http://@$ip/query?sendrc&rcmute"  >> $NULL #Befehl für Tonsperre
406                    fi
407                #fi
408              fi
409              #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
410                $CURL "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
411                (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
412            fi 
413          else
414            echo "Dreambox ist im Standby"
415            if [ $anzeigewennaus = 1 ]; then #wenn die Box im Standby ist und die Option gesetzt ist dann wird nach dem einschalten der Box die Meldung angezeigt
416              echo "Meldung wird wenn debug 0 ist trotzdem angezeigt da -anzeigewennaus- 1 ist"
417              #wenn die Leitung überwacht wird dann den Anruf erst einmal in TMPRING schreiben und TMPINCOMING schreiben
418              if [ $uebersichtsseite = 1 ]; then
419                echo "Anruf wird für Übersichtsseite gespeichert"
420              if [ -f $TMPRING ];     then
421                  echo "TMPRING gibt es schon neu "
422                  echo "<shell name=\"von $5 $NAME\" shortcut=\"\" help=\"$2 $3\"><sh></sh></shell>
423<line name=\"$ADDRESSE\" />
424<line name=\"für $6\" />
425<separator />" >>$TMPRING
426               else
427                  echo "TMPRING gibt es noch nicht"         
428                  echo "<menu name=\"Verpasste Anrufe\">
429<shell name=\"von $5 $NAME\" shortcut=\"\" help=\"$2 $3\"><sh></sh></shell>    
430<line name=\"$ADDRESSE\" />
431<line name=\"für $6\" />
432<separator />" >$TMPRING
433                fi
434                  echo "nach der Abfrage ob es TMPring schon gibt"
435                  echo "1" > $TMPINCOMING
436              else
437                if [ $debug = 0 ]; then     
438                  echo "Meldung wird nach dem einschalten der Box angezeigt"
439                  #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
440                  $CURL "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
441                  (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
442                fi
443              fi 
444            fi
445          fi
446      fi
447    fi   
448   
449    if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
450    if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
451    ;;
452 
453  CALL)
454 
455                echo "******************* call"
456    #Aufruf Kamera?#
457    ext=0
458    if [ `echo $7 | grep "callcam1" | wc -l` -eq 1 ]; then
459      rm /tmp/callcam*
460      touch /tmp/callcam1
461      $CURL "http://$ip/query?infobarplugin&IP-Kamera"
462      $CURL "http://$ip/query?sendrc&rcok"
463      ext=1
464                fi
465    if [ `echo $7 | grep "callcam2" | wc -l` -eq 1 ]; then
466        rm /tmp/callcam*
467      touch /tmp/callcam2
468      $CURL "http://$ip/query?infobarplugin&IP-Kamera"
469      CURL "http://$ip/query?sendrc&rcok"
470      ext=1
471                fi
472   
473    if [ $ext -eq 0 ]; then
474        mysearch $7
475        echo $2" "$3" Ausgehend: von "$6" auf "$7
476         #title of messagebox
477         c="<<<< Anruf abgehend >>>>"
478         #prepare text
479         #UH20100110
480         if [ "$6" = "4711" ]
481            then von=`echo $6               | sed -e '{s/4711/Name1/g;}'`
482#            elif [ "$6" = "4712" ]
483#               then von=`echo $6               | sed -e '{s/4712/MSN2/g;}'`
484         fi
485
486#       b=" Anruf von "$6"~n~n für "$7"~n~n "$NAME"~n "$ADDRESSE
487        b=" Anruf von "$von"~n~n~n für "$7"~n~n "$NAME"~n "$ADDRESSE
488
489        b1=`echo $b               | sed -e '{s/MSN1/Name1/g;s/MSN2/Name2/g;s/MSN3/Name3/g;s/SIP0/VOIP0/g;s/SIP1/VOIP1/g;s/SIP2/VOIP2/g;}'`
490#        b1=`echo $b               | sed -e '{s/MSN1/Name1/g;s/MSN2/Name2/g;s/MSN3/Name3/g;s/SIP0/VOIP0/g;s/SIP1/VOIP1/g;s/SIP2/VOIP2/g;}'`
491
492        b1=`echo $b1              | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
493        c1=`echo $c               | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
494        #tempfile schreiben für Übersicht
495      fi
496      #Ausgehende Anrufe anzeigen?
497      if [ $monCall = 1 ] && [ $ext -eq 0 ] ; then
498        #Welche Rufnummern sollen überwacht werden?
499        if [ $6 = $Ziel -o $6 = $Ziel_2 -o $Alle = 1 ] ; then
500          echo "Diese Rufnummer wird überwacht"
501          #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
502          #wget -O- http://$ip/query?boxstatus > $TMPSTATUS
503          $CURL http://$ip/query?boxstatus > $TMPSTATUS
504          #STANDBY=`grep "standby" $TMPSTATUS| head -n 1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
505          STANDBY=`grep "standby" $TMPSTATUS| wc -l`
506          STANDBY=0
507          echo "Standbystatus: $STANDBY"
508          if [ $STANDBY = 0 ]; then
509            echo "Wenn debug noch 0 ist wird die Meldung angezeigt"
510            if [ $debug = 0 ]; then
511              #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
512              $CURL "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
513              (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
514            fi
515          else
516            echo "Dreambox ist im Standby"
517            if [ $anzeigewennaus = 1 ]; then
518              echo "Meldung wird wenn debug 0 ist trotzdem angezeigt da -anzeigewennaus- 1 ist"
519              if [ $debug = 0 ]; then     
520                echo "Meldung wird nach dem einschalten der Box angezeigt"
521                #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
522                $CURL "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
523                (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
524              fi
525            fi 
526          fi 
527        fi
528      fi
529      if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
530      if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
531      ;;
532 
533  DISCONNECT)
534  #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
535  #wget -O- http://$ip/query?boxstatus > $TMPSTATUS
536  $CURL http://$ip/query?boxstatus > $TMPSTATUS
537  #STANDBY=`grep "standby" $TMPSTATUS| head -n 1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
538  STANDBY=`grep "standby" $TMPSTATUS| wc -l`
539  if [ $STANDBY = 0 ]; then
540    if [ $muteRing = 1 ]; then #wenn Option gesetzt ist dann wird der Ton abgeschaltet
541        $CURL http://$ip/query?mutestatus > $TMPSTATUS
542        mute=`grep "muteon" $TMPSTATUS| wc -l`
543        if [ $mute = 1 ]; then
544            $CURL "http://@$ip/query?sendrc&rcmute"  >> $NULL   
545        fi
546      #wget -O- http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
547      #$CURL http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
548      #'mute=`grep "mute" $TMPSTATUS| head -n 1 | sed -e '{s/mute://g;s/<br>//g;s/ //g}'`
549      #if [ $mute = 1 ]; then
550        #wget -q -O /dev/null "http://$loginname:$passwort@$ip/cgi-bin/rc?113"  >> $NULL #Befehl für Tonsperre
551        #$CURL "http://$loginname:$passwort@$ip/cgi-bin/rc?113"  >> $NULL #Befehl für Tonsperre
552      #fi
553    fi
554  fi
555     h=$(($5/3600))                        #get hours from   $5
556     m=$(($5%3600/60))                     #get minutes from $5
557     s=$((($5%3600)%60))                   #get seconds from $5
558     if [ $h -lt 10 ]; then h="0"$h; fi    #add leading 0 if needed
559     if [ $m -lt 10 ]; then m="0"$m; fi    #add leading 0 if needed
560     if [ $s -lt 10 ]; then s="0"$s; fi    #add leading 0 if needed
561     #title of messagebox
562     c="-- Anrufauswertung --"
563     #prepare text
564     b="~n Aufgelegt nach "$5" Sekunden Dauer (hh:mm:ss): "$h":"$m":"$s"~n"
565     
566     #Beenden eines Anrufes anzeigen?
567     if [ $monDisconnect = 1 ]; then 
568          if [ $debug = 0 ]; then
569          #generate the messagebox
570          b1=`echo $b               | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
571          c1=`echo $c               | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
572          echo "Disconnect"
573          if [ $STANDBY = 0 ]; then
574           #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"          >> $NULL
575           $CURL -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"          >> $NULL
576           (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
577          fi
578         fi
579     fi
580     if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
581     if [ -f $TMPINCOMING ];     then  rm $TMPINCOMING; fi
582     ;;
583  CONNECT)
584    echo "connect ist jetzt aktiv - verbunden"
585    #kontrollieren ob dieses ein eingehender Anruf war
586    if [ -f $TMPINCOMING ];     then
587    eingehend=`grep "1" $TMPINCOMING| head -n 1`
588    else
589    eingehend="0"
590    fi
591    #wenn das ein eingehender anruf war dann letzten Zeilen löschen da der Anruf angenommen wurde
592    if [ $eingehend = 1 ]; then
593      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
594      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
595      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
596      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
597       
598      if [ -f $TMPINCOMING ];     then  rm $TMPINCOMING; fi
599    fi
600     ;;
601  SORTNAME|sortname)
602    #convert $FRITZCACHE to unix format
603    unix2dos -u  $FRITZCACHE
604    #convert $FRITZCACHE to upper case
605    awk -F '#' '{print toupper($2)"#"$1"#"$2}' $FRITZCACHE|sort $2>$FRITZCACHE"_sort"
606    #sort $FRITZCACHE
607    awk -F '#' '{print $2"#"$3}' $FRITZCACHE"_sort" > $FRITZCACHE
608     ;;
609  SORTNUMBER|sortnumber)
610    #sort FRITZCACHE by telephone number
611    sort $FRITZCACHE $2 > $FRITZCACHE"_sort"
612    mv $FRITZCACHE"_sort" $FRITZCACHE
613    ;;
614  CLEANUP|cleanup)                       #cleanup (removes all files)
615     echo "deleting $TMPFILE (if exists)"
616     if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
617     echo "deleting $FRITZCACHE (if exists)"
618     if [ -f $FRITZCACHE ];   then  rm $FRITZCACHE; fi
619     echo "deleting $FRITZBUCH (if exists)"
620     if [ -f $FRITZBUCH ];   then  rm $FRITZBUCH; fi
621     ;;
622  STOP1|stop1)
623     #kill all processes we spawned
624     #hopefully only a single tail task is running so we kill it :)
625     pid=`ps | grep "tail.-f"| grep -v grep | awk '{print $1}'`
626     if [ "X${pid}" != "X" ] ; then
627        kill -9 ${pid}
628     fi
629     pid=`ps |grep "Unbekannt" | grep -v grep | awk '{print $1}'`
630     if [ "X${pid}" != "X" ] ; then
631        kill -9 ${pid}
632     fi
633     pid=`ps |grep ".*nc.*$TELDPORT" | grep -v grep | awk '{print $1}'`
634     if [ "X${pid}" != "X" ] ; then
635        kill -9 ${pid}
636     fi
637     pid=`ps |grep $SCRIPT | grep -v grep | awk '{print $1}'`
638     if [ "X${pid}" != "X" ] ; then
639        kill -9 ${pid}
640     fi
641     ;;
642    STOP|stop)
643     #STOP1 (alt STOP) bewirkt hier nichts!
644     #tail zu killen reicht, um die anderen auch zu entfernen :)
645     pid=`ps | grep "tail*"| grep -v grep | awk '{print $1}'`
646     if [ "X${pid}" != "X" ] ; then
647        kill -9 ${pid}
648     fi
649     #fals noch ein 2. läuft :-)
650     pid=`ps | grep "tail*"| grep -v grep | awk '{print $1}'`
651     if [ "X${pid}" != "X" ] ; then
652        kill -9 ${pid}
653     fi 
654     ;;
655  SHOW|show)
656  sleep 10     
657  if [ -f $TMPRING ];     then
658    eintragvorhanden=`grep "von" $TMPRING| head -n 1`
659    echo "Es ist ein Eintrag in TMPRING vorhanden"
660    if [ "$eintragvorhanden" = "" ]; then
661      echo "kein Eintrag in TMPRING"
662      rm $TMPRING
663    else
664      echo "</menu>" >>$TMPRING
665      ebox exit; exit=`opexec --width=580 --height=400 --xmlpath="$TMPRING"`
666      rm $TMPRING
667      #sed -i '$D' $TMPRING #falls die Datei nicht gelöscht werden soll muss man die letzte Zeile in der Datei löschen
668    fi
669  else
670    echo "Die Datei TMPRING existiert nicht" 
671  fi
672  ;;
673 
674  TEST|test)
675        loadFritzBook
676      echo "Testing the script: "$0
677      mysearch "$2"
678      echo "Searching for phone number: "$2" resulted in: "$NAME
679      #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
680      #wget -O- http://$ip/query?boxstatus > $TMPSTATUS
681      $CURL http://$ip/query?boxstatus > $TMPSTATUS
682      #STANDBY=`grep "standby" $TMPSTATUS| head -n 1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
683      STANDBY=`grep "standby" $TMPSTATUS| wc -l`
684      STANDBY=0
685      echo "Standbystatus: $STANDBY"
686      p="$NAME    "
687      p20=`echo $p               | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
688      t20=`echo $t               | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
689      ADDRESSE20=`echo $ADDRESSE | sed -e '{s/ /%20/g;s/Ä/%C3%84/g;s/Ö/%C3%96/g;s/Ü/%C3%9C/g;s/ä/%C3%A4/g;s/ö/%C3%B6/g;s/ü/%C3%BC/g;s/á/ss/g;s/&/%26/g;s/~n/%0a/g;s/#/%20/g;}'`
690      if [ $STANDBY = 0 ]; then
691        if [ $debug = 0 ]; then
692          if [ $muteRing = 1 ]; then #wenn Option gesetzt ist dann wird der Ton abgeschaltet
693            #wget -O- http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
694            #mute=`grep "mute" $TMPSTATUS| head -n 1 | sed -e '{s/mute://g;s/<br>//g;s/ //g}'`
695            #if [ $mute = 0 ]; then
696                #wget -q -O /dev/null "http://$ip/query?sendrc&rcmute"  >> $NULL #Befehl für Tonsperre
697                $CURL "http://$ip/query?sendrc&rcmute"  >> $NULL #Befehl für Tonsperre
698            #fi   
699          fi
700          #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=Test%20des%20Scripts&body=Ergebnis:%0a$p20%0a${ADDRESSE20}&timeout=$anzeigetimeout"          >> $NULL
701          $CURL "http://$ip/cgi-bin/xmessage?caption=Test%20des%20Scripts&body=Ergebnis:%0a$p20%0a${ADDRESSE20}&timeout=$anzeigetimeout"          >> $NULL
702          (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
703        fi
704      else
705        if [ $anzeigewennaus = 1 ]; then
706          if [ $debug = 0 ]; then
707           #wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=Test%20des%20Scripts&body=Ergebnis:%0a$p20%0a${ADDRESSE20}&timeout=$anzeigetimeout"          >> $NULL
708           $CURL "http://$ip/cgi-bin/xmessage?caption=Test%20des%20Scripts&body=Ergebnis:%0a$p20%0a${ADDRESSE20}&timeout=$anzeigetimeout"          >> $NULL
709          (touch /tmp/xmessage; sleep $anzeigetimeout; rm  /tmp/xmessage) &
710          fi 
711        else
712          echo "Keine Anzeige da die Box aus ist und -anzeigewennaus- 0 ist"
713        fi
714      fi
715      if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
716      if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
717  ;;
718  loadPhoneBook|loadphonebook)
719    if [ -f $FRITZBUCH ]; then
720        rm $FRITZBUCH
721    fi
722    loadFritzBook
723    if [ -f $FRITZBUCH ]; then
724        cat $FRITZBUCH
725        $CURL "http://$ip/cgi-bin/xmessage?caption=FritzBook%20geladen&body=FritzBox!%20Telefonbuch%20geladen&timeout=5" -o /dev/null
726        (touch /tmp/xmessage; sleep 5; rm  /tmp/xmessage) &
727      else
728        $CURL "http://$ip/cgi-bin/xmessage?caption=Fehler%20beim%20laden&body=FritzBox!%20Telefonbuch%20konnte%20nicht%20geladen%20werden&timeout=5" -o /dev/null
729        (touch /tmp/xmessage; sleep 5; rm  /tmp/xmessage) &
730    fi
731  ;;
732esac
733rm /tmp/callrun
Note: See TracBrowser for help on using the repository browser.