FB_CALLMONITOR: use online reverse search providers only for their corresponding country phone numbers (Forum: #71051)

git-svn-id: https://svn.fhem.de/fhem/trunk@14988 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
markusbloch 2017-09-02 14:17:46 +00:00
parent 5840efa6c3
commit 7326aa295e
2 changed files with 137 additions and 100 deletions

View File

@ -1,5 +1,8 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it. # Do not insert empty lines here, update check depends on it.
- changed: 72_FB_CALLMONITOR: reverse search only numbers for the specific
country (e.g. german numbers only via klicktel.de,dasoertliche.de,
austrian numbers via dasschnelle.at, swiss via search.ch)
- feature: 37_Spotify: new readings - feature: 37_Spotify: new readings
- new: 93_Log2Syslog: V3.0.0, first release - new: 93_Log2Syslog: V3.0.0, first release
- bugfix: 93_DbRep: V5.6.2, commandref revised - bugfix: 93_DbRep: V5.6.2, commandref revised

View File

@ -589,6 +589,7 @@ FB_CALLMONITOR_reverseSearch($$)
my $result; my $result;
my $status; my $status;
my $invert_match = undef; my $invert_match = undef;
my $country_code = AttrVal($name, "country-code", "0049");
my @attr_list = split("(,|\\|)", AttrVal($name, "reverse-search", "")); my @attr_list = split("(,|\\|)", AttrVal($name, "reverse-search", ""));
foreach my $method (@attr_list) foreach my $method (@attr_list)
@ -627,6 +628,13 @@ FB_CALLMONITOR_reverseSearch($$)
# Ask klicktel.de # Ask klicktel.de
if($method eq "klicktel.de") if($method eq "klicktel.de")
{ {
unless(($number =~ /^0[1-9]/ and $country_code eq "0049") or $number =~ /^0049/)
{
Log3 $name, 4, "FB_CALLMONITOR ($name) - skip using klicktel.de for reverse search of $number because of non-german number";
}
else
{
$number =~ s/^0049/0/; # remove country code
Log3 $name, 4, "FB_CALLMONITOR ($name) - using klicktel.de for reverse search of $number"; Log3 $name, 4, "FB_CALLMONITOR ($name) - using klicktel.de for reverse search of $number";
$result = GetFileFromURL("http://openapi.klicktel.de/searchapi/invers?key=0de6139a49055c37b9b2d7bb3933cb7b&number=".$number, 5, undef, 1); $result = GetFileFromURL("http://openapi.klicktel.de/searchapi/invers?key=0de6139a49055c37b9b2d7bb3933cb7b&number=".$number, 5, undef, 1);
@ -652,10 +660,18 @@ FB_CALLMONITOR_reverseSearch($$)
$status = "unknown"; $status = "unknown";
} }
} }
}
# Ask dasoertliche.de # Ask dasoertliche.de
elsif($method eq "dasoertliche.de") elsif($method eq "dasoertliche.de")
{ {
unless(($number =~ /^0[1-9]/ and $country_code eq "0049") or $number =~ /^0049/)
{
Log3 $name, 4, "FB_CALLMONITOR ($name) - skip using dasoertliche.de for reverse search of $number because of non-german number";
}
else
{
$number =~ s/^0049/0/; # remove country code
Log3 $name, 4, "FB_CALLMONITOR ($name) - using dasoertliche.de for reverse search of $number"; Log3 $name, 4, "FB_CALLMONITOR ($name) - using dasoertliche.de for reverse search of $number";
$result = GetFileFromURL("http://www1.dasoertliche.de/?form_name=search_inv&ph=".$number, 5, undef, 1); $result = GetFileFromURL("http://www1.dasoertliche.de/?form_name=search_inv&ph=".$number, 5, undef, 1);
@ -686,10 +702,19 @@ FB_CALLMONITOR_reverseSearch($$)
$status = "unknown"; $status = "unknown";
} }
} }
}
# SWITZERLAND ONLY!!! Ask search.ch # SWITZERLAND ONLY!!! Ask search.ch
elsif($method eq "search.ch") elsif($method eq "search.ch")
{ {
unless(($number =~ /^0[1-9]/ and $country_code eq "0041") or $number =~ /^0041/)
{
Log3 $name, 4, "FB_CALLMONITOR ($name) - skip using search.ch for reverse search of $number because of non-swiss number";
}
else
{
$number =~ s/^0041/0/; # remove country code
Log3 $name, 4, "FB_CALLMONITOR ($name) - using search.ch for reverse search of $number"; Log3 $name, 4, "FB_CALLMONITOR ($name) - using search.ch for reverse search of $number";
$result = GetFileFromURL("http://tel.search.ch/api/?key=b0b1207cb7c9d0048867de887aa9a4fd&maxnum=1&was=".$number, 5, undef, 1); $result = GetFileFromURL("http://tel.search.ch/api/?key=b0b1207cb7c9d0048867de887aa9a4fd&maxnum=1&was=".$number, 5, undef, 1);
@ -734,10 +759,18 @@ FB_CALLMONITOR_reverseSearch($$)
$status = "unknown"; $status = "unknown";
} }
} }
}
# Austria ONLY!!! Ask dasschnelle.at # Austria ONLY!!! Ask dasschnelle.at
elsif($method eq "dasschnelle.at") elsif($method eq "dasschnelle.at")
{ {
unless(($number =~ /^0[1-9]/ and $country_code eq "0043") or $number =~ /^0043/)
{
Log3 $name, 4, "FB_CALLMONITOR ($name) - skip using dasschnelle.at for reverse search of $number because of non-swiss number";
}
else
{
$number =~ s/^0043/0/; # remove country code
Log3 $name, 4, "FB_CALLMONITOR ($name) - using dasschnelle.at for reverse search of $number"; Log3 $name, 4, "FB_CALLMONITOR ($name) - using dasschnelle.at for reverse search of $number";
$result = GetFileFromURL("http://www.dasschnelle.at/ergebnisse?what=".$number."&where=&rubrik=0&bezirk=0&orderBy=Standard&mapsearch=false", 5, undef, 1); $result = GetFileFromURL("http://www.dasschnelle.at/ergebnisse?what=".$number."&where=&rubrik=0&bezirk=0&orderBy=Standard&mapsearch=false", 5, undef, 1);
@ -766,7 +799,7 @@ FB_CALLMONITOR_reverseSearch($$)
undef($result); undef($result);
return $invert_match; return $invert_match;
} }
elsif(not $result =~ /Es wurden keine passenden Eintr.ge gefunden/) elsif(not $result =~ /Ihre Suche nach .* war erfolglos/)
{ {
Log3 $name, 3, "FB_CALLMONITOR ($name) - the reverse search result for $number could not be extracted from dasschnelle.at. Please contact the FHEM community."; Log3 $name, 3, "FB_CALLMONITOR ($name) - the reverse search result for $number could not be extracted from dasschnelle.at. Please contact the FHEM community.";
} }
@ -776,6 +809,7 @@ FB_CALLMONITOR_reverseSearch($$)
} }
} }
} }
}
if(AttrVal($name, "reverse-search-cache", "0") eq "1" and defined($status)) if(AttrVal($name, "reverse-search-cache", "0") eq "1" and defined($status))
{ {