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