interfacez 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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