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

Last change on this file since 10562 was 10562, checked in by sofatester, 11 years ago

[titan IPK] Update Callmonitor -> Thx GOst

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