Module: PrivateAddressCheck
- Defined in:
- lib/private_address_check.rb,
lib/private_address_check/version.rb,
lib/private_address_check/tcpsocket_ext.rb
Constant Summary collapse
- CIDR_LIST =
[ # Loopback IPAddr.new("127.0.0.0/8"), IPAddr.new("::1/64"), # Link Local, IPAddr.new("169.254.0.0/16"), # RFC 1918 IPAddr.new("10.0.0.0/8"), IPAddr.new("172.16.0.0/12"), IPAddr.new("192.168.0.0/16"), # RFC 4193 IPAddr.new("fc00::/7"), ]
- VERSION =
"0.3.0"
- PrivateConnectionAttemptedError =
Class.new(StandardError)
Class Method Summary collapse
- .only_public_connections ⇒ Object
- .private_address?(address) ⇒ Boolean
- .resolves_to_private_address?(hostname) ⇒ Boolean
Class Method Details
.only_public_connections ⇒ Object
6 7 8 9 10 11 |
# File 'lib/private_address_check/tcpsocket_ext.rb', line 6 def only_public_connections Thread.current[:private_address_check] = true yield ensure Thread.current[:private_address_check] = false end |
.private_address?(address) ⇒ Boolean
26 27 28 29 30 |
# File 'lib/private_address_check.rb', line 26 def private_address?(address) CIDR_LIST.any? do |cidr| cidr.include?(address) end end |
.resolves_to_private_address?(hostname) ⇒ Boolean
32 33 34 35 36 37 |
# File 'lib/private_address_check.rb', line 32 def resolves_to_private_address?(hostname) ips = Resolv.getaddresses(hostname) ips.any? do |ip| private_address?(ip) end end |