AWS-IP
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/AWS/IP.pm view on Meta::CPAN
use strict;
use warnings;
package AWS::IP;
use Cache::File;
use Carp;
use HTTP::Tiny;
use JSON::XS;
use File::Temp 'tempdir';
use Net::CIDR::Set;
# required by HTTP::Tiny for https
use IO::Socket::SSL 1.56;
use Net::SSLeay 1.49;
use constant CACHE_KEY => 'AWS_IPS';
our $VERSION = 0.04;
# ABSTRACT: Get and search AWS IP ranges in a caching, auto-refreshing way
=head2 SYNOPSIS
use AWS::IP;
my $aws = AWS::IP->new(600, '/tmp/aws_ip_cache');
# get the raw data as a Perl reference
my $aws_ip_data = $aws->get_raw_data;
# check if an ip address is AWS
if ($aws->is_aws_ip('50.0.0.1')
{
..
}
# get a list of all AWS cidrs
my $cidrs = $aws->get_cidrs;
for (@$cidrs)
{
...
}
# create your own ip checks
use Net::CIDR::Set;
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) = @_;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.269 second using v1.00-cache-2.02-grep-82fe00e-cpan-cec75d87357c )