Class: IPAddr
- Inherits:
-
Object
- Object
- IPAddr
- Defined in:
- lib/azure/core/utility.rb
Overview
Code validate private/public IP acceptable ranges.
Constant Summary collapse
- PRIVATE_RANGES =
[ IPAddr.new('10.0.0.0/8'), IPAddr.new('172.16.0.0/12'), IPAddr.new('192.168.0.0/16') ]
Class Method Summary collapse
- .address_prefix(ip, cidr) ⇒ Object
- .valid?(ip) ⇒ Boolean
- .validate_address_space(ip) ⇒ Object
- .validate_ip_and_prefix(ip, cidr) ⇒ Object
Instance Method Summary collapse
Class Method Details
.address_prefix(ip, cidr) ⇒ Object
182 183 184 |
# File 'lib/azure/core/utility.rb', line 182 def address_prefix(ip, cidr) ip + '/' + cidr.to_s end |
.valid?(ip) ⇒ Boolean
186 187 188 |
# File 'lib/azure/core/utility.rb', line 186 def valid?(ip) (IPAddr.new(ip) rescue nil).nil? end |
.validate_address_space(ip) ⇒ Object
174 175 176 177 178 179 180 |
# File 'lib/azure/core/utility.rb', line 174 def validate_address_space(ip) if ip.split('/').size != 2 raise "Cidr is invalid for IP #{ip}." elsif valid?(ip) raise "Address space '#{ip}' is invalid." end end |
.validate_ip_and_prefix(ip, cidr) ⇒ Object
164 165 166 167 168 169 170 171 172 |
# File 'lib/azure/core/utility.rb', line 164 def validate_ip_and_prefix(ip, cidr) if cidr.to_s.empty? raise "Cidr is missing for IP '#{ip}'." elsif valid?(ip) raise "Ip address '#{ip}' is invalid." elsif !IPAddr.new(ip).private? raise "Ip Address #{ip} must be private." end end |
Instance Method Details
#private? ⇒ Boolean
151 152 153 154 155 156 157 |
# File 'lib/azure/core/utility.rb', line 151 def private? return false unless self.ipv4? PRIVATE_RANGES.each do |ipr| return true if ipr.include?(self) end false end |
#public? ⇒ Boolean
159 160 161 |
# File 'lib/azure/core/utility.rb', line 159 def public? !private? end |