Class: IPSocket
- Inherits:
-
BasicSocket
- Object
- IO
- BasicSocket
- IPSocket
- Defined in:
- lib/ipaddr.rb,
ext/socket/socket.c
Class Method Summary (collapse)
- + (Object) getaddress(host)
- + (Object) getaddress_orig
- + (Object) original_resolv_getaddress
- + (Boolean) valid?(addr)
- + (Boolean) valid_v4?(addr)
- + (Boolean) valid_v6?(addr)
Methods inherited from IO
Class Method Details
+ (Object) getaddress(host)
51 52 53 54 55 56 57 |
# File 'lib/ipaddr.rb', line 51 def getaddress(host) begin return Resolv.getaddress(host).to_s rescue Resolv::ResolvError raise SocketError, "Hostname not known: #{host}" end end |
+ (Object) getaddress_orig
50 |
# File 'lib/ipaddr.rb', line 50 alias getaddress_orig getaddress |
+ (Object) original_resolv_getaddress
5 6 7 8 9 10 11 12 13 |
# File 'lib/resolv-replace.rb', line 5 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 |
+ (Boolean) valid?(addr)
46 47 48 |
# File 'lib/ipaddr.rb', line 46 def valid?(addr) valid_v4?(addr) || valid_v6?(addr) end |
+ (Boolean) valid_v4?(addr)
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 |
+ (Boolean) valid_v6?(addr)
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 |