interfacez 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/interfacez/version.rb +1 -1
- data/lib/interfacez.rb +74 -14
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59fc474fefa0478ba81ba00f1ce41de6c9cc423c3f8e8296bbd5055a86825a76
|
4
|
+
data.tar.gz: 1da020117eabb38b8f44c5b3f3a0fc5d4c3f16d522d93b2529bcef04cc36865e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 72c67db1a181fb6259292933559c083b8989053d8ffd9d47f775371890e402d82d9dbdb97a349cdbb5ac741025e486a561ae07c3a11f1a058ec0fd2ecd8a82b9
|
7
|
+
data.tar.gz: ca0754fa026185c20f7d09b243fe218e60bc82a5de3ec0cfa7207cada163b506863c911d86c82229a3c83ae7990a5e140f1f8ee181d9d14640d07743fe0d6115
|
data/Gemfile.lock
CHANGED
data/lib/interfacez/version.rb
CHANGED
data/lib/interfacez.rb
CHANGED
@@ -19,6 +19,25 @@ module Interfacez
|
|
19
19
|
Interfacez.ipv6_loopbacks { |iface| return iface }
|
20
20
|
end
|
21
21
|
|
22
|
+
# Check for any (ipv4 or ipv6) loopback interface.
|
23
|
+
def self.loopback?
|
24
|
+
Interfacez.ipv4_loopbacks { |iface| return true }
|
25
|
+
Interfacez.ipv6_loopbacks { |iface| return true }
|
26
|
+
return false
|
27
|
+
end
|
28
|
+
|
29
|
+
# Get all (ipv4 or ipv6) loopback interfaces.
|
30
|
+
def self.loopbacks
|
31
|
+
if block_given?
|
32
|
+
Interfacez.ipv4_loopbacks { |iface| yield iface }
|
33
|
+
Interfacez.ipv6_loopbacks { |iface| yield iface }
|
34
|
+
else
|
35
|
+
loopbacks = []
|
36
|
+
Interfacez.loopbacks { |l| loopbacks << l unless loopbacks.any?(l) }
|
37
|
+
return loopbacks
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
22
41
|
# First available ipv4 loopback interface.
|
23
42
|
def self.ipv4_loopback
|
24
43
|
Interfacez.ipv4_loopbacks { |iface| return iface }
|
@@ -26,13 +45,16 @@ module Interfacez
|
|
26
45
|
|
27
46
|
# All ipv4 loopback interfaces.
|
28
47
|
def self.ipv4_loopbacks
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
48
|
+
if block_given?
|
49
|
+
raw_interface_addresses.each do |iface|
|
50
|
+
next unless iface.addr.ipv4_loopback?
|
51
|
+
yield iface.name if block_given?
|
52
|
+
end
|
53
|
+
else
|
54
|
+
results = []
|
55
|
+
Interfacez.ipv4_loopbacks { |l| results << l }
|
56
|
+
return results
|
34
57
|
end
|
35
|
-
return results
|
36
58
|
end
|
37
59
|
|
38
60
|
# First available ipv6 loopback interface.
|
@@ -42,13 +64,16 @@ module Interfacez
|
|
42
64
|
|
43
65
|
# All ipv6 loopback interfaces.
|
44
66
|
def self.ipv6_loopbacks
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
67
|
+
if block_given?
|
68
|
+
raw_interface_addresses.each do |iface|
|
69
|
+
next unless iface.addr.ipv6_loopback?
|
70
|
+
yield iface.name if block_given?
|
71
|
+
end
|
72
|
+
else
|
73
|
+
results = []
|
74
|
+
Interfacez.ipv4_loopbacks { |l| results << l }
|
75
|
+
return results
|
50
76
|
end
|
51
|
-
return results
|
52
77
|
end
|
53
78
|
|
54
79
|
# All network interface names available on system.
|
@@ -64,7 +89,8 @@ module Interfacez
|
|
64
89
|
|
65
90
|
# Network interfaces with their ipv4 addresses, if they have
|
66
91
|
# any asscoited with it.
|
67
|
-
def self.ipv4_addresses
|
92
|
+
def self.ipv4_addresses(interface = nil)
|
93
|
+
return ipv4_addresses_of(interface) unless interface.nil?
|
68
94
|
results = Hash.new()
|
69
95
|
raw_interface_addresses.each do |iface|
|
70
96
|
if iface.addr.ipv4?
|
@@ -80,9 +106,22 @@ module Interfacez
|
|
80
106
|
return results
|
81
107
|
end
|
82
108
|
|
109
|
+
# Return all ipv4 addresses of a given interface.
|
110
|
+
def self.ipv4_address_of(interface)
|
111
|
+
addresses = Interfacez.ipv4_addresses[interface]
|
112
|
+
return nil if addresses.nil?
|
113
|
+
return addresses[0]
|
114
|
+
end
|
115
|
+
|
116
|
+
# Return the first ipv4 address of a given interface.
|
117
|
+
def self.ipv4_addresses_of(interface)
|
118
|
+
return Interfacez.ipv4_addresses[interface] || []
|
119
|
+
end
|
120
|
+
|
83
121
|
# Network interfaces with their ipv6 addresses, if they have
|
84
122
|
# any asscoited with it.
|
85
|
-
def self.ipv6_addresses
|
123
|
+
def self.ipv6_addresses(interface = nil)
|
124
|
+
return ipv6_addresses_of(interface) unless interface.nil?
|
86
125
|
results = Hash.new()
|
87
126
|
raw_interface_addresses.each do |iface|
|
88
127
|
if iface.addr.ipv6?
|
@@ -98,6 +137,26 @@ module Interfacez
|
|
98
137
|
return results
|
99
138
|
end
|
100
139
|
|
140
|
+
# Return all available ipv6 addreses of a given interface.
|
141
|
+
def self.ipv6_addresses_of(interface)
|
142
|
+
return Interfacez.ipv4_addresses[interface] || []
|
143
|
+
end
|
144
|
+
|
145
|
+
# Return the first ipv6 address of a given interface.
|
146
|
+
def self.ipv6_address_of(interface)
|
147
|
+
addresses = Interfacez.ipv6_addresses_of(interface)
|
148
|
+
return nil if addresses.nil?
|
149
|
+
return addresses[0]
|
150
|
+
end
|
151
|
+
|
152
|
+
# Get index of network interface.
|
153
|
+
def self.index_of(interface)
|
154
|
+
raw_interface_addresses.each do |iface|
|
155
|
+
return iface.ifindex if iface.name == iface
|
156
|
+
end
|
157
|
+
return nil
|
158
|
+
end
|
159
|
+
|
101
160
|
# :nodoc:
|
102
161
|
def self.raw_interface_addresses
|
103
162
|
Socket.getifaddrs
|
@@ -105,4 +164,5 @@ module Interfacez
|
|
105
164
|
warn "Unable to get raw interface address list from Socket class"
|
106
165
|
return []
|
107
166
|
end
|
167
|
+
|
108
168
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: interfacez
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kent 'picat' Gruber
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|