source: ipk/source.sh4/titaninfos_callmonitor/var/usr/local/share/titan/plugins/callmonitor1/fritzbox_msg_new.sh @ 10367

Last change on this file since 10367 was 10367, checked in by madie, 11 years ago

[ipk] update callmonitor (thx ghost)

  • Property svn:executable set to *
File size: 26.1 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//`
5
6. $CONFIG
7#. ./callmon.conf
8 
9# Version:      @(#)fritzbox_msg_new.sh  0.81 30-Jun-2008 krasnojarsk@gmx.de
10# Author: Ludwig H.
11#-------------------------------------------------------------------------------
12#
13# V0.90 - Erkan
14# - Änderungen bis Februar 2011 eingebracht
15# - für DM600PVR angepasst
16#
17#-------------------------------------------------------------------------------
18#
19# To enable the callmonitor on your fritzbox use your telephone and call
20#    #96*5*         to enable
21#    #96*4*         to disable
22#
23# You should put the script into /etc/init.d (DM7020/DM600PVR) or /var/init.d (DM7000)
24#
25# For autostart on DM600PVR make a symbolic link
26# ln -s /etc/init.d/fritzbox_msg_new.sh /etc/rc2.d/S40Fritz
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=v0.90                                   #Zur Versionsanzeige im telnet
39debug=0                                                         #wenn debug auf 1 steht wird am TV nichts angezeigt
40Ziel=4711                                                       #bitte Rufnummer eintragen die Überwacht werden soll
41Ziel_2=4711                                             #2te Rufnummer die Überwacht werden soll
42                                                                                        #wenn keine zweite dann gleiche nochmal eintragen!
43##Alle=1                  #wenn hier eine 1 steht werden alle Rufnummern überwacht
44                          #unabhängig von Ziel und Ziel_2
45##monRing=1               #eingehende Anrufe anzeigen
46##muteRing=0              #Ton aus bei Anruf
47##monCall=0               #ausgehende Anrufe anzeigen
48monDisconnect=0           #Beenden eines Anrufes anzeigen. Hier ist noch ein Bug drin!
49                          #Es werden immer alle Gespräche überwacht (alle Rufnummern
50                          #werden überwacht- Ziel und Ziel_2 funktionieren hier nicht
51                          #). Ich habe das deshalb immer auf 0.
52ip=127.0.0.1                    #ip Adresse der Dreambox
53##anzeigetimeout=10       #Wie lange soll die Meldung angezeigt werden?
54##anzeigewennaus=0        #Wenn 1 dann werden alle Meldungen gespeichert und angezeigt
55                          #wenn die Dreambox eingeschaltet wird (kann ganz schön viel
56                          #werden!). Wenn 0 werden die Meldungen nicht angezeigt wenn
57                          #die Box aus war als z.B. ein Anruf eingegangen ist.
58                          #Empfehlen tue ich eine 0. Wer weis was passiert wenn man im
59                          #Urlaub ist und etliche Meldungen gespeichert werden.
60uebersichtsseite=0        #Wenn anzeige wenn aus und uebersichtsseite 1 ist, dann werden
61                          #nach dem einschalten der Dream aus dem Standy alle verpassten
62                          #Anrufe in einer Übersichtseite angezeigt mit Datum und Uhrzeit
63                          #Hierzu muss OpenPanel installiert sein.
64                          #Hier muss aber noch ein Start Script erstellt werden!                 
65loginname=root            #Loginname für Dreambox (Beispiel:root)
66passwort=kathrein       #passwort für Dreambox (Beispiel:dreambox)
67vorwahl=030                                             #Eigene Vorwahl eintragen
68#
69#Options---end------------------------------------------------------------------
70#
71#
72#---- do not change anything below here ----
73#
74#additional paths to files we use (will be created automatically if not present)
75#detecting Dreambox-Type (DM7020 or DM7000 or DM500 or DM600PVR)
76 FRITZCACHE=/var/fritzbox.cache                  #stores successfull reverse searches
77 TMPFILE=/tmp/fritzbox.tmp                       #stores page from wget command
78 TMPSTATUS=/tmp/fritzdream.status                #status der Dreambox (standby usw)
79 TMPRING=/tmp/tmpring.xml                        #stores missed calls
80 TMPINCOMING=/tmp/ringin.tmp                             #for checking ring overview
81
82NULL=/dev/null                              #'NULL'
83SCRIPT=$0                                   #full path to this script
84export SCRIPT
85
86#-------------------------------------------------------------------------------
87#definition of the reverse search online (GOYELLOW.DE)
88#-------------------------------------------------------------------------------
89SEARCHPRV="GoYellow"
90SEARCHURL="http://www.goyellow.de/schnellsuche/?LIP=simpleSearch&MDN="
91SEARCHURL="http://www.goyellow.de/inverssuche/?TEL="
92SEARCHPDETAIL="Detailinformationen"
93SEARCHERR="Keine.Einträge.gefunden"        #replace spaces with dots (regex)
94#-------------------------------------------------------------------------------
95#check if FritzBox! is up and callmonitor port is reachable. if not exit.
96#-------------------------------------------------------------------------------
97#cat /dev/null | ./nc $FRITZBOXIP $TELDPORT
98cat /dev/null | $NC $FRITZBOXIP $TELDPORT
99if [ $? != 0 ]; then
100 echo "Fritzbox (" $FRITZBOXIP ") ist nicht auf Port" $TELDPORT "erreichbar!"
101 echo "Skript wird beendet!"
102 FRITZUP=down
103 exit 1
104else
105 FRITZUP=up
106fi
107#-------------------------------------------------------------------------------
108#if script is called without any parameters show help text
109#-------------------------------------------------------------------------------
110if [ "$1" = "" ]; then
111 echo
112 echo "Usage: $SCRIPT START STOP CLEANUP SORTNAME SORTNUMBER TEST [phonenumber]"
113 echo
114 echo "START               Start Script and deamonize"
115 echo "STOP                kill all processes we created"
116 echo "CLEANUP             delete all temporary files incl. cache"
117 echo "SORTNAME            sort cache file by name"
118 echo "SORTNAME -r         sort cache file by name (reverse)"
119 echo "SORTNUMBER          sort cache file by number"
120 echo "SORTNUMBER -r       sort cache file by number (reverse)"
121 echo "TEST [phonenumber]  For testing connectivity and trying the search"
122 echo
123fi
124#-------------------------------------------------------------------------------
125#reading function to interpret the data read from FritzBox! callmonitor port
126#-------------------------------------------------------------------------------
127mysearch () {
128
129if [ "$1" = "Unbekannt" ]; then
130   NAME="ohne Rufnummer"
131   ADDRESSE=""
132else
133   #remove spaces from $1 and replace '+49' with ''0'
134   NUMMER=`echo $1 | sed -e "s@\ @@g" -e "s@+49@0@"`
135   #UH
136   NUMMER=`echo $NUMMER | sed -e "s/^1/${vorwahl}1/g"`
137   NUMMER=`echo $NUMMER | sed -e "s/^2/${vorwahl}2/g"`
138   NUMMER=`echo $NUMMER | sed -e "s/^3/${vorwahl}3/g"`
139   NUMMER=`echo $NUMMER | sed -e "s/^4/${vorwahl}4/g"`
140   NUMMER=`echo $NUMMER | sed -e "s/^5/${vorwahl}5/g"`
141   NUMMER=`echo $NUMMER | sed -e "s/^6/${vorwahl}6/g"`
142   NUMMER=`echo $NUMMER | sed -e "s/^7/${vorwahl}7/g"`
143   NUMMER=`echo $NUMMER | sed -e "s/^8/${vorwahl}8/g"`
144   NUMMER=`echo $NUMMER | sed -e "s/^9/${vorwahl}9/g"`
145   echo "$NUMMER"
146   echo "Searching for $NUMMER in cache file..."
147   if [ ! -f $FRITZCACHE ]; then  touch $FRITZCACHE; fi
148    #try to get caller-id via $NUMBER from $FRITZCACHE
149    NAME=`grep $NUMMER $FRITZCACHE | sed -e "s@$NUMMER\#@@" -e "s@;@\n@g"`
150    ADDRESSE=`echo $NAME | sed -e 's/.*->//g'`
151    NAME=`echo $NAME | sed -e 's/->.*//g'`
152    echo -e
153    echo -e "NAME nach Cache Suche: $NAME"
154    echo -e "ADRESSE nach Cache Suche: $ADDRESSE"
155   
156   if [ "$NAME" = "" ]; then
157    #try to get caller-id of $NUMMER via internet
158    echo "Searching for $NUMMER via $SEARCHPRV"
159    wget "$SEARCHURL$NUMMER"  -O $TMPFILE
160    #extract caller-id from online result
161    #UH20100112
162#    NAME=`grep $SEARCHPDETAIL $TMPFILE | head -1 | sed -e "/</{; :loop; s/<[^<]*>//g; /</{; N; b loop; }; };"`
163#    ADDRESSE=`grep "address" $TMPFILE| head -1`
164#    ADDRESSE=`echo $ADDRESSE | sed 's/<[^>]*>/ /g'`
165
166    NAME=`grep $SEARCHPDETAIL $TMPFILE | head -1 | sed -e 's/.*Detailinformationen zu //g' | sed -e 's/ in .*//g'`
167    STRASSE=`grep '<span class="street street-address">' $TMPFILE | head -1 | sed -e 's/<span class="street street-address">//g' | sed -e 's/<\/span>.*//g'`
168    POSTCODE=`grep '<span class="postcode postal-code">' $TMPFILE | head -1 | sed -e 's/.*<span class="postcode postal-code">//g' | sed -e 's/<\/span>.*//g'`
169    ORT=`grep '<span class="city locality">' $TMPFILE | head -1 | sed -e 's/.*<span class="city locality">//g' | sed -e 's/<\/span>.*//g'`
170    ADDRESSE="$STRASSE~n$POSTCODE $ORT"
171
172    if [ "$NAME" = "" ]; then
173     if grep $SEARCHERR $TMPFILE > $NULL; then
174      NAME="Unbekannt"
175      ADDRESSE=""
176     fi;
177    fi;
178    if [ "$NAME" = "" ]; then
179     NAME="Unbekannt"
180     ADDRESSE=""
181    else
182     #dirty workarround to fix 'new-lines' when multiple caller-ids exist
183     #to make sure only 1 line will be written to cache file
184     #NAME=`printf %s***** $NAME | sed -e "s@\*\*\*\*\*@ @g;"
185     #echo "Name gefunden in Goyellow: " $NAME
186     echo -e
187     echo -e "$NUMMER#$NAME->$ADDRESSE" >> $FRITZCACHE
188     export NAME
189     export ADDRESSE
190    fi;
191   fi;
192fi;
193};
194#-------------------------------------------------------------------------------
195#Script has been initiated with parameters
196#(START,RING,CALL,DISCONNECT,CONNECT,STOP,SORTNAME,SORTNUMBER,TEST,CLEANUP)
197case $1 in
198  START|start)
199  echo
200  echo "------------------------------------"
201  echo "Fritzbox Callmonitor" $Version "gestartet"
202  echo "---Folgende Optionen sind gesetzt---"
203  echo "Debugmodus: " $debug
204  echo "Ueberwachte Rufnummern: " $Ziel " und " $Ziel_2
205  echo "Alle Rufnummern ueberwachen: " $Alle
206  echo "Eingehende Anrufe ueberwachen: " $monRing
207  echo "Ausgehende Anrufe ueberwachen: " $monCall
208  echo "Verbindungsende ueberwachen: " $monDisconnect
209  echo "IP Adresse der TV-Box: " $ip
210  echo "Anzeigetimeout: " $anzeigetimeout
211  echo "Anzeigewennaus: " $anzeigewennaus
212  echo "Übersichtsseite: " $uebersichtsseite
213  echo "------------------------------------"
214 
215  if [ $debug = 0 ]; then
216     wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=Skript%20gestartet&body=FritzBox!%20Callmonitor%20gestartet&timeout=3"
217  fi
218  #very tricky line to get data from FritzBox! using netcat and divide it using
219  #awk. Only make changes to this line if you completely understand it!
220  #Make sure the next line end with a trailing '&' or your dreambox will hang!
221    #tail -f < /dev/null|./nc $FRITZBOXIP $TELDPORT|awk -F";" '{if ($4==""){$4="Unbekannt"} system (ENVIRON ["SCRIPT"] " "$2" "$1" "$3" "$4" "$5" "$6" "$7 )}' &
222    tail -f < /dev/null|$NC $FRITZBOXIP $TELDPORT|awk -F";" '{if ($4==""){$4="Unbekannt"} system (ENVIRON ["SCRIPT"] " "$2" "$1" "$3" "$4" "$5" "$6" "$7 )}' &
223     ;;
224  RING)
225    mysearch $5
226    echo $2" "$3" Ankommend: von "$5" auf "$6"und hier noch wert 7 "$7
227    #title of messagebox
228    c=">>>> Anruf ankommend <<<<"
229    #prepare text
230    #UH20100110
231                fuer=$6
232    if [ "$6" = "4711" ]
233       then fuer="Name1"
234#       elif [ "$6" = "MSN2" ]
235#          then fuer="Name2"
236    fi
237
238#    b=" Anruf von "$5"~n~n "$NAME"~n "$ADDRESSE"~n für "$6
239    b=" Anruf von "$5"~n~n "$NAME"~n "$ADDRESSE"~n~n~n für "$fuer
240
241    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;}'`
242#    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;}'`
243    #Wert in Logb zwischenspeichern für TMPRING
244    logb=`echo $b1            | sed -e '{s/~n//g;}'` 
245
246    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;}'`
247    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;}'`
248    #Eingehende Anrufe anzeigen?
249    if [ $monRing = 1 ]; then
250      #Welche Rufnummern sollen überwacht werden?
251      if [ $6 = $Ziel -o $6 = $Ziel_2 -o $Alle = 1 ] ; then
252        #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
253        wget -O- http://$ip/query?boxstatus > $TMPSTATUS
254        #STANDBY=`grep "standby" $TMPSTATUS| head -1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
255        STANDBY=`grep "standby" $TMPSTATUS| wc -l`
256        STANDBY=0
257        echo "Standbystatus: $STANDBY"
258          if [ $STANDBY = 0 ]; then
259            if [ $debug = 0 ]; then
260              if [ $muteRing = 1 ]; then #wenn Option gesetzt ist dann wird der Ton abgeschaltet
261                #wget -O- http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
262                #mute=`grep "mute" $TMPSTATUS| head -1 | sed -e '{s/mute://g;s/<br>//g;s/ //g}'`
263                #if [ $mute = 0 ]; then
264                  wget -q -O /dev/null "http://@$ip/query?sendrc&rcmute"  >> $NULL #Befehl für Tonsperre
265                #fi
266              fi
267              wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
268            fi 
269          else
270            echo "Dreambox ist im Standby"
271            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
272              echo "Meldung wird wenn debug 0 ist trotzdem angezeigt da -anzeigewennaus- 1 ist"
273              #wenn die Leitung überwacht wird dann den Anruf erst einmal in TMPRING schreiben und TMPINCOMING schreiben
274              if [ $uebersichtsseite = 1 ]; then
275                echo "Anruf wird für Übersichtsseite gespeichert"
276              if [ -f $TMPRING ];     then
277                  echo "TMPRING gibt es schon neu "
278                  echo "<shell name=\"von $5 $NAME\" shortcut=\"\" help=\"$2 $3\"><sh></sh></shell>
279<line name=\"$ADDRESSE\" />
280<line name=\"für $6\" />
281<separator />" >>$TMPRING
282               else
283                  echo "TMPRING gibt es noch nicht"         
284                  echo "<menu name=\"Verpasste Anrufe\">
285<shell name=\"von $5 $NAME\" shortcut=\"\" help=\"$2 $3\"><sh></sh></shell>    
286<line name=\"$ADDRESSE\" />
287<line name=\"für $6\" />
288<separator />" >$TMPRING
289                    fi
290                  echo "nach der Abfrage ob es TMPring schon gibt"
291                  echo "1" > $TMPINCOMING
292              else
293                if [ $debug = 0 ]; then     
294                  echo "Meldung wird nach dem einschalten der Box angezeigt"
295                  wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
296                fi
297              fi 
298            fi
299          fi
300      fi
301    fi   
302   
303    if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
304    if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
305    ;;
306  CALL)
307    mysearch $7
308    echo $2" "$3" Ausgehend: von "$6" auf "$7
309      #title of messagebox
310      c="<<<< Anruf abgehend >>>>"
311      #prepare text
312      #UH20100110
313      if [ "$6" = "4711" ]
314         then von=`echo $6               | sed -e '{s/4711/Name1/g;}'`
315#         elif [ "$6" = "4712" ]
316#            then von=`echo $6               | sed -e '{s/4712/MSN2/g;}'`
317      fi
318
319#      b=" Anruf von "$6"~n~n für "$7"~n~n "$NAME"~n "$ADDRESSE
320      b=" Anruf von "$von"~n~n~n für "$7"~n~n "$NAME"~n "$ADDRESSE
321
322      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;}'`
323#      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;}'`
324
325      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;}'`
326      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;}'`
327      #tempfile schreiben für Übersicht
328     
329      #Ausgehende Anrufe anzeigen?
330      if [ $monCall = 1 ]; then
331        #Welche Rufnummern sollen überwacht werden?
332        if [ $6 = $Ziel -o $6 = $Ziel_2 -o $Alle = 1 ] ; then
333          echo "Diese Rufnummer wird überwacht"
334          #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
335          wget -O- http://$ip/query?boxstatus > $TMPSTATUS
336          #STANDBY=`grep "standby" $TMPSTATUS| head -1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
337          STANDBY=`grep "standby" $TMPSTATUS| wc -l`
338          STANDBY=0
339          echo "Standbystatus: $STANDBY"
340          if [ $STANDBY = 0 ]; then
341            echo "Wenn debug noch 0 ist wird die Meldung angezeigt"
342            if [ $debug = 0 ]; then
343              wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
344            fi
345          else
346            echo "Dreambox ist im Standby"
347            if [ $anzeigewennaus = 1 ]; then
348              echo "Meldung wird wenn debug 0 ist trotzdem angezeigt da -anzeigewennaus- 1 ist"
349              if [ $debug = 0 ]; then     
350                echo "Meldung wird nach dem einschalten der Box angezeigt"
351                wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"  >> $NULL
352              fi
353            fi 
354          fi 
355        fi
356      fi
357      if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
358      if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
359      ;;
360 
361  DISCONNECT)
362  #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
363  wget -O- http://$ip/query?boxstatus > $TMPSTATUS
364  #STANDBY=`grep "standby" $TMPSTATUS| head -1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
365  STANDBY=`grep "standby" $TMPSTATUS| wc -l`
366  if [ $STANDBY = 0 ]; then
367    if [ $muteRing = 1 ]; then #wenn Option gesetzt ist dann wird der Ton abgeschaltet
368      wget -O- http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
369      mute=`grep "mute" $TMPSTATUS| head -1 | sed -e '{s/mute://g;s/<br>//g;s/ //g}'`
370      if [ $mute = 1 ]; then
371        wget -q -O /dev/null "http://$loginname:$passwort@$ip/cgi-bin/rc?113"  >> $NULL #Befehl für Tonsperre
372      fi
373    fi
374  fi
375     h=$(($5/3600))                        #get hours from   $5
376     m=$(($5%3600/60))                     #get minutes from $5
377     s=$((($5%3600)%60))                   #get seconds from $5
378     if [ $h -lt 10 ]; then h="0"$h; fi    #add leading 0 if needed
379     if [ $m -lt 10 ]; then m="0"$m; fi    #add leading 0 if needed
380     if [ $s -lt 10 ]; then s="0"$s; fi    #add leading 0 if needed
381     #title of messagebox
382     c="-- Anrufauswertung --"
383     #prepare text
384     b="~n Aufgelegt nach "$5" Sekunden Dauer (hh:mm:ss): "$h":"$m":"$s"~n"
385     
386     #Beenden eines Anrufes anzeigen?
387     if [ $monDisconnect = 1 ]; then 
388          if [ $debug = 0 ]; then
389          #generate the messagebox
390          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;}'`
391          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;}'`
392          echo "Disconnect"
393          if [ $STANDBY = 0 ]; then
394           wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=$c1&body=$b1&timeout=$anzeigetimeout"          >> $NULL
395          fi
396         fi
397     fi
398     if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
399     if [ -f $TMPINCOMING ];     then  rm $TMPINCOMING; fi
400     ;;
401  CONNECT)
402    echo "connect ist jetzt aktiv - verbunden"
403    #kontrollieren ob dieses ein eingehender Anruf war
404    if [ -f $TMPINCOMING ];     then
405    eingehend=`grep "1" $TMPINCOMING| head -1`
406    else
407    eingehend="0"
408    fi
409    #wenn das ein eingehender anruf war dann letzten Zeilen löschen da der Anruf angenommen wurde
410    if [ $eingehend = 1 ]; then
411      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
412      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
413      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
414      if [ -f $TMPRING ];     then  sed -i '$D' $TMPRING; fi
415       
416      if [ -f $TMPINCOMING ];     then  rm $TMPINCOMING; fi
417    fi
418     ;;
419  SORTNAME|sortname)
420    #convert $FRITZCACHE to unix format
421    unix2dos -u  $FRITZCACHE
422    #convert $FRITZCACHE to upper case
423    awk -F '#' '{print toupper($2)"#"$1"#"$2}' $FRITZCACHE|sort $2>$FRITZCACHE"_sort"
424    #sort $FRITZCACHE
425    awk -F '#' '{print $2"#"$3}' $FRITZCACHE"_sort" > $FRITZCACHE
426     ;;
427  SORTNUMBER|sortnumber)
428    #sort FRITZCACHE by telephone number
429    sort $FRITZCACHE $2 > $FRITZCACHE"_sort"
430    mv $FRITZCACHE"_sort" $FRITZCACHE
431    ;;
432  CLEANUP|cleanup)                       #cleanup (removes all files)
433     echo "deleting $TMPFILE (if exists)"
434     if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
435     echo "deleting $FRITZCACHE (if exists)"
436     if [ -f $FRITZCACHE ];   then  rm $FRITZCACHE; fi
437     ;;
438  STOP|stop)
439     #kill all processes we spawned
440     #hopefully only a single tail task is running so we kill it :)
441     pid=`ps | grep "tail.-f"| grep -v grep | awk '{print $1}'`
442     if [ "X${pid}" != "X" ] ; then
443        kill -9 ${pid}
444     fi
445     pid=`ps |grep "Unbekannt" | grep -v grep | awk '{print $1}'`
446     if [ "X${pid}" != "X" ] ; then
447        kill -9 ${pid}
448     fi
449     pid=`ps |grep ".*nc.*$TELDPORT" | grep -v grep | awk '{print $1}'`
450     if [ "X${pid}" != "X" ] ; then
451        kill -9 ${pid}
452     fi
453     pid=`ps |grep $SCRIPT | grep -v grep | awk '{print $1}'`
454     if [ "X${pid}" != "X" ] ; then
455        kill -9 ${pid}
456     fi
457     ;;
458  SHOW|show)
459  sleep 10     
460  if [ -f $TMPRING ];     then
461    eintragvorhanden=`grep "von" $TMPRING| head -1`
462    echo "Es ist ein Eintrag in TMPRING vorhanden"
463    if [ "$eintragvorhanden" = "" ]; then
464      echo "kein Eintrag in TMPRING"
465      rm $TMPRING
466    else
467      echo "</menu>" >>$TMPRING
468      ebox exit; exit=`opexec --width=580 --height=400 --xmlpath="$TMPRING"`
469      rm $TMPRING
470      #sed -i '$D' $TMPRING #falls die Datei nicht gelöscht werden soll muss man die letzte Zeile in der Datei löschen
471    fi
472  else
473    echo "Die Datei TMPRING existiert nicht" 
474  fi
475  ;;
476 
477  TEST|test)
478      echo "Testing the script: "$0
479      mysearch "$2"
480      echo "Searching for phone number: "$2" resulted in: "$NAME
481      #wget -O- http://$loginname:$passwort@$ip/xml/boxstatus > $TMPSTATUS
482      wget -O- http://$ip/query?boxstatus > $TMPSTATUS
483      #STANDBY=`grep "standby" $TMPSTATUS| head -1 | sed -e '{s/<standby>//g;s/<\/standby>//g}'`
484      STANDBY=`grep "standby" $TMPSTATUS| wc -l`
485      STANDBY=0
486      echo "Standbystatus: $STANDBY"
487      p="$NAME    "
488      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;}'`
489      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;}'`
490      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;}'`
491      if [ $STANDBY = 0 ]; then
492        if [ $debug = 0 ]; then
493          if [ $muteRing = 1 ]; then #wenn Option gesetzt ist dann wird der Ton abgeschaltet
494            #wget -O- http://$loginname:$passwort@127.0.0.1/cgi-bin/audio >> $TMPSTATUS #tonstatus wird ermittelt und in eine Datei geschrieben
495            #mute=`grep "mute" $TMPSTATUS| head -1 | sed -e '{s/mute://g;s/<br>//g;s/ //g}'`
496            #if [ $mute = 0 ]; then
497                wget -q -O /dev/null "http://$ip/query?sendrc&rcmute"  >> $NULL #Befehl für Tonsperre
498            #fi   
499          fi
500          wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=Test%20des%20Scripts&body=Ergebnis:%0a$p20%0a${ADDRESSE20}&timeout=$anzeigetimeout"          >> $NULL
501        fi
502      else
503        if [ $anzeigewennaus = 1 ]; then
504          if [ $debug = 0 ]; then
505           wget -q -O /dev/null "http://$ip/cgi-bin/xmessage?caption=Test%20des%20Scripts&body=Ergebnis:%0a$p20%0a${ADDRESSE20}&timeout=$anzeigetimeout"          >> $NULL
506          fi 
507        else
508          echo "Keine Anzeige da die Box aus ist und -anzeigewennaus- 0 ist"
509        fi
510      fi
511      if [ -f $TMPFILE ];     then  rm $TMPFILE; fi
512      if [ -f $TMPSTATUS ];     then  rm $TMPSTATUS; fi
513      ;;
514  install|INSTALL) #only for DM7020 at the moment
515     #kill all processes we spawned
516     #hopefully only a single tail task is running so we kill it :)
517     echo 'Killing spawned processes...'     
518     pid=`ps | grep "tail.-f"| grep -v grep | awk '{print $1}'`
519     if [ "X${pid}" != "X" ] ; then
520        kill -9 ${pid}
521     fi
522     pid=`ps |grep "Unbekannt" | grep -v grep | awk '{print $1}'`
523     if [ "X${pid}" != "X" ] ; then
524        kill -9 ${pid}
525     fi
526     pid=`ps |grep ".*nc.*$TELDPORT" | grep -v grep | awk '{print $1}'`
527     if [ "X${pid}" != "X" ] ; then
528        kill -9 ${pid}
529     fi
530     #pid=`ps |grep $SCRIPT | grep -v grep | awk '{print $1}'`
531     #if [ "X${pid}" != "X" ] ; then
532     #   kill -9 ${pid}
533     #fi 
534     #here starts the installer 
535     if [ "$DREAMTYPE" = "DM7020" ]; then
536          cp $SCRIPT /etc/fritzbox_msg_new.sh
537          #rm /etc/rc2.d/S40Fritz
538      #ln -s /etc/fritzbox_msg_new.sh /etc/rc2.d/S40Fritz    #create softlinks in rcX
539          update-rc.d `basename $0`  start 41 S . stop  39 0 1 6 .
540      echo ''
541      echo "You should now test the script with"
542      echo $SCRIPT 'TEST 089906426'
543      echo ''
544      echo 'If it works correct, reboot your dreambox!'
545      echo ''
546     fi
547     ;;
548  remove|REMOVE)
549     #kill all processes we spawned
550     #hopefully only a single tail task is running so we kill it :)
551     echo 'Killing spawned processes...'
552     pid=`ps | grep "tail.-f"| grep -v grep | awk '{print $1}'`
553     if [ "X${pid}" != "X" ] ; then
554        kill -9 ${pid}
555     fi
556     pid=`ps |grep "Unbekannt" | grep -v grep | awk '{print $1}'`
557     if [ "X${pid}" != "X" ] ; then
558        kill -9 ${pid}
559     fi
560     pid=`ps |grep ".*nc.*$TELDPORT" | grep -v grep | awk '{print $1}'`
561     if [ "X${pid}" != "X" ] ; then
562        kill -9 ${pid}
563     fi
564     #pid=`ps |grep $SCRIPT | grep -v grep | awk '{print $1}'`
565     #if [ "X${pid}" != "X" ] ; then
566     #   kill -9 ${pid}
567     #fi 
568    #here starts the uninstaller
569    if [ "$DREAMTYPE" = "DM7020" ]; then
570      #rm /etc/rc2.d/S40Fritz                                                   #remove softlink in rc2
571          update-rc.d -f `basename $0` remove
572        fi
573    echo ''
574    echo 'If you want a complete cleanup you can execute:'
575    echo '   /bin/sh '"$SCRIPT"' cleanup'
576    echo ''
577    echo 'and then   rm '"$SCRIPT"
578    echo ''
579    ;;         
580esac
581
582
583
584
585
Note: See TracBrowser for help on using the repository browser.