… | |
… | |
27 | } |
27 | } |
28 | } |
28 | } |
29 | |
29 | |
30 | read_blocklist; |
30 | read_blocklist; |
31 | |
31 | |
|
|
32 | use Tie::Cache; |
|
|
33 | tie %whois_cache, Tie::Cache::, $MAX_CONNECTS * 1.5; |
|
|
34 | |
32 | sub conn::access_check { |
35 | sub conn::access_check { |
33 | my $self = shift; |
36 | my $self = shift; |
34 | |
37 | |
35 | my $uri = $self->{path}; |
38 | my $uri = $self->{path}; |
36 | my %disallow; |
39 | my %disallow; |
… | |
… | |
39 | if ($uri =~ $_->[0]) { |
42 | if ($uri =~ $_->[0]) { |
40 | $disallow{$_}++ for @{$_->[1]}; |
43 | $disallow{$_}++ for @{$_->[1]}; |
41 | } |
44 | } |
42 | } |
45 | } |
43 | |
46 | |
|
|
47 | my $whois = $whois_cache{$self->{remote_addr}} |
44 | my $whois = ::ip_request($self->{remote_addr}); |
48 | ||= ::ip_request($self->{remote_addr}); |
45 | |
49 | |
46 | my $country = "XX"; |
50 | my $country = "XX"; |
47 | |
51 | |
48 | if ($whois =~ /^\*cy: (\S+)/m) { |
52 | if ($whois =~ /^\*cy: (\S+)/m) { |
49 | $country = uc $1; |
53 | $country = uc $1; |