File Coverage

blib/lib/Net/IP/Identifier/Plugin/Akamai.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::Akamai
3             # ABSTRACT: identify Akamai owned IP addresses
4             #
5             # AUTHOR: Reid Augustin (REID)
6             # EMAIL: reid@hellosix.com
7             # CREATED: Thu Nov 6 11:03:41 PST 2014
8             #===============================================================================
9              
10 1     1   28 use 5.008;
  1         3  
  1         38  
11 1     1   4 use strict;
  1         1  
  1         34  
12 1     1   5 use warnings;
  1         1  
  1         39  
13              
14             package Net::IP::Identifier::Plugin::Akamai;
15              
16 1     1   4 use Role::Tiny::With;
  1         2  
  1         351  
17             with qw( Net::IP::Identifier_Role );
18              
19             our $VERSION = '0.111'; # VERSION
20              
21             sub new {
22 1     1 1 2 my ($class, %opts) = @_;
23              
24 1         2 my $self = {};
25 1   33     6 bless $self, (ref $class || $class);
26              
27             # List of of of known Akamai IP blocks as of May 2015
28             # AS12222 AS16625 AS16702 AS17334 AS18680 AS18717 AS20189 AS20940
29             # AS21342 AS21357 AS21399 AS22207 AS23454 AS23455 AS23903 AS24319
30             # AS30675 AS31107 AS31108 AS31109 AS31110 AS31377 AS33905 AS34164
31             # AS34850 AS35204 AS35993 AS35994 AS36183 AS39836 AS43639 AS45700
32             # AS48163 AS55770 AS393560
33 1         11 $self->ips( # 187 Network Blocks
34             '2.16.0.0/13',
35             '23.0.0.0/12',
36             # extending 23.32.0.0/11 to include 23.64.0.0/14
37             '23.32.0.0-23.67.255.255',
38             '23.72.0.0/13',
39             '23.192.0.0/11',
40             '42.99.255.0/24',
41             # extending 46.33.64.0/21 to include 46.33.72.0/22
42             # extending 46.33.64.0-46.33.75.255 to include 46.33.76.0/23
43             '46.33.64.0-46.33.77.255',
44             # extending 58.27.86.0/24 to include 58.27.87.0/24
45             '58.27.86.0/23',
46             '59.144.52.0/24',
47             '59.144.56.0/24',
48             '59.144.115.0/24',
49             '59.151.128.0/18',
50             '60.254.128.0/18',
51             '62.154.232.0/24',
52             '62.156.209.0/24',
53             '62.159.74.0/24',
54             '63.84.59.0/24',
55             '63.85.36.0/24',
56             '63.141.192.0/23',
57             '63.141.195.0/24',
58             '63.141.200.0/23',
59             '63.144.176.0/24',
60             '63.150.131.0/24',
61             '63.162.234.0/24',
62             '63.168.61.0/24',
63             '63.208.195.0/24',
64             '63.243.206.0/23',
65             # extending 63.243.241.0/24 to include 63.243.242.0/24
66             '63.243.241.0-63.243.242.255',
67             '64.86.133.0/24',
68             '64.86.201.0/24',
69             '64.145.68.0/22',
70             '64.145.75.0/24',
71             '64.145.84.0/24',
72             # extending 64.145.87.0/24 to include 64.145.88.0/24
73             # extending 64.145.87.0-64.145.88.255 to include 64.145.89.0/24
74             '64.145.87.0-64.145.89.255',
75             '64.145.95.0/24',
76             '65.121.210.0/23',
77             '65.122.93.0/24',
78             '65.163.176.0/24',
79             '65.171.167.0/24',
80             '65.173.24.0/24',
81             '65.197.197.0/24',
82             '65.197.244.0/24',
83             '66.171.224.0/23',
84             '66.171.227.0/24',
85             # extending 66.171.230.0/24 to include 66.171.231.0/24
86             '66.171.230.0/23',
87             '66.171.234.0/23',
88             '66.198.8.0/24',
89             '67.131.232.0/24',
90             '69.22.154.0/23',
91             '69.31.20.0/24',
92             '69.31.57.0/24',
93             # extending 69.31.72.0/23 to include 69.31.74.0/23
94             # extending 69.31.72.0/22 to include 69.31.76.0/23
95             '69.31.72.0-69.31.77.255',
96             '69.31.89.0/24',
97             '69.31.97.0/24',
98             '69.31.106.0/23',
99             '69.31.116.0/23',
100             '69.31.132.0/23',
101             '69.31.138.0/24',
102             '69.192.0.0/16',
103             '70.39.163.0/24',
104             '70.39.178.0/23',
105             '72.246.0.0/15',
106             '80.12.192.0/24',
107             '80.67.64.0/19',
108             '80.146.174.0/24',
109             '80.231.241.0/24',
110             '81.52.134.0/24',
111             '81.52.201.0/24',
112             '82.96.58.0/24',
113             '84.53.128.0/18',
114             '88.221.0.0/16',
115             '92.122.0.0/15',
116             '93.92.66.0/24',
117             '93.123.37.0/24',
118             '93.158.110.0/23',
119             '95.100.0.0/15',
120             '96.6.0.0/15',
121             '96.16.0.0/15',
122             '103.238.148.0/22',
123             '104.64.0.0/10',
124             '111.92.162.0/24',
125             '114.141.72.0/21',
126             '115.124.93.0/24',
127             '118.214.0.0/15',
128             '122.252.32.0/19',
129             '122.252.128.0/20',
130             '125.56.128.0/17',
131             '125.252.192.0/18',
132             '172.224.0.0/12',
133             '173.205.78.0/23',
134             '173.222.0.0/15',
135             '173.245.192.0/23',
136             # extending 173.245.196.0/24 to include 173.245.197.0/24
137             # extending 173.245.196.0/23 to include 173.245.198.0/24
138             '173.245.196.0-173.245.198.255',
139             # extending 173.245.212.0/23 to include 173.245.214.0/24
140             '173.245.212.0-173.245.214.255',
141             '184.24.0.0/13',
142             '184.50.0.0/15',
143             '184.84.0.0/14',
144             # extending 189.125.84.0/24 to include 189.125.85.0/24
145             '189.125.84.0/23',
146             # extending 190.90.221.0/24 to include 190.90.222.0/24
147             # extending 190.90.221.0-190.90.222.255 to include 190.90.223.0/24
148             '190.90.221.0-190.90.223.255',
149             '190.210.32.0/24',
150             '193.108.88.0/21',
151             '193.108.152.0/22',
152             # extending 193.247.166.0/24 to include 193.247.167.0/24
153             '193.247.166.0/23',
154             '194.224.66.0/24',
155             '195.49.93.0/24',
156             '195.57.81.0/24',
157             '195.57.152.0/23',
158             '195.59.122.0/24',
159             '195.95.192.0/23',
160             '195.175.68.0/22',
161             # extending 195.245.124.0/23 to include 195.245.126.0/23
162             '195.245.124.0/22',
163             '196.41.99.0/24',
164             '198.47.108.0/24',
165             '198.144.96.0/24',
166             # extending 198.144.98.0/24 to include 198.144.99.0/24
167             # extending 198.144.98.0/23 to include 198.144.100.0/24
168             '198.144.98.0-198.144.100.255',
169             '198.144.112.0/24',
170             '198.144.115.0/24',
171             '198.144.119.0/24',
172             '201.220.10.0/24',
173             '202.74.62.0/23',
174             '202.125.100.0/23',
175             '203.101.53.0/24',
176             '203.146.247.0/24',
177             '204.8.48.0/22',
178             '204.10.28.0/22',
179             '204.93.32.0/24',
180             '204.93.34.0/24',
181             # extending 204.93.36.0/24 to include 204.93.37.0/24
182             # extending 204.93.36.0/23 to include 204.93.38.0/23
183             # extending 204.93.36.0/22 to include 204.93.40.0/24
184             '204.93.36.0-204.93.40.255',
185             # extending 204.93.42.0/23 to include 204.93.44.0/24
186             '204.93.42.0-204.93.44.255',
187             # extending 204.93.46.0/23 to include 204.93.48.0/24
188             '204.93.46.0-204.93.48.255',
189             '204.93.62.0/23',
190             '204.95.24.0/23',
191             '205.161.113.0/24',
192             '205.185.204.0/23',
193             '205.234.218.0/24',
194             '205.234.225.0/24',
195             '205.246.30.0/23',
196             '208.34.250.0/24',
197             '209.95.152.0/24',
198             # extending 209.107.202.0/24 to include 209.107.203.0/24
199             '209.107.202.0/23',
200             # extending 209.107.205.0/24 to include 209.107.206.0/24
201             # extending 209.107.205.0-209.107.206.255 to include 209.107.207.0/24
202             '209.107.205.0-209.107.207.255',
203             '209.107.209.0/24',
204             '209.107.213.0/24',
205             '209.107.215.0/24',
206             # extending 209.107.220.0/24 to include 209.107.221.0/24
207             # extending 209.107.220.0/23 to include 209.107.222.0/24
208             # extending 209.107.220.0-209.107.222.255 to include 209.107.223.0/24
209             '209.107.220.0/22',
210             '209.136.40.0/24',
211             '209.170.90.0/24',
212             '209.170.94.0/24',
213             '209.170.97.0/24',
214             '209.170.113.0/24',
215             # extending 209.170.115.0/24 to include 209.170.116.0/24
216             # extending 209.170.115.0-209.170.116.255 to include 209.170.117.0/24
217             # extending 209.170.115.0-209.170.117.255 to include 209.170.118.0/24
218             '209.170.115.0-209.170.118.255',
219             '209.234.250.0/24',
220             '209.234.252.0/24',
221             '210.16.40.0/24',
222             '213.254.17.0/24',
223             '216.151.176.0/24',
224             '216.151.187.0/24',
225             '216.206.30.0/24',
226             '216.246.75.0/24',
227             '216.246.87.0/24',
228             '216.246.93.0/24',
229             '216.246.122.0/24',
230             '217.89.107.0/24',
231             '2001:218:3003::/48',
232             '2001:590:1::/48',
233             # extending 2001:590:1009::/48 to include 2001:590:100a::/48
234             # extending 2001:0590:1009:0000:0000:0000:0000:0000-2001:0590:100a:ffff:ffff:ffff:ffff:ffff to include 2001:590:100b::/48
235             '2001:0590:1009:0000:0000:0000:0000:0000-2001:0590:100b:ffff:ffff:ffff:ffff:ffff',
236             # extending 2001:590:140a::/48 to include 2001:590:140b::/48
237             # extending 2001:590:140a::/47 to include 2001:590:140c::/48
238             '2001:0590:140a:0000:0000:0000:0000:0000-2001:0590:140c:ffff:ffff:ffff:ffff:ffff',
239             # extending 2001:590:1807::/48 to include 2001:590:1808::/48
240             '2001:0590:1807:0000:0000:0000:0000:0000-2001:0590:1808:ffff:ffff:ffff:ffff:ffff',
241             # extending 2001:590:1c09::/48 to include 2001:590:1c0a::/48
242             # extending 2001:0590:1c09:0000:0000:0000:0000:0000-2001:0590:1c0a:ffff:ffff:ffff:ffff:ffff to include 2001:590:1c0b::/48
243             '2001:0590:1c09:0000:0000:0000:0000:0000-2001:0590:1c0b:ffff:ffff:ffff:ffff:ffff',
244             # extending 2001:590:2009::/48 to include 2001:590:200a::/48
245             # extending 2001:0590:2009:0000:0000:0000:0000:0000-2001:0590:200a:ffff:ffff:ffff:ffff:ffff to include 2001:590:200b::/48
246             '2001:0590:2009:0000:0000:0000:0000:0000-2001:0590:200b:ffff:ffff:ffff:ffff:ffff',
247             # extending 2001:590:2406::/48 to include 2001:590:2407::/48
248             # extending 2001:590:2406::/47 to include 2001:590:2408::/48
249             '2001:0590:2406:0000:0000:0000:0000:0000-2001:0590:2408:ffff:ffff:ffff:ffff:ffff',
250             '2001:590:2807::/48',
251             # extending 2001:590:2809::/48 to include 2001:590:280a::/48
252             '2001:0590:2809:0000:0000:0000:0000:0000-2001:0590:280a:ffff:ffff:ffff:ffff:ffff',
253             '2001:590:4803::/48',
254             # extending 2001:5a0:3b00::/48 to include 2001:5a0:3b01::/48
255             '2001:5a0:3b00::/47',
256             '2001:5a0:3c00::/48',
257             '2001:5a0:3d00::/48',
258             '2001:4878::/32',
259             '2404:4e00::/32',
260             '2600:2:d80:3::/64',
261             '2600:3:500:4::/64',
262             '2600:3:500:6::/64',
263             '2600:5:3d40:3::/64',
264             '2600:1400::/27',
265             # extending 2a01:3e0:402::/48 to include 2a01:3e0:403::/48
266             '2a01:3e0:402::/47',
267             '2a02:b60::/64',
268             '2a02:26f0::/32',
269             );
270 1         8 return $self;
271             }
272              
273             sub name {
274 5     5 0 26 return 'Akamai';
275             }
276              
277             1;
278              
279             __END__