interfacez 1.0.2 → 1.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 81267177c2fa724ee05ac2a37a1bfa985e617c462588e18bc5f42368f0636d04
4
- data.tar.gz: 2094e8adf5a632e66fff8190738fdd91b458f8f3f15ac7dfa140195652f225ff
3
+ metadata.gz: 8562cc86b62cb117b02a09866b3d316999d0c5102f8d02d61191d3e8fbb99e64
4
+ data.tar.gz: 5f18980f6868b5bf2207c4de7dda5603aed936944e0673e7969eaa5e54185a3f
5
5
  SHA512:
6
- metadata.gz: 9af113bbbd121c996304ff9eaa1731e315e6bcad8164ed3fe73a0f975af0b7401a37ed3a8e228c6b477261d3568f48dabb1b84d12826099c69241bf1a3377290
7
- data.tar.gz: f56ffb6caeac48cf2ac2409b1b215a3a292e0c9f1017a14bab854a67820ac025ff34af81efdcdc1440d9716930ede88c47e4687713460cc491510b6d623237f0
6
+ metadata.gz: 2680f9c1ba07f85d54a385fb07ed420738035a0d2b3a609de90b2b197b3acf0ea2c19aeceb62059476714c2ef4a4dd860a8b9f0dd00299e02ab5ee87fb4b952b
7
+ data.tar.gz: 857f80f3b0242eb77abeda72d56054d2155eb9422764eb765bb060ad97213ecfb94abd847f50569d51ceac8b7e63dacd272ae951b10726db07c2a7dd0871d37a
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- interfacez (1.0.2)
4
+ interfacez (1.0.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -11,15 +11,18 @@
11
11
  require 'interfacez'
12
12
 
13
13
  Interfacez.default
14
- # => en0
14
+ # => "en0"
15
15
 
16
16
  Interfacez.loopback
17
- # => lo0
17
+ # => "lo0"
18
18
 
19
19
  Interfacez.all do |interface|
20
20
  # do something with interface name
21
21
  puts interface
22
22
  end
23
+
24
+ Interfacez.ipv4_address_of("en0")
25
+ # => "192.168.1.2"
23
26
  ```
24
27
 
25
28
  ## License
@@ -139,7 +139,7 @@ module Interfacez
139
139
 
140
140
  # Return all available ipv6 addreses of a given interface.
141
141
  def self.ipv6_addresses_of(interface)
142
- return Interfacez.ipv4_addresses[interface] || []
142
+ return Interfacez.ipv6_addresses[interface] || []
143
143
  end
144
144
 
145
145
  # Return the first ipv6 address of a given interface.
@@ -149,6 +149,36 @@ module Interfacez
149
149
  return addresses[0]
150
150
  end
151
151
 
152
+ # Return first available mac addresses of a given interface.
153
+ def self.mac_address_of(interface)
154
+ list = Interfacez.mac_addresses_of(interface)
155
+ return nil if list.size.zero?
156
+ return list[0]
157
+ end
158
+
159
+ # Return all available mac addresses of a given interface.
160
+ def self.mac_addresses_of(interface)
161
+ # BSD support
162
+ if Socket.const_defined? :PF_LINK
163
+ list = raw_interface_addresses.map! do |iface|
164
+ next unless iface.name == interface
165
+ nameinfo = iface.addr.getnameinfo
166
+ if nameinfo.first != "" && nameinfo.last == ""
167
+ nameinfo[0]
168
+ end
169
+ end.compact
170
+ # Linux support
171
+ elsif Socket.const_defined? :PF_PACKET
172
+ list = raw_interface_addresses.map! do |iface|
173
+ next unless iface.name == interface
174
+ iface.addr.inspect_sockaddr[/hwaddr=([\h:]+)/, 1]
175
+ end.compact
176
+ else
177
+ warn "This platform may not be fully supported!"
178
+ return []
179
+ end
180
+ end
181
+
152
182
  # Get index of network interface.
153
183
  def self.index_of(interface)
154
184
  raw_interface_addresses.each do |iface|
@@ -1,3 +1,3 @@
1
1
  module Interfacez
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  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.2
4
+ version: 1.0.3
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-05 00:00:00.000000000 Z
11
+ date: 2018-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  version: '0'
95
95
  requirements: []
96
96
  rubyforge_project:
97
- rubygems_version: 2.7.3
97
+ rubygems_version: 2.7.6
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: Simplified network interface API