Class: UltraDNSUpdater::IpInfo
- Inherits:
-
Object
- Object
- UltraDNSUpdater::IpInfo
- Defined in:
- lib/ultradns_updater/ip_info.rb
Class Method Summary collapse
- .ifconfig(iface) ⇒ Object
- .ipv4_for_iface(iface) ⇒ Object
- .ipv6_for_iface(iface) ⇒ Object
-
.local_ip(host) ⇒ Object
nice trick from: coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/.
- .local_ipv4 ⇒ Object
- .local_ipv6 ⇒ Object
Class Method Details
.ifconfig(iface) ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/ultradns_updater/ip_info.rb', line 60 def self.ifconfig(iface) result = nil begin result = `ifconfig #{iface}` rescue # try full path result = `/sbin/ifconfig #{iface}` end result end |
.ipv4_for_iface(iface) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/ultradns_updater/ip_info.rb', line 30 def self.ipv4_for_iface(iface) result = ifconfig(iface) if result addrs = [] result.split("\n").collect {|line| line.strip}.select {|i| i =~ /^inet /}.each {|addr| addrs << addr.split(" ")[1] } end addrs.first end |
.ipv6_for_iface(iface) ⇒ Object
39 40 41 42 43 44 45 46 |
# File 'lib/ultradns_updater/ip_info.rb', line 39 def self.ipv6_for_iface(iface) result = ifconfig(iface) if result addrs = [] result.split("\n").collect {|line| line.strip}.select {|i| i =~ /^inet6/}.each {|addr| addrs << addr.split(" ")[1].gsub(/%.*/,'') } end addrs.first end |
.local_ip(host) ⇒ Object
nice trick from: coderrr.wordpress.com/2008/05/28/get-your-local-ip-address/
49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ultradns_updater/ip_info.rb', line 49 def self.local_ip(host) socket_type = (host =~ /\:/) ? Socket::AF_INET6 : Socket::AF_INET orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily UDPSocket.open(socket_type) do |s| s.connect host, 1 s.addr.last end ensure Socket.do_not_reverse_lookup = orig end |
.local_ipv4 ⇒ Object
19 20 21 22 |
# File 'lib/ultradns_updater/ip_info.rb', line 19 def self.local_ipv4 # pdns1.ultradns.net. IN A 204.74.108.1 local_ip('204.74.108.1') end |
.local_ipv6 ⇒ Object
24 25 26 27 28 |
# File 'lib/ultradns_updater/ip_info.rb', line 24 def self.local_ipv6 # pdns1.ultradns.net. IN AAAA 2001:502:f3ff::1 # 2001:502:f3ff:0:0:0:0:1 local_ip('2001:502:f3ff::1') end |