File Coverage

blib/lib/Net/IP/Identifier/Plugin/DigitalOcean.pm
Criterion Covered Total %
statement 18 18 100.0
branch n/a
condition 1 3 33.3
subroutine 6 6 100.0
pod 1 2 50.0
total 26 29 89.6


line stmt bran cond sub pod time code
1             #===============================================================================
2             # PODNAME: Net::IP::Identifier::Plugin::DigitalOcean
3             # ABSTRACT: identify DigitalOcean owned IP addresses
4             #
5             # AUTHOR: Reid Augustin (REID)
6             # EMAIL: reid@hellosix.com
7             # CREATED: Tue Nov 11 10:29:26 PST 2014
8             #===============================================================================
9              
10 1     1   34 use 5.008;
  1         5  
  1         45  
11 1     1   4 use strict;
  1         2  
  1         40  
12 1     1   3 use warnings;
  1         6  
  1         40  
13              
14             # _ENTITY_REGEX_ digital.?ocean
15              
16             package Net::IP::Identifier::Plugin::DigitalOcean;
17              
18 1     1   3 use Role::Tiny::With;
  1         2  
  1         169  
19             with qw( Net::IP::Identifier_Role );
20              
21             our $VERSION = '0.111'; # VERSION
22              
23             sub new {
24 1     1 1 2 my ($class, %opts) = @_;
25              
26 1         3 my $self = {};
27 1   33     7 bless $self, (ref $class || $class);
28              
29             # List of known DigitalOcean IP blocks as of March 2015
30             # AS62567 AS393406 AS202109 AS202018 AS201229 AS200130 AS14061 AS133165
31 1         5 $self->ips(
32             # 25 Network Blocks
33             # extending 5.101.96.0/21 to include 5.101.104.0/21
34             '5.101.96.0/20',
35             '37.139.0.0/19',
36             '45.55.0.0/16',
37             '46.101.0.0/16',
38             '80.240.128.0/20',
39             '82.196.0.0/20',
40             '95.85.0.0/18',
41             '103.253.144.0/22',
42             '104.131.0.0/16',
43             '104.236.0.0/16',
44             '107.170.0.0/16',
45             '162.243.0.0/16',
46             '178.62.0.0/17',
47             '185.14.184.0/22',
48             '188.166.0.0/16',
49             '188.226.128.0/17',
50             '192.34.56.0/21',
51             '192.81.208.0/20',
52             '192.241.128.0/17',
53             '198.199.64.0/18',
54             '198.211.96.0/19',
55             '208.68.36.0/22',
56             '2400:6180::/32',
57             '2604:a880::/32',
58             '2a03:b0c0::/32',
59             );
60 1         7 return $self;
61             }
62              
63             sub name {
64 3     3 0 10 return 'DigitalOcean';
65             }
66              
67             1;
68              
69             __END__