Class: IPAddr
- Inherits:
-
Object
- Object
- IPAddr
- Defined in:
- lib/core_ext/ip_addr.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
40 41 42 |
# File 'lib/core_ext/ip_addr.rb', line 40 def address_prefix(ip, cidr) ip + '/' + cidr.to_s end |
.valid?(ip) ⇒ Boolean
44 45 46 |
# File 'lib/core_ext/ip_addr.rb', line 44 def valid?(ip) (IPAddr.new(ip) rescue nil).nil? end |
.validate_address_space(ip) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/core_ext/ip_addr.rb', line 32 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
22 23 24 25 26 27 28 29 30 |
# File 'lib/core_ext/ip_addr.rb', line 22 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
9 10 11 12 13 14 15 |
# File 'lib/core_ext/ip_addr.rb', line 9 def private? return false unless self.ipv4? PRIVATE_RANGES.each do |ipr| return true if ipr.include?(self) end false end |
#public? ⇒ Boolean
17 18 19 |
# File 'lib/core_ext/ip_addr.rb', line 17 def public? !private? end |