File Coverage

blib/lib/Net/IP/Identifier/Plugin/Microsoft.pm
Criterion Covered Total %
statement 19 19 100.0
branch n/a
condition 1 3 33.3
subroutine 7 7 100.0
pod 1 3 33.3
total 28 32 87.5


line stmt bran cond sub pod time code
1             #===============================================================================
2             # PODNAME: Net::IP::Identifier::Plugin::Microsoft
3             # ABSTRACT: identify Microsoft (AS8075) owned IP addresses
4             #
5             # AUTHOR: Reid Augustin (REID)
6             # EMAIL: reid@hellosix.com
7             # CREATED: Sun Oct 12 19:32:46 PDT 2014
8             #===============================================================================
9              
10 1     1   23 use 5.008;
  1         3  
  1         33  
11 1     1   4 use strict;
  1         2  
  1         41  
12 1     1   4 use warnings;
  1         2  
  1         37  
13              
14             package Net::IP::Identifier::Plugin::Microsoft;
15              
16 1     1   4 use Role::Tiny::With;
  1         2  
  1         314  
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     7 bless $self, (ref $class || $class);
26              
27             # List of known Microsoft (AS8075) IP blocks as of May 2015
28 1         8 $self->ips(
29             # 100 Network Blocks
30             '8.6.176.0/24',
31             # extending 13.64.0.0/11 to include 13.96.0.0/13
32             # extending 13.64.0.0-13.103.255.255 to include 13.104.0.0/14
33             '13.64.0.0-13.107.255.255',
34             '23.96.0.0/13',
35             '40.64.0.0/10',
36             '42.159.0.0/16',
37             '64.4.0.0/18',
38             '64.41.193.0/24',
39             '65.52.0.0/14',
40             '65.221.5.0/24',
41             '66.119.144.0/20',
42             # extending 70.37.0.0/17 to include 70.37.128.0/18
43             '70.37.0.0-70.37.191.255',
44             '70.42.230.0/23',
45             '94.245.64.0/18',
46             '103.9.8.0/22',
47             '104.40.0.0/13',
48             '104.146.0.0/15',
49             '104.208.0.0/13',
50             '111.221.16.0/21',
51             '111.221.64.0/18',
52             '125.16.28.0/24',
53             '131.107.0.0/16',
54             '131.253.1.0/24',
55             '131.253.3.0/24',
56             # extending 131.253.5.0/24 to include 131.253.6.0/24
57             '131.253.5.0-131.253.6.255',
58             '131.253.8.0/24',
59             # extending 131.253.12.0/22 to include 131.253.16.0/23
60             # extending 131.253.12.0-131.253.17.255 to include 131.253.18.0/24
61             '131.253.12.0-131.253.18.255',
62             # extending 131.253.21.0/24 to include 131.253.22.0/23
63             # extending 131.253.21.0-131.253.23.255 to include 131.253.24.0/21
64             # extending 131.253.21.0-131.253.31.255 to include 131.253.32.0/20
65             '131.253.21.0-131.253.47.255',
66             # extending 131.253.61.0/24 to include 131.253.62.0/23
67             # extending 131.253.61.0-131.253.63.255 to include 131.253.64.0/18
68             # extending 131.253.61.0-131.253.127.255 to include 131.253.128.0/17
69             '131.253.61.0-131.253.255.255',
70             '132.245.0.0/16',
71             '134.170.0.0/16',
72             '137.116.0.0/16',
73             '137.135.0.0/16',
74             '138.91.0.0/16',
75             # extending 157.54.0.0/15 to include 157.56.0.0/14
76             # extending 157.54.0.0-157.59.255.255 to include 157.60.0.0/16
77             '157.54.0.0-157.60.255.255',
78             # extending 167.220.0.0/17 to include 167.220.128.0/18
79             # extending 167.220.0.0-167.220.191.255 to include 167.220.192.0/19
80             '167.220.0.0-167.220.223.255',
81             # extending 168.61.0.0/16 to include 168.62.0.0/15
82             '168.61.0.0-168.63.255.255',
83             '190.210.77.0/24',
84             # extending 191.232.0.0/14 to include 191.236.0.0/14
85             '191.232.0.0/13',
86             '192.48.225.0/24',
87             '192.84.159.0/24',
88             '192.92.90.0/24',
89             '192.92.214.0/24',
90             '192.197.157.0/24',
91             '193.149.64.0/19',
92             '193.221.113.0/24',
93             '194.69.96.0/19',
94             '194.121.59.0/24',
95             '198.49.8.0/24',
96             '198.105.232.0/22',
97             # extending 198.180.95.0/24 to include 198.180.96.0/23
98             '198.180.95.0-198.180.97.255',
99             '198.200.130.0/24',
100             '198.206.164.0/24',
101             '199.2.137.0/24',
102             '199.30.16.0/20',
103             '199.60.28.0/24',
104             '199.74.210.0/24',
105             '199.103.90.0/23',
106             '199.103.122.0/24',
107             # extending 199.242.32.0/20 to include 199.242.48.0/21
108             '199.242.32.0-199.242.55.255',
109             # extending 202.89.224.0/21 to include 202.89.232.0/21
110             '202.89.224.0/20',
111             '202.159.8.0/24',
112             '203.124.0.0/22',
113             '204.14.180.0/22',
114             '204.79.135.0/24',
115             # extending 204.79.179.0/24 to include 204.79.180.0/23
116             '204.79.179.0-204.79.181.255',
117             # extending 204.79.195.0/24 to include 204.79.196.0/23
118             '204.79.195.0-204.79.197.255',
119             '204.79.252.0/24',
120             '204.95.96.0/20',
121             '204.152.140.0/23',
122             '204.182.144.0/20',
123             # extending 204.231.194.0/23 to include 204.231.196.0/22
124             # extending 204.231.194.0-204.231.199.255 to include 204.231.200.0/21
125             # extending 204.231.194.0-204.231.207.255 to include 204.231.208.0/20
126             '204.231.194.0-204.231.223.255',
127             '204.231.236.0/24',
128             '206.73.203.0/24',
129             '206.191.224.0/19',
130             '207.46.0.0/16',
131             '207.68.128.0/18',
132             '208.68.136.0/21',
133             '208.76.44.0/22',
134             '208.84.0.0/21',
135             '209.1.15.0/24',
136             '209.185.128.0/22',
137             '209.240.192.0/19',
138             '213.146.167.0/24',
139             # extending 213.146.188.0/24 to include 213.146.189.0/24
140             '213.146.188.0/23',
141             '213.199.128.0/18',
142             '216.32.180.0/22',
143             '216.32.240.0/22',
144             '216.33.240.0/22',
145             '216.34.51.0/24',
146             '216.220.208.0/20',
147             '2001:df0:7::/48',
148             '2001:df0:d7::/48',
149             # extending 2001:4898::/31 to include 2001:489a::/32
150             '2001:4898:0000:0000:0000:0000:0000:0000-2001:489a:ffff:ffff:ffff:ffff:ffff:ffff',
151             '2404:f800::/31',
152             '2603:1000::/24',
153             '2620:0:30::/45',
154             '2620:b4:4000::/48',
155             '2620:1ec::/36',
156             '2801:80:1d0::/48',
157             '2a01:110::/31',
158             );
159 1         8 return $self;
160             }
161              
162             sub name {
163 4     4 0 18 return 'Microsoft';
164             }
165              
166             sub children {
167 1     1 0 3 return qw( Hotmail );
168             }
169              
170             1;
171              
172             __END__