rex-socket 0.1.6 → 0.1.7

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
  SHA1:
3
- metadata.gz: 3d5c101cf12b4b186967cc462825a01949e2a85f
4
- data.tar.gz: 2a0a9e972c300e84a29fba0f14136a15833211a9
3
+ metadata.gz: 92ddd973eb7d16ebd11f040c398d294c62f8caf3
4
+ data.tar.gz: 59c01a8084132ba7df79382a23ff6ab835a5480e
5
5
  SHA512:
6
- metadata.gz: da63a4de0ea57c5978f32804a87b1a9d15d65bac912762fc97ed23b2a596aedc9bf2286aa1c6d680a7f92a545281184c1bef9529509f4651eb87f03605894fc5
7
- data.tar.gz: bee9a6294c9ad74fbe1ac47ac1614fd014f579744ddacc50b7cfbd2f49be212883152a49c5865066989c2cc738d6b0e7b0123b84dd2ee6f1b65f0a0951fd8089
6
+ metadata.gz: 4d5161ad095c421332a0180bd18985d64bf7dc2abb719dce49a442b10bc8a7d5a976c34f18d5882969341c321b6af87328c52daed44fd0ce6cf2153b45e52b02
7
+ data.tar.gz: 35eb1b361afd7e6df0def370c54e6539f0619ff2f820193b3628595d7671e2abc6c7a42694a071195659f06d97791b2dc44fc15a40ee9a2e161426fbdbf86d9e
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -88,13 +88,14 @@ module Socket
88
88
 
89
89
  MATCH_IPV4_PRIVATE = /^\s*(?:10\.|192\.168|172.(?:1[6-9]|2[0-9]|3[01])\.|169\.254)/
90
90
 
91
+ MATCH_MAC_ADDR = /^\s*(([0-9a-fA-F]{2}[:-]){5}[0-9a-fA-F]{2})|([[0-9a-fA-F]{2}]{6})\s*$/i
92
+
91
93
  ##
92
94
  #
93
95
  # Serialization
94
96
  #
95
97
  ##
96
98
 
97
-
98
99
  # Cache our IPv6 support flag
99
100
  @@support_ipv6 = nil
100
101
 
@@ -122,27 +123,36 @@ module Socket
122
123
  # Determine whether this is an IPv4 address
123
124
  #
124
125
  def self.is_ipv4?(addr)
125
- ( addr =~ MATCH_IPV4 ) ? true : false
126
+ addr =~ MATCH_IPV4 ? true : false
126
127
  end
127
128
 
128
129
  #
129
130
  # Determine whether this is an IPv6 address
130
131
  #
131
132
  def self.is_ipv6?(addr)
132
- ( addr =~ MATCH_IPV6 ) ? true : false
133
+ addr =~ MATCH_IPV6 ? true : false
133
134
  end
134
135
 
135
136
  #
136
- # Checks to see if the supplied address is in "dotted" form
137
+ # Determine whether this is a MAC address
137
138
  #
138
- def self.dotted_ip?(addr)
139
- # Match IPv6
140
- return true if (support_ipv6? and addr =~ MATCH_IPV6)
139
+ def self.is_mac_addr?(addr)
140
+ addr =~ MATCH_MAC_ADDR ? true : false
141
+ end
141
142
 
142
- # Match IPv4
143
- return true if (addr =~ MATCH_IPV4)
143
+ #
144
+ # Determine whether this is an IP address at all
145
+ # Check for v4 (less expensive), v6, else false
146
+ #
147
+ def self.is_ip_addr?(addr)
148
+ self.is_ipv4?(addr) || self.is_ipv6?(addr)
149
+ end
144
150
 
145
- false
151
+ #
152
+ # Checks to see if the supplied address is in "dotted" form
153
+ #
154
+ def self.dotted_ip?(addr)
155
+ (support_ipv6? && addr =~ MATCH_IPV6) || (addr =~ MATCH_IPV4)
146
156
  end
