AWS-IP
view release on metacpan or search on metacpan
1819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
for
(
@$cidrs
)
{
...
}
# create your own ip checks
my
$ec2_cidrs
=
$aws
->get_cidrs_by_service(
'EC2'
);
my
$aws_ec2_set
= Net::CIDR::Set->new(
@$ec2_cidrs
);
if
(
$aws_ec2_set
->contains(
$ip
)
{
...
}
# time passes, cache has expired
$aws_ip_data
=
$aws
->get_raw_data;
# auto refreshes
=head2 DESCRIPTION
AWS L<publish|https://ip-ranges.amazonaws.com/ip-ranges.json> their IP ranges, which periodically change. This module downloads and serializes the IP ranges into a Perl data hash reference. It caches the data, and if the cache expires, re-downloads a...
=head2 new ($cache_timeout_secs, [$cache_path])
Creates a new AWS::IP object and sets up the cache. Requires an number for the cache timeout seconds. Optionally takes a cache path argument. If no cache path is supplied, AWS::IP will use a random temp directory. If you want to reuse the cache over ...
=cut
=head2 ip_is_aws ($ip, [$service])
Boolean method to test if an ip address is from AWS. Optionally takes a service name (AMAZON|EC2|CLOUDFRONT|ROUTE53|ROUTE53_HEALTHCHECKS) and restricts the check to AWS ip addresses for that service.
If you are checking more than one ip address, it's more efficient to pull the CIDRs you want, then use L<Net::CIDR::Set> to test if the ips are present in the CIDRs (see example in SYNOPSIS).
=cut
=head2 get_raw_data
Returns the entire raw IP dataset as a Perl data structure.
=cut
=head2 get_cidrs
Returns an arrayref of the L<CIDRs|http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing> in the AWS IP address data.
=cut
lib/AWS/IP.pm view on Meta::CPAN
38394041424344454647484950515253545556575859606162636465666768697071727374
for
(
@$cidrs
)
{
...
}
# create your own ip checks
my
$ec2_cidrs
=
$aws
->get_cidrs_by_service(
'EC2'
);
my
$aws_ec2_set
= Net::CIDR::Set->new(
@$ec2_cidrs
);
if
(
$aws_ec2_set
->contains(
$ip
)
{
...
}
# time passes, cache has expired
$aws_ip_data
=
$aws
->get_raw_data;
# auto refreshes
=head2 DESCRIPTION
AWS L<publish|https://ip-ranges.amazonaws.com/ip-ranges.json> their IP ranges, which periodically change. This module downloads and serializes the IP ranges into a Perl data hash reference. It caches the data, and if the cache expires, re-downloads a...
=head2 new ($cache_timeout_secs, [$cache_path])
Creates a new AWS::IP object and sets up the cache. Requires an number for the cache timeout seconds. Optionally takes a cache path argument. If no cache path is supplied, AWS::IP will use a random temp directory. If you want to reuse the cache over ...
=cut
sub
new
{
croak
'Incorrect number of args passed to AWS::IP->new()'
unless
@_
>= 2 &&
@_
<= 3;
my
(
$class
,
$cache_timeout_secs
,
$cache_path
) =
@_
;
# validate args
unless
(
$cache_timeout_secs
lib/AWS/IP.pm view on Meta::CPAN
107108109110111112113114115116117118119120121122123124125126127
else
{
$ip_ranges
= Net::CIDR::Set->new(
map
{
$_
->{ip_prefix} } @{
$self
->get_raw_data->{prefixes}} );
}
$ip_ranges
->contains(
$ip
);
}
=head2 get_raw_data
Returns the entire raw IP dataset as a Perl data structure.
=cut
sub
get_raw_data
{
my
(
$self
) =
@_
;
my
$entry
=
$self
->{cache}->entry(CACHE_KEY);
if
(
$entry
->
exists
)
lib/AWS/IP.pm view on Meta::CPAN
219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250sub
_refresh_cache
{
my
(
$self
) =
@_
;
if
(
$response
->{success})
{
my
$entry
=
$self
->{cache}->entry(CACHE_KEY);
$entry
->set(
$response
->{content});
# return the data
$response
->{content};
}
else
{
croak
"Error requesting $response->{url} $response->{code} $response->{reason}"
;
}
}
sub
_refresh_cache_from_string
{
my
(
$self
,
$data
) =
@_
;
my
$entry
=
$self
->{cache}->entry(CACHE_KEY);
$entry
->set(
$data
);
# return the data
$data
;
}
1;
( run in 0.682 second using v1.01-cache-2.11-cpan-3cd7ad12f66 )