#!/bin/bash
#set -x
##################################################
# Namensänderung.
# Durch die Erweiterungen des Scriptes hab ich mich dazu entschlossen das Script in
# >> ast_revers.agi << umzubenennen.
##################################################
#
# Version: ast_revers.agi-1.0_2009.03.26
#
##################################################
# Ich bedanke mich auch bei abw1oim aus dem ip-phone-forum.de (http://www.ip-phone-forum.de)
# ohne seine Hilfe würde das Script nur bei "dasoertliche.de" suchen.
#
# Folgende Funktionen bietet das Script
# - Internationale Suche bei:
# * Deutschland (dasoertliche.de)
# * Schweiz (http://tel.search.ch)
# * Ã?sterreich (http://www.tb-online.at)
# * Luxemburg (http://www.editustel.lu)
# * USA (http://www.anywho.com)
# * Kanada (http://411ca.whitepages.com bzw. http://www.411.ca)
# * Frankreich (http://www.pagesjaunes.fr)
# * Spanien (http://www.infobel.com) -> Nur Business-Einträge, Achtung: Eigentliche Routine ist php
# * weitere in Vorbereitung
# - Lesen von Parametern
# * aus dem Skript selbst
# * aus MYSQL (von abw1oim implementiert)
# * aus PGSQL-DB (Danke an DirkWolf)
# - Lesen/Speichern vom Cache in:
# * Cache-File
# * SQLite 2 und SQLite 3 Datenbank
# * MYSQL-DB (von abw1oim implementiert)
# * PGSQL-DB (Danke an DirkWolf)
# * weitere in Vorbereitung
# - OSD anzeige in:
# * VDR mit svdrpsend.pl
# * weiter in Vorbereitung
#
##################################################
######################################################################################################
# Defaultvariablen
######################################################################################################
# Hier bestimmt man, ob die Werte in einer SQL-, MYSQL- DB oder in einem Cache-File gespeichert werden
SPEICHERORT=CACHE
#Zweiten - manuellen CACHE benutzen (YES|NO) - Achtung: Falls YES, muss der Speicherort über CACHE2 definiert werden!
USE_CACHE2=NO
# Hier kann man definieren, woher das Skript die Daten für die Rufnummernidentifizierung/formatierung
# bezieht
PARAMS=SCRIPT
#Nutzung von Blacklisting (YES|NO)
BLACKLIST=NO
#Automatisiertes Blacklisting über Textbegriffe
AUTOBLACKLIST="Personal\|Arbeitsvermittlung\|Zeit\|Vermögens\|Wirtschafts"
#Bevorzugter Anbieter fuer Deutschland (OERTLICHE|KLICKTEL)
DE_PREFERED=KLICKTEL
#Fuer Deutschland: Kaskadierend beide Anbieter nutzen (YES|NO), für den Fall, dass der erste keinen Treffer liefert
DE_CASCADE=YES
#Hier stehen die Einstellungen für den eigenen Anschluss
OIAC="00" # Vorwahlziffern für internationalen Anruf
ONAC="0" # Vorwahlziffern für nationalen Anruf long Distance
OCC=49 # eigener Ländercode (49 => Deutschland)
ONDC=30 # eigene Vorwahl ohne 0 ( 30 => Berlin)
AFELD=leer
VBOX=leer
# Umlaute umsetzen ?
RESET_UML=0
#Anruf_log
ALYES=0
LOGDB=0
ALPFAD=./AL
ALFILE=Anruf.log
#VDR-Anzeige
VDR=0 #Anzeige VDR 0=Nicht 1=Ja
#CACHE-File Varabeln setzen
CACHE=/tmp/cache.txt
CACHE2=/tmp/cache2.txt
#LOG und TMP Files setzen
TMPFILE=/tmp/ast_revers.agi_html_tmp
LOGFILE=/tmp/ast_revers.agi_log
#User-Config
UCONFIG=/etc/asterisk/ast_revers.conf
######################################################################################################
# Interne Variablen
######################################################################################################
NUMMER=$1
DEST=$2
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/asterisk/agi-bin"
# Nutzerdefinierte Einstellungen
if [ -e $UCONFIG ]; then
. $UCONFIG
fi
#Pfad zu den externen Such-Scripte (SE=search engine)
SE=./search_engine
#Pfad zu anderen Skripten (Jabber&Co)
SP=./scripts
ALDATE=`date +%Y.%m.%d`
ALTIME=`date +%H:%M:%S`
FELD=leer
VBOX=leer
CACHETRUE=0
DATE=`date`
CN=""
CP=""
PL=""
STATE=""
NAME=""
PRIVATE="TRUE"
NENTRY="FALSE"
FOUND="FALSE"
DETAILS=""
COUNTRY=""
CINDEX=-1
# Unterstütze Länder
LAND=("DEUTSCHLAND" "SCHWEIZ" "OESTERREICH" "LUXEMBURG" "USA" "KANADA" "FRANKREICH" "SPANIEN")
ISO=(DE CH AT LU US CA FR ES)
CC=(49 41 43 352 1 1 33 34)
NAC=(0 0 0 "" 1 1 0 0)
NPA=(0 0 0 0 NPA_US NPA_CA 0 0)
CLAND=${#LAND[@]}
#Area_Codes (optionaler Parameter 4 der unterstützten Länder)
NPA_US=(
201 202 203 205 206 207 208 209 210 212 213 214 215 216 217 218 219 224 225 228 229 231 234 239 240 248 251 252 253 254 256 260 262 267 269 270 276 281 301 302 303 304 305 307 308 309 310 312 313 314 315 316 317 318 319 320 321 323 325 330 331 334 336 337 339 347 351 352 360 361 386 401 402 404 405 406 407 408 409 410 412 413 414 415 417 419 423 424 425 430 432 434 435 440 443 464 469 470 475 478 479 480 484 501 502 503 504 505 507 508 509 510 512 513 515 516 517 518 520 530 540 541 551 557 559 561 562 563 564 567 570 571 573 574 575 580 585 586 601 602 603 605 606 607 608 609 610 612 614 615 616 617 618 619 620 623 626 630 631 636 641 646 650 651 660 661 662 678 682 701 702 703 704 706 707 708 712 713 714 715 716 717 718 719 720 724 727 731 732 734 737 740 754 757 760 762 763 765 769 770 772 773 774 775 779 781 785 786 800 801 802 803 804 805 806 808 810 812 813 814 815 816 817 818 828 830 831 832 835 843 845 847 848 850 856 857 858 859 860 862 863 864 865 866 870 872 877 878 888 901 903 904 906 907 908 909 910 912 913 914 915 916 917 918 919 920 925 928 931 936 937 940 941 947 949 951 952 954 956 959 970 971 972 973 975 978 979 980 984 985 989
)
NPA_CA=(
204 250 289 306 403 416 418 438 450 506 514 519 600 604 613 647 705 709 778 780 807 819 867 902 905
)
######################
#####################
####################
#
# Funktionen beginn
#
###################
####################
#####################
## Parameter aus MYSQL lesen
function MYSQL_params {
TEMP=`mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB --execute="select concat(cc,'|',ndc,'|',iac,'|',nac) from $PTABLE" | \
tail -n +2 | tr '\t' '|'`
CC=`echo $TEMP | cut -d '|' -f 1`
NDC=`echo $TEMP | cut -d '|' -f 2`
IAC=`echo $TEMP | cut -d '|' -f 3`
NAC=`echo $TEMP | cut -d '|' -f 4`
}
## Parameter aus PGSQL lesen
function PGSQL_params {
TEMP=`psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "select cc,ndc,iac,nac from $PTABLE"`
CC=`echo $TEMP | cut -d '|' -f 1|sed 's/\s//g'`
NDC=`echo $TEMP | cut -d '|' -f 2|sed 's/\s//g'`
IAC=`echo $TEMP | cut -d '|' -f 3|sed 's/\s//g'`
NAC=`echo $TEMP | cut -d '|' -f 4|sed 's/\s//g'`
}
## Nummer Normalisierung auf internationales Formaat mit +<CC><NDC><SN>
function normalisierung {
# Leerzeichen raus
NUMMER=`echo $NUMMER | sed -e "s/\ //g"`
# Pruefen auf +
TMP=`echo $NUMMER | sed -e s/^\+//`
TMP2=`echo $NUMMER | sed -e s/^$OIAC//`
TMP3=`echo $NUMMER | sed -e s/^$ONAC//`
if [ "$NUMMER" != "$TMP" ]; then
# eigener IAC und eigener CC und eigener NDC
TMP=`echo $NUMMER | sed -e s/^\+$OCC$ONDC//`
TMP2=`echo $NUMMER | sed -e s/^\+$OCC//`
if [ "$NUMMER" != "$TMP" ]; then
NUM=`echo $NUMMER | sed -e "s/^\+$OCC$ONDC//"`
# eigener IAC und eigener CC
elif [ "$NUM" != "$TMP2" ]; then
NUM=`echo $NUMMER | sed -e "s/^\+$CC$NDC/$NAC/"`
else
NUM=`echo $NUMMER | sed -e "s/^\+/$IAC/"`
fi
# Pruefen auf eigenen IAC
elif [ "$NUMMER" != "$TMP2" ]; then
# eigener IAC und eigener CC und eigener NDC
TMP=`echo $NUMMER | sed -e s/^$OIAC$OCC$ONDC//`
TMP2=`echo $NUMMER | sed -e s/^$OIAC$OCC//`
if [ "$NUMMER" != "$TMP" ]; then
NUM=`echo $NUMMER | sed -e "s/^$OIAC$OCC$ONDC//"`
# eigener IAC und eigener CC
elif [ "$NUMMER" != "$TMP2" ]; then
NUM=`echo $NUMMER | sed -e "s/^$OIAC$OCC/$ONAC/"`
else
NUM=$NUMMER
fi
NUMMER=`echo $NUMMER | sed -e "s/^$OIAC/+/"`
# Pruefen auf long distance domestic
elif [ "$NUMMER" != "$TMP3" ]; then
TMP=`echo $NUMMER | sed -e s/^$ONAC$ONDC//`
if [ "$NUMMER" != "$TMP" ]; then
NUM=`echo $NUMMER | sed -e "s/^$ONAC$ONDC//"`
else
NUM=$NUMMER
fi
NUMMER=`echo $NUMMER | sed -e "s/^$ONAC/+$OCC/"`
# Local Call
else
NUM=$NUMMER
NUMMER=+$OCC$ONDC$NUMMER
fi
echo "Normalisierung der Rufnummer: " >> $LOGFILE
echo "Rueckwahlform der Nummer (NUM) : $NUM (gueltig fuer Land $OCC und Ortsnetz $ONDC)" >> $LOGFILE
echo "Internationale Form der Nummer : $NUMMER" >> $LOGFILE
}
## Pruefen, ob eine Ermittlungsroutine fuer die Rufnummer vorhanden ist (mit Daten aus Skript)
function check_land {
index=0
COUNTRY=""
while [ "$index" -lt "$CLAND" ]; do
TEST=`echo $NUMMER | sed -e "s/^\+${CC[$index]}//"`
if [ "$TEST" != "$NUMMER" ]; then
if [ "${NPA[$index]}" != "0" ]; then
if [ "${NPA[$index]}" == "NPA_US" ]; then
for i in "${NPA_US[@]}"; do
TEST=`echo $NUMMER | sed -e "s/^\+${CC[$index]}$i//"`
if [ "$TEST" != "$NUMMER" ]; then
COUNTRY=${LAND[$index]}
CINDEX=$index
break
fi
done
else
for i in "${NPA_CA[@]}"; do
TEST=`echo $NUMMER | sed -e "s/^\+${CC[$index]}$i//"`
if [ "$TEST" != "$NUMMER" ]; then
COUNTRY=${LAND[$index]}
CINDEX=$index
break
fi
done
fi
else
COUNTRY=${LAND[$index]}
CINDEX=$index
fi
fi
if [ "$CINDEX" -ne "-1" ]; then
break
fi
let "index = $index + 1"
done
if [ $CINDEX -ne -1 ]; then
echo "Ländererkennung" >> $LOGFILE
echo "Erkanntes Land: " $COUNTRY >> $LOGFILE
else
echo "keine Reverssuche für Land des Anrufers" >> $LOGFILE
fi
}
## Pruefen, ob eine Ermittlungsroutine fuer die Rufnummer vorhanden ist (mit Daten aus MYSQL)
function check_land_mysql {
COUNTRY=""
index=15
TEST=`echo $NUMMER | sed -e "s/^\+/00/"`
while [ $index -gt 3 ]; do
skey=${TEST:0:$index}
TEMP=`mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB --execute="select concat(a.iso3166,'|',a.deutsch,'|',b.name) from $ETABLE a,$CTABLE b where a.exten='$skey' and a.iso3166=b.iso3166" | \
tail -n +2 | tr '\t' '|'`
if [ "$TEMP" != "" ]; then
iso=`echo $TEMP | cut -d '|' -f 1`
EXTDESC=`echo $TEMP | cut -d '|' -f 2`
COUNTRY=`echo $TEMP | cut -d '|' -f 3`
index=3
fi
let "index = $index - 1"
done
if [ "$COUNTRY" != "" ]; then
index=0
while [ "$index" -lt "$CLAND" ]; do
if [ "${ISO[$index]}" == "$iso" ]; then
CINDEX=$index
break
fi
let "index = $index + 1"
done
fi
if [ $CINDEX -ne -1 ]; then
echo "Ländererkennung" >> $LOGFILE
echo "Erkanntes Land: " $COUNTRY >> $LOGFILE
else
echo "keine Reverssuche für Land des Anrufers" >> $LOGFILE
fi
}
## Pruefen, ob eine Ermittlungsroutine fuer die Rufnummer vorhanden ist (mit Daten aus PGSQL)
function check_land_pgsql {
COUNTRY=""
index=15
TEST=`echo $NUMMER | sed -e "s/^\+/00/"`
while [ $index -gt 3 ]; do
skey=${TEST:0:$index}
TEMP=`psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "select a.iso3166,a.deutsch,b.name from $ETABLE a,$CTABLE b where a.exten='$skey' and a.iso3166=b.iso3166"`
if [ "$TEMP" != "" ]; then
iso=`echo $TEMP |cut -d '|' -f 1| sed 's/\s//g'`
EXTDESC=`echo $TEMP | cut -d '|' -f 2 | sed 's/\s//g'`
COUNTRY=`echo $TEMP | cut -d '|' -f 3 | sed 's/\s//g'`
index=3
fi
let "index = $index - 1"
done
if [ "$COUNTRY" != "" ]; then
index=0
while [ "$index" -lt "$CLAND" ]; do
if [ "${ISO[$index]}" == "$iso" ]; then
CINDEX=$index
break
fi
let "index = $index + 1"
done
fi
if [ $CINDEX -ne -1 ]; then
echo "Laendererkennung" >> $LOGFILE
echo "Erkanntes Land: " $COUNTRY >> $LOGFILE
else
echo "keine Reverssuche-Fund des Anrufers wg. LAND" >> $LOGFILE
fi
}
function DEUTSCHLAND {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
if [ "$DE_PREFERED" == "OERTLICHE" ]; then
oertliches
if [ "$NAME" == "" ]; then
if [ "$DE_CASCADE" == "YES" ]; then
klicktel
fi
fi
else
klicktel
if [ "$NAME" == "" ]; then
if [ "$DE_CASCADE" == "YES" ]; then
oertliches
fi
fi
fi
}
function oertliches {
wget -q --tries=3 --timeout=5 -O $TMPFILE "http://www1.dasoertliche.de/?form_name=search_inv&ph=$SNUM"
NAME=`grep 'class=\"counter.*' -m1 -A1 /tmp/ast_revers.agi_html_tmp | sed -e s/^.*\"counter\"//g -e s/\<'\/'a\>.*//g -e s/^.*\>//g -e s/\<.*//`
DETAILS=`grep 'class=\"counter.*' -m1 -A5 $TMPFILE | sed '/\"counter/,+4d;s/^[ \t]*//g;s/\ \;/ /g;s/<\/.*$//'`
if [ "$BLACKLIST" == "YES" ]; then
if [ "$AUTOBLACKLIST" != "" ]; then
BLACK=`grep -i "$AUTOBLACKLIST" $TMPFILE`
if [ "$BLACK" != "" ]; then
ISBLACK=Ja
fi
fi
fi
rm $TMPFILE
}
function klicktel {
if echo $SNUM | grep '^01';then
echo "Das ist ein Handy"
else
wget -q --tries=3 --timeout=5 -O $TMPFILE "http://www.klicktel.de/inverssuche/backwardssearch.html?newSearch=1&boxtype=backwards&sid=270asss9s9u1m4l7bfvhc3tbb6&vollstaendig=$SNUM"
if grep -i "1 Treffer" $TMPFILE > /dev/null;then
echo "EIN TREFFER!"
NAME=`grep 'class=\"namelink\".*' -m1 $TMPFILE | sed -e 's/<[^>]*>//g'`
NAME=`echo $NAME | sed 's/\ö\;/ö/g;s/\ä\;/ä/g;s/\ü\;/ü/g;s/\Ö\;/Ö/g;s/\Ä\;/Ä/g;s/\Ü\;/Ü/g;s/\&szuml\;/ß/g'`
DETAILS=`grep 'class=\"data\ track".*' -m1 -A4 $TMPFILE | sed -e 's/<[^>]*>//g' -e s/\ \;/\ /g `
if [ "$BLACKLIST" == "YES" ]; then
if [ "$AUTOBLACKLIST" != "" ]; then
BLACK=`grep -i "$AUTOBLACKLIST" $TMPFILE`
if [ "$BLACK" != "" ]; then
ISBLACK=Ja
fi
fi
fi
fi;
rm $TMPFILE
fi;
}
function SCHWEIZ {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
wget -q --tries=3 --timeout=5 -O $TMPFILE "http://tel.search.ch/result.html?name=&misc=&strasse=&ort=&kanton=&tel=$SNUM"
NAME=`grep 'class=\"rname\".*' -m1 $TMPFILE | sed -e s/^.*\"rname\"\>//g -e s/\<'\/'a\>.*//g -e s/^.*\>//`
if [ "$NAME" != "" ]; then
DETAILS=`grep 'class=\"raddr\".*' -m1 $TMPFILE | sed -e s/^.*\"raddr\"\>//g -e s/\<'\/'div\>.*//g -e s/\<span.*addrpart\"\>//g -e s/\<'\/'span\>//g`
STRA=`echo $DETAILS | cut -d "," -f 1`
ORT=`echo $DETAILS | cut -d "," -f 2`
DETAILS="$STRA, ${LAND[$CINDEX]} $ORT"
fi
rm $TMPFILE
}
function OESTERREICH {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
#Variante für Lynx, nicht weiter verfolgt (Dunp-Datei ist nicht zum HTML von wget/curl) kompatibel)
#echo "pc=in&suchmaske=_einfach&aktion=suchein&loga=&selsort=&AktuelleSeite=0&blaettern=_einfach$SNUM&wen=&was=&wo=&karte=nichtanzeigen&telnummer=$SNUM" | \
#lynx -dump -nolist -force_html -post_data "http://www.tb-online.at/index.php" > $TMPFILE
#Variante mit wget
wget -q --tries=3 --timeout=5 --post-data="pc=in&suchmaske=_einfach&aktion=suchein&loga=&selsort=&AktuelleSeite=0&blaettern=_einfach$SNUM&wen=&was=&wo=&karte=nichtanzeigen&telnummer=$SNUM" -O $TMPFILE "http://www.tb-online.at/index.php"
#Variante mit curl
#curl -s -d "pc=in&suchmaske=_einfach&aktion=suchein&loga=&selsort=&AktuelleSeite=0&blaettern=_einfach$SNUM&wen=&was=&wo=&karte=nichtanzeigen&telnummer=$SNUM" http://www.tb-online.at/index.php > $TMPFILE
NAME=`grep 'class=\"name\".*' -m1 $TMPFILE | sed -e s/^.*\"name\"\>//g -e s/\<'\/'p\>.*//g`
if [ "$NAME" != "" ]; then
DETAILS=`grep 'class=\"name\".*' -m1 -A1 $TMPFILE | sed -e s/^.*\"name\"\>.*//g -e s/\<p\ class\=\"telnummer\".*//g -e s/\<'\/'p\>/\|/g -e s/\<p\>//g -e s/\ \;/\ /g`
STRA=`echo $DETAILS | cut -d '|' -f 1`
ORT=`echo $DETAILS | cut -d '|' -f 2`
DETAILS="$STRA, ${LAND[$CINDEX]}$ORT"
fi
rm $TMPFILE
}
function LUXEMBURG {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
wget -q --tries=3 --timeout=5 -O $TMPFILE "http://www.editustel.lu/luxweb/neosearchAT.do?input=$SNUM&imageField.x=47&imageField.y=15&lan=AL&sessionKey=6DPill4msv5kzCdRPsmymxI"
TEMP=`grep 'class=\"raisSoc\".*' -m1 $TMPFILE | sed -e s/^.*\"raisSoc\".*\<span\>\<strong\>//g -e s/\<'\/'div\>.*//`
NAME="`echo $TEMP | cut -d '<' -f 1 | cut -d ' ' -f 2 ` `echo $TEMP | cut -d '<' -f 1 | cut -d ' ' -f 1 `"
if [ "$NAME" != "" ]; then
STRA=`echo $TEMP | cut -d '>' -f 3 | sed -e s/\<.*//`
ORT=`echo $TEMP | cut -d '>' -f 4 | sed -e s/\<.*// -e s/\ \;/\ /g -e s/^L\-//`
DETAILS="$STRA, ${LAND[$CINDEX]} $ORT"
fi
rm $TMPFILE
}
function USA {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}//"`
NPA=${SNUM:0:3}
SN=${SNUM:3}
wget -q --tries=3 --timeout=5 -O $TMPFILE "http://www.anywho.com/qry/wp_rl/?npa=$NPA&telephone=$SN"
TEMP=`grep 'Reverse Telephone.*' -m1 -A 12 $TMPFILE | tr '\n' ' '`
if [ "$TEMP" != "" ]; then
NAME=`echo $TEMP | sed -e s/^.*\<B\>// -e s/\<'\/'B\>.*//`
NAME="`echo $NAME | cut -d ',' -f 2 | sed -e s/^\ //` `echo $NAME | cut -d ',' -f 1`"
STRA=`echo $TEMP | sed -e s/^.*\-\-\>\ // | cut -d '<' -f 1`
ORT=`echo $TEMP | sed -e s/^.*\-\-\>\ // | cut -d '<' -f 2 | sed -e s/.*\>\ //`
DETAILS="$STRA, ${LAND[$CINDEX]} $ORT"
fi
rm $TMPFILE
}
function KANADA {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}//"`
# Private Einträge
wget -q --tries=3 --timeout=5 -U 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7' -O $TMPFILE "http://411ca.whitepages.com/search/ReversePhone?phone=$SNUM"
TEMP=`grep 'div class=\"name\"*' -m1 -A 2 $TMPFILE | tr '\n' ' ' `
if [ "$TEMP" != "" ]; then
NAME=`echo $TEMP | sed -e s/.*left\;\"\>// -e s/\<'\/'div\>\ \<div.*// -e s/amp\;//`
NAME="`echo $NAME | cut -d ',' -f 2| sed -e s/^\ // ` `echo $NAME | cut -d ',' -f 1`"
STRA=`echo $TEMP | sed -e s/.*\;\"// |cut -d '<' -f 1`
ORT=`echo $TEMP | sed -e s/.*\;\"// |cut -d '<' -f 2 | sed -e s/.*\>//`
DETAILS="$STRA, ${LAND[$CINDEX]} $ORT"
else
#Business-Einträge
wget -q --tries=3 --timeout=5 -U 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7' -O $TMPFILE "http://www.411.ca/websearchservlet?lang=eng&click411=null&canoe=null&combined=$SNUM&sessionId=10DCC8A126531A74FCD5FE0D32478080&qid=1004552341838772480&tid=NEW_SEARCH"
NAME=`grep 'class=\"cabecera\"' -m1 -A 2 $TMPFILE | tr '\n' ' ' | sed -e s/.*\<b\>// -e s/\<'\/'b\>.*//g`
if [ "$NAME" != "" ]; then
STRA=`grep 'span class=\"cabecera\"' -m1 $TMPFILE | sed -e s/.*cabecera\"\>// -e s/\<'\/'span\>.*// -e s/\,\ \;//g`
ORT=`grep 'span class=\"cabecera\"' -m2 $TMPFILE | tr '\n' ' ' | sed -e s/.*cabecera\"\>// -e s/\<'\/'span\>.*//g`
DETAILS="$STRA, ${LAND[$CINDEX]} $ORT"
fi
fi
rm $TMPFILE
}
function FRANKREICH {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
wget -q --tries=3 --timeout=5 --post-data="actionForwardName=reponseINV&numeroTelephone=$SNUM" -O $TMPFILE "http://www.pagesjaunes.fr/quidonc/aquiestcenumero.do;jsessionid=8005631F6C26F75B86616A34ABE46121.yas41f"
NAME=`grep 'N4_bloc_parution_raison' -m1 $TMPFILE | sed -e s/.*N4_bloc_parution_raison\ sclear\"\>// -e s/\<'\/'h5\>.*// -e s/\ *$//`
if [ "$NAME" != "" ]; then
TEMP=`grep 'N5_bloc_parution_adresse' -A 3 -m1 $TMPFILE |tr '\n' ' ' | tr '\t' ' ' | sed -e s/^.*\<'\/'strong\>// -e s/\<'\/'p\>.*// -e s/^\ *//`
STRA=""
ORT=""
SO="0"
set -- $TEMP
for items in $@
do
T1=`echo $items | sed -e s/^[0-9][0-9][0-9][0-9][0-9]$//`
if [ "$items" != "$T1" ]; then
SO="1"
fi
if [ "$SO" == "0" ]; then
STRA="$STRA $items"
else
ORT="$ORT $items"
fi
done
STRA=${STRA:1}
DETAILS="$STRA, ${LAND[$CINDEX]}$ORT"
fi
rm $TMPFILE
}
function SPANIEN {
SNUM=`echo $NUMMER | sed -e "s/^+${CC[$CINDEX]}/${NAC[$CINDEX]}/"`
TEMP=`$SE/spanien.php $SNUM`
NAME=`echo $TEMP | cut -d '|' -f 1`
STRA=`echo $TEMP | cut -d '|' -f 2`
ORT=`echo $TEMP | cut -d '|' -f 3`
if [ "$NAME" != "" ]; then
DETAILS="$STRA, ${LAND[$CINDEX]} $ORT"
fi
}
## Die Werte NUMMER NAME und DEATAILS in das cache schreiben
function write_cache {
echo "Gefunde Werte ins cache schreiben" >> $LOGFILE
if [ "$BLACKLIST" == "YES" ]; then
echo -e "$NUMMER\t$NAME\t$DETAILS\t$ISBLACK" >> $CACHE
else
echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
fi
}
## Die Werte NUMMER NAME und DEATAILS aus dem cache lesen
function read_cache {
echo "Suche nach $NUMMER im cache" >> $LOGFILE
NAME=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $2 }' $CACHE`
DETAILS=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $3 }' $CACHE`
if [ "$BLACKLIST" == "YES" ]; then
ISBLACK=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $4 }' $CACHE`
if [ "$ISBLACK" == "NULL" ] || [ "$ISBLACK" == "" ]; then
ISBLACK=Nein
fi
fi
}
function read_cache2 {
echo "Suche nach $NUMMER im cache2 " >> $LOGFILE
NAME=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $2 }' $CACHE2`
DETAILS=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $3 }' $CACHE2`
if [ "$BLACKLIST" == "YES" ]; then
ISBLACK=`awk -F '\t' '{ if ($1 == "'$NUMMER'") print $4 }' $CACHE2`
if [ "$ISBLACK" == "NULL" ] || [ "$ISBLACK" == "" ]; then
ISBLACK=Nein
fi
fi
}
## Die Werte DETAILS, NAME, NUMMER, platzhalter in eine sqlite3 DB schreiben
function sq3_write {
echo "Gefunde Werte in die SQL3-DB schreiben" >> $LOGFILE
#echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
$SQLBIN $DB <<SQL_ENTRY_TAG_1
if [ "$BLACKLIST" == "YES" ]; then
INSERT
INTO dasoertliche
values ('$AFELD','$DETAILS','$NAME','$NUMMER','$VBOX','$ISBLACK');
else
INSERT
INTO dasoertliche
values ('$AFELD','$DETAILS','$NAME','$NUMMER','$VBOX');
fi
SQL_ENTRY_TAG_1
}
## Die Werte DEATAILS, NAME aus einer sqlite3 DB lesen
function sq3_read {
echo "Suche nach $NUMMER in SQL3-DB" >> $LOGFILE
$SQLBIN $DB "SELECT NAME FROM dasoertliche WHERE NUMBER='${NUMMER}'" | ( while read NAME ; do echo $NAME > $SQL_NAME_CACHE; done )
$SQLBIN $DB "SELECT DETAILS FROM dasoertliche WHERE NUMBER='${NUMMER}'" | ( while read DETAILS ; do echo $DETAILS > $SQL_DETAILS_CACHE; done )
NAME=`cat $SQL_NAME_CACHE`
DETAILS=`cat $SQL_DETAILS_CACHE`
if [ "$BLACKLIST" == "YES" ]; then
$SQLBIN $DB "SELECT BLACK FROM dasoertliche WHERE NUMBER='${NUMMER}'" | ( while read BLACK ; do echo $BLACK > $SQL_BLACK_CACHE; done )
ISBLACK=`cat $SQL_BLACK_CACHE`
if [ "$ISBLACK" == "NULL" ] || [ "$ISBLACK" == "" ]; then
ISBLACK=Nein
fi
rm $SQL_BLACK_CACHE
fi
rm $SQL_NAME_CACHE
rm $SQL_DETAILS_CACHE
}
## Die Werte DETAILS, NAME, NUMMER, platzhalter in eine MYSQL- DB schreiben
function mysql_write {
echo "Gefunde Werte in die MYSQL-DB schreiben" >> $LOGFILE
if [ "$BLACKLIST" == "YES" ]; then
echo "insert ignore into $CACHETAB(nummer,name,details,black) values ('$NUMMER','$NAME','$DETAILS','$ISBLACK')" | mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB
else
echo "insert ignore into $CACHETAB(nummer,name,details) values ('$NUMMER','$NAME','$DETAILS')" | mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB
fi
}
## Die Werte DETAILS, NAME, NUMMER, platzhalter aus einer MYSQL- DB lesen
function mysql_read {
echo "Suche nach $NUMMER in MYSQL-DB" >> $LOGFILE
if [ "$BLACKLIST" == "YES" ]; then
TEMP=`mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB --execute="select concat(name,'|',details,'|',black) from $CACHETAB where nummer='$NUMMER'" | \
tail -n +2 | tr '\t' '|'`
else
TEMP=`mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB --execute="select concat(name,'|',details) from $CACHETAB where nummer='$NUMMER'" | \
tail -n +2 | tr '\t' '|'`
fi
if [ "$TEMP" != "" ]; then
NAME=`echo $TEMP | cut -d '|' -f 1`
DETAILS=`echo $TEMP | cut -d '|' -f 2`
if [ "$BLACKLIST" == "YES" ]; then
ISBLACK=`echo $TEMP | cut -d '|' -f 3`
if [ "$ISBLACK" == "NULL" ] || [ "$ISBLACK" == "" ]; then
ISBLACK=Nein
fi
fi
fi
}
## Die Werte DETAILS, NAME, NUMMER, platzhalter in eine PGSQL- DB schreiben
function pgsql_write {
echo "Gefunde Werte in die PGSQL-DB schreiben" >> $LOGFILE
if [ "$BLACKLIST" == "YES" ]; then
psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "insert into $CACHETAB(nummer,name,details,black) values ('$NUMMER','$NAME','$DETAILS','$ISBLACK')"
else
psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "insert into $CACHETAB(nummer,name,details) values ('$NUMMER','$NAME','$DETAILS')"
fi
}
## Die Werte DETAILS, NAME, NUMMER, platzhalter aus einer PGSQL- DB lesen
function pgsql_read {
echo "Suche nach $NUMMER in PGSQL-DB" >> $LOGFILE
if [ "$BLACKLIST" == "YES" ]; then
TEMP=`psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "select name,details,black from $CACHETAB where nummer='$NUMMER'"`
else
TEMP=`psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "select name,details from $CACHETAB where nummer='$NUMMER'"`
fi
if [ "$TEMP" != "" ]; then
NAME=`echo $TEMP | cut -d '|' -f 1`
DETAILS=`echo $TEMP | cut -d '|' -f 2`
if [ "$BLACKLIST" == "YES" ]; then
ISBLACK=`echo $TEMP | cut -d '|' -f 3`
if [ "$ISBLACK" == "NULL" ] || [ "$ISBLACK" == "" ]; then
ISBLACK=Nein
fi
fi
fi
}
## Anrufliste_log
# wunsch von kombjuder
function anruf_log {
if [ -e $ALPFAD/$ALFILE ]; then
echo "Anruf.log ($ALFILE) erstellt" >> $LOGFILE
echo "$ALDATE - $ALTIME - $NUMMER - $NAME - $DETAILS" >> $ALPFAD/$ALFILE
else
echo "bestehendes Anruf.log ($ALFILE) verwendet" >> $LOGFILE
echo "$ALDATE - $ALTIME - $NUMMER - $NAME - $DETAILS" > $ALPFAD/$ALFILE
fi
}
## Anrufliste_log in DB
function anruf_log_db {
if [ "$LOGDB" == "MYSQL" ]; then
echo "insert ignore into $LOGTAB (nummer,destination) values ('$NUMMER','$DEST')" | mysql -h$MYSQLHOST -u$MYSQLUSER -p$MYSQLPASS $MYSQLDB
fi
if [ "$LOGDB" == "PGSQL" ]; then
psql -h$PGSQLHOST -U$PGSQLUSER -p$PGSQLPORT $PGSQLDB -t -c "insert into $LOGTAB(nummer,destination) values ('$NUMMER','$DEST')"
fi
}
## OSD Mitteilung an den VDR per "svdrpsend.pl"
## im svdrpsend.pl script wirde "localhost" durch die VDR-IP ersetzt
function osdvdr {
svdrpsend.pl "mesg ANRUF: $NAME $NUM"
svdrpsend.pl "mesg $DETAILS"
}
## LONGNAME an die Asterisk uebergeben
function asterisk {
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
# Für mein Fax-Script wird auch Details zurückgeschrieben
echo 'SET VARIABLE LONGDETAILS '"\"$DETAILS\"" >/dev/stdout
#falls BLACKLISTING-Funktionalitaet gesetzt, dieses auch zuückgeben
if [ "$BLACKLIST" == "YES" ]; then
echo 'SET VARIABLE BLACK '"\"$ISBLACK\"" >/dev/stdout
fi
}
## Mailbenachrichtigung über gmail absetzen
function jabber {
TEMP=`$SP/sendmessage.php $JUSER $JPASS $JMAIL "$JTEXT"`
if [ "$TEMP" == "OK" ]; then
echo "Anrufnachricht erfolgreich versendet" >> $LOGFILE
fi
}
######################
#####################
####################
#
# Funktionen ende
#
###################
####################
#####################
if [ -e $LOGFILE ]; then
rm $LOGFILE
fi
touch $LOGFILE
echo "-----------------------------------------------------" >> $LOGFILE
echo "Logfile Reverssuche vom $DATE" >> $LOGFILE
echo "-----------------------------------------------------" >> $LOGFILE
echo "" >> $LOGFILE
# Pruefen ob eine Nummer uebermittelt wurde (nur reine Ziffernfolge und +)
TEST=`echo $NUMMER | sed -e s/[\+0-9]//g`
if [ "$TEST" != "" ] || [ "$NUMMER" == "" ] ; then
echo "Keine Rufnummer uebermittelt" >> $LOGFILE
NAME="geheim"
asterisk
exit 0
fi
#Initialisieren
if [ "$BLACKLIST" == "YES" ]; then
ISBLACK=Nein
fi
echo "Suchen nach Nummer $NUMMER" >> $LOGFILE
#Wenn Parameter von MYSQL, dann Parameter lesen
if [ "$PARAMS" = "MYSQL" ]; then
MYSQL_params
fi
if [ "$PARAMS" = "PGSQL" ]; then
PGSQL_params
fi
# Nummer normalisieren und anschlieÃ?end im Cache suche
echo "Nummer Normalisieren " >> $LOGFILE
normalisierung
if [ "$SPEICHERORT" == "SQL3" ]; then
echo "SQLite-DB gewaehlt" >> $LOGFILE
sq3_read
elif [ "$SPEICHERORT" == "CACHE" ]; then
echo "Cache-File gewaehlt" >> $LOGFILE
#CACHE-File erzeugen
if [ -e $CACHE ]; then
echo "Cache-File vorhanden" >> $LOGFILE
else
touch $CACHE
echo "Cache-File erstellen" > $LOGFILE
fi
read_cache
if [ "$USE_CACHE2" == "YES" ]; then
read_cache2
fi
elif [ "$SPEICHERORT" == "MYSQL" ]; then
echo "MYSQL-DB gewaehlt" >> $LOGFILE
mysql_read
elif [ "$SPEICHERORT" == "PGSQL" ]; then
echo "PGSQL-DB gewaehlt" >> $LOGFILE
pgsql_read
fi
# Wenn im Cache nichts steht wird ueber eine passende I-Net Seite gesucht
if [ "$NAME" == "" ]; then
echo "Cache hat keinen passenden Eintrag" >> $LOGFILE
if [ "$PARAMS" == "MYSQL" ]; then
check_land_mysql
elif [ "$PARAMS" == "PGSQL" ]; then
check_land_pgsql
elif [ ""=="" ]; then
check_land
fi
if [ $CINDEX -ne -1 ]; then
echo "I-Net Reverssuche in " $COUNTRY >> $LOGFILE
${LAND[$CINDEX]}
NAME=`echo $NAME| sed 's/\r//g'`
DETAILS=`echo $DETAILS| sed 's/\r//g'`
if [ "$RESET_UML" == 1 ]; then
NAME=`echo $NAME| sed 's/ö/oe/g;s/ü/ue/g;s/ä/ae/g;s/ß/ss/g;s/Ö/Oe/g;s/Ü/Ue/g;s/Ä/Ae/g'`
DETAILS=`echo $DETAILS| sed 's/ö/oe/g;s/ü/ue/g;s/ä/ae/g;s/ß/ss/g;s/Ö/Oe/g;s/Ü/Ue/g;s/Ä/Ae/g'`
fi
echo " Name: $NAME DETAILS: $DETAILS per I-Net gefunden" >> $LOGFILE
fi
else
echo "Wert im Cache gefunden" >> $LOGFILE
CACHETRUE=1
echo "CACHETRUE auf 1 gesetzt" >> $LOGFILE
echo " Name: $NAME DETAILS: $DETAILS" >> $LOGFILE
fi
# Wenn dasOertliche.de nichts findet NAME und DETAILS f�¼llen
if [ "$NAME" == "" ]; then
if [ $CINDEX -ne -1 ]; then
echo "Reverssuche in " $COUNTRY " gab keinen Treffer" >> $LOGFILE
fi
if [ "$PARAMS" == "MYSQL" ] && [ "$EXTDESC" != "" ]; then
NAME="kein Eintrag"
DETAILS=$EXTDESC
echo "Werte mit gefundener Extension fuer Name: $NAME und Details: $DETAILS" >> $LOGFILE
else
NAME="kein Eintrag"
DETAILS="keine Adresse"
echo "Standartwerte fuer Name: $NAME und Details: $DETAILS" >> $LOGFILE
fi
fi
if [ "$CACHETRUE" == 0 ]; then
echo "Werte in den Cache schreiben" >> $LOGFILE
if [ "$SPEICHERORT" == "SQL3" ]; then
echo "SQLite-DB gewaehlt" >> $LOGFILE
sq3_write
elif [ "$SPEICHERORT" == "CACHE" ]; then
echo "Cache-File gewaehlt" >> $LOGFILE
write_cache
elif [ "$SPEICHERORT" == "MYSQL" ]; then
echo "MYSQL-DB gewaehlt" >> $LOGFILE
mysql_write
elif [ "$SPEICHERORT" == "PGSQL" ]; then
echo "PGSQL-DB gewaehlt" >> $LOGFILE
pgsql_write
fi
fi
echo "Variable fuer Asterisk setzen" >> $LOGFILE
asterisk
if [ "$VDR" == 1 ];then
echo "VDR-OSD ansteuern" >> $LOGFILE
osdvdr
fi
echo "Anruflog="$ALYES >> $LOGFILE
if [ "$ALYES" == 1 ]; then
anruf_log
echo "Werte in Anruflog schreiben" >> $LOGFILE
if [ "$LOGDB" != "0" ]; then
anruf_log_db;
fi
else
echo "Anruflog ausgeschaltet" >> $LOGFILE
fi
if [ "$JABBER" == "1" ]; then
echo "Anrufnachricht versenden" >> $LOGFILE
jabber
fi