Class: IPSocket
- Inherits:
-
Object
- Object
- IPSocket
- Defined in:
- lib/ipaddr.rb
Class Method Summary collapse
- .getaddress(s) ⇒ Object
- .getaddress_orig ⇒ Object
- .valid?(addr) ⇒ Boolean
- .valid_v4?(addr) ⇒ Boolean
- .valid_v6?(addr) ⇒ Boolean
Class Method Details
.getaddress(s) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/ipaddr.rb', line 51 def getaddress(s) if valid?(s) s elsif /\A[-A-Za-z\d.]+\Z/ =~ s getaddress_orig(s) else raise ArgumentError, "invalid address" end end |
.getaddress_orig ⇒ Object
50 |
# File 'lib/ipaddr.rb', line 50 alias getaddress_orig getaddress |
.valid?(addr) ⇒ Boolean
46 47 48 |
# File 'lib/ipaddr.rb', line 46 def valid?(addr) valid_v4?(addr) || valid_v6?(addr) end |
.valid_v4?(addr) ⇒ Boolean
26 27 28 29 30 31 |
# File 'lib/ipaddr.rb', line 26 def valid_v4?(addr) if /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/ =~ addr return $~.captures.all? {|i| i.to_i < 256} end return false end |
.valid_v6?(addr) ⇒ Boolean
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/ipaddr.rb', line 33 def valid_v6?(addr) # IPv6 (normal) return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*\Z/ =~ addr return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*)?\Z/ =~ addr # IPv6 (IPv4 compat) return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:/ =~ addr && valid_v4?($') return true if /\A[\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($') return true if /\A::([\dA-Fa-f]{1,4}(:[\dA-Fa-f]{1,4})*:)?/ =~ addr && valid_v4?($') false end |