147
157
 
148
158
  #
@@ -150,11 +160,7 @@ module Socket
150
160
  # RFC5735/RFC3927
151
161
  #
152
162
  def self.is_internal?(addr)
153
- if self.dotted_ip?(addr)
154
- addr =~ MATCH_IPV4_PRIVATE
155
- else
156
- false
157
- end
163
+ self.dotted_ip?(addr) && addr =~ MATCH_IPV4_PRIVATE
158
164
  end
159
165
 
160
166
  # Get the first address returned by a DNS lookup for +hostname+.
@@ -176,7 +182,7 @@ module Socket
176
182
  # @param hostname [String] A hostname or ASCII IP address
177
183
  # @return [Array<String>]
178
184
  def self.getaddresses(hostname, accept_ipv6 = true)
179
- if hostname =~ MATCH_IPV4 or (accept_ipv6 and hostname =~ MATCH_IPV6)
185
+ if hostname =~ MATCH_IPV4 || (accept_ipv6 && hostname =~ MATCH_IPV6)
180
186
  return [hostname]
181
187
  end
182
188
 
@@ -212,7 +218,7 @@ module Socket
212
218
  # on Windows.
213
219
  #
214
220
  def self.gethostbyname(host)
215
- if (is_ipv4?(host))
221
+ if is_ipv4?(host)
216
222
  return [ host, [], 2, host.split('.').map{ |c| c.to_i }.pack("C4") ]
217
223
  end
218
224
 
@@ -230,8 +236,7 @@ module Socket
230
236
  # address family
231
237
  #
232
238
  def self.to_sockaddr(ip, port)
233
-
234
- if (ip == '::ffff:0.0.0.0')
239
+ if ip == '::ffff:0.0.0.0'
235
240
  ip = support_ipv6?() ? '::' : '0.0.0.0'
236
241
  end
237
242
 
@@ -245,7 +250,7 @@ module Socket
245
250
  def self.from_sockaddr(saddr)
246
251
  port, host = ::Socket::unpack_sockaddr_in(saddr)
247
252
  af = ::Socket::AF_INET
248
- if (support_ipv6?() and is_ipv6?(host))
253
+ if support_ipv6?() && is_ipv6?(host)
249
254
  af = ::Socket::AF_INET6
250
255
  end
251
256
  return [ af, host, port ]
@@ -471,7 +476,6 @@ module Socket
471
476
  # lame kid way of doing it.
472
477
  #
473
478
  def self.net2bitmask(netmask)
474
-
475
479
  nmask = resolv_nbo(netmask)
476
480
  imask = addr_ntoi(nmask)
477
481
  bits = 32
@@ -751,8 +755,8 @@ module Socket
751
755
  def peerinfo
752
756
  if (pi = getpeername_as_array)
753
757
  return pi[1] + ':' + pi[2].to_s
754
- end
755
- end
758
+ end
759
+ end
756
760
 
757
761
  #
758
762
  # Returns local information (host + port) in host:port format.
@@ -760,8 +764,8 @@ module Socket
760
764
  def localinfo
761
765
  if (pi = getlocalname)
762
766
  return pi[1] + ':' + pi[2].to_s
763
- end
764
- end
767
+ end
768
+ end
765
769
 
766
770
  #
767
771
  # Returns a string that indicates the type of the socket, such as 'tcp'.
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module Socket
3
- VERSION = "0.1.6"
3
+ VERSION = "0.1.7"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rex-socket
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Maloney
@@ -88,7 +88,7 @@ cert_chain:
88
88
  G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
89
89
  8mVuTXnyJOKRJA==
90
90
  -----END CERTIFICATE-----
91
- date: 2017-05-11 00:00:00.000000000 Z
91
+ date: 2017-06-25 00:00:00.000000000 Z
92
92
  dependencies:
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: bundler
metadata.gz.sig CHANGED
Binary file