line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package IP::Country::DNSBL; |
2
|
1
|
|
|
1
|
|
7518
|
use strict; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
34
|
|
3
|
1
|
|
|
1
|
|
7
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
33
|
|
4
|
|
|
|
|
|
|
|
5
|
1
|
|
|
1
|
|
1034
|
use Socket; |
|
1
|
|
|
|
|
4513
|
|
|
1
|
|
|
|
|
649
|
|
6
|
1
|
|
|
1
|
|
961
|
use Net::DNS; |
|
1
|
|
|
|
|
100950
|
|
|
1
|
|
|
|
|
114
|
|
7
|
1
|
|
|
1
|
|
8
|
use Carp; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
62
|
|
8
|
|
|
|
|
|
|
|
9
|
1
|
|
|
1
|
|
6
|
use vars qw ( $VERSION ); |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
513
|
|
10
|
|
|
|
|
|
|
$VERSION = '1.02'; |
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
my $resolver = Net::DNS::Resolver->new; |
13
|
|
|
|
|
|
|
my $ip_match = qr/^(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])\.(\d|[01]?\d\d|2[0-4]\d|25[0-5])$/o; |
14
|
|
|
|
|
|
|
|
15
|
|
|
|
|
|
|
sub new () |
16
|
|
|
|
|
|
|
{ |
17
|
1
|
|
|
1
|
0
|
16
|
my ($caller,$server) = @_; |
18
|
1
|
50
|
|
|
|
4
|
$server = defined($server) ? $server : 'country.netop.org'; |
19
|
1
|
|
33
|
|
|
8
|
my $class = ref($caller) || $caller; |
20
|
1
|
|
|
|
|
9
|
return bless \$server, $class; |
21
|
|
|
|
|
|
|
} |
22
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
sub db_time |
24
|
|
|
|
|
|
|
{ |
25
|
0
|
|
|
0
|
0
|
|
return 0; |
26
|
|
|
|
|
|
|
} |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
sub inet_atocc |
29
|
|
|
|
|
|
|
{ |
30
|
0
|
|
|
0
|
1
|
|
my ($self,$inet_a) = @_; |
31
|
0
|
|
|
|
|
|
my $server = $$self; |
32
|
0
|
|
|
|
|
|
my $dnsbl_host; |
33
|
0
|
0
|
|
|
|
|
if ($inet_a =~ $ip_match){ |
34
|
0
|
|
|
|
|
|
$dnsbl_host = "$4.$3.$2.$1.$server"; |
35
|
|
|
|
|
|
|
} else { |
36
|
0
|
|
0
|
|
|
|
my $inet_n = inet_aton($inet_a) || return undef; # host lookup |
37
|
0
|
|
0
|
|
|
|
$inet_a = inet_ntoa($inet_n) || return undef; |
38
|
0
|
0
|
|
|
|
|
if ($inet_a =~ $ip_match){ |
39
|
0
|
|
|
|
|
|
$dnsbl_host = "$4.$3.$2.$1.$server"; |
40
|
|
|
|
|
|
|
} else { |
41
|
0
|
|
|
|
|
|
return undef; |
42
|
|
|
|
|
|
|
} |
43
|
|
|
|
|
|
|
} |
44
|
0
|
|
0
|
|
|
|
my $packet = $resolver->query($dnsbl_host,"TXT") || return undef; |
45
|
0
|
|
|
|
|
|
foreach my $rr($packet->answer){ |
46
|
0
|
0
|
|
|
|
|
next unless $rr->type eq 'TXT'; |
47
|
0
|
|
|
|
|
|
return $rr->txtdata(); |
48
|
|
|
|
|
|
|
} |
49
|
0
|
|
|
|
|
|
return undef; |
50
|
|
|
|
|
|
|
} |
51
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
sub inet_ntocc |
53
|
|
|
|
|
|
|
{ |
54
|
0
|
|
|
0
|
1
|
|
my $inet_n = $_[1]; |
55
|
0
|
|
0
|
|
|
|
my $inet_a = inet_ntoa($inet_n) || return undef; |
56
|
0
|
|
|
|
|
|
return $_[0]->inet_atocc($inet_a); |
57
|
|
|
|
|
|
|
} |
58
|
|
|
|
|
|
|
|
59
|
|
|
|
|
|
|
1; |
60
|
|
|
|
|
|
|
__END__ |