rex-socket 0.1.21 → 0.1.22

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: 187de6ed3fb5855168dba5307c2b0ec754b2d8327878f442b86a66f209d73c49
4
- data.tar.gz: 956f99effb19dfc3acba6f60331669d564cbc40058dff5f5ef57a98c223e8eb0
3
+ metadata.gz: 314afb7251f312c317eca7741cdd3ce3e5136ce02ac0faccec827f0124b8b253
4
+ data.tar.gz: 61a2d745cfe3d490fb3114945e8d4b8033e521b9e037efe9c407abc3a9306dca
5
5
  SHA512:
6
- metadata.gz: e78e14e222bb5e5823befaa21e343c22bc4e463978c7b0bc70f837d4a9de9dcce2be616d369734069b7facbd396478f2a4c48f549e03358eea755cfa7bf63804
7
- data.tar.gz: b6add9eb1151d74870e64af0773042a669e8538bd819ff1a6ad1d08e7887d8b56947a0a2be650787fe2eb8f7ad194a545029dfb5ca17f7d7f00cbaf898191e5a
6
+ metadata.gz: 71fb7ba1ea13d3b0a92a503397c3a0ad2f59994bc3f8c0cd0b425a827ccca876f5aa3f44c2320b37be7443268a6851a4da0ab6623c5d7af257b48dc13a5ae839
7
+ data.tar.gz: b542007ef2c4b31a28873304120180f17c7604a0a773da475c154af0f01a2371d3ccb74746f60452a7000829bc4d699b4f06b3a9623512c636ffd5a36dc71b88
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -3,4 +3,4 @@ group: stable
3
3
  cache: bundler
4
4
  language: ruby
5
5
  rvm:
6
- - 2.3.2
6
+ - 2.6.5
@@ -77,45 +77,33 @@ class Rex::Socket::Parameters
77
77
  # retried.
78
78
  # @option hash [Fixnum] 'Timeout' The number of seconds before a connection
79
79
  # should time out
80
- def initialize(hash)
80
+ def initialize(hash = {})
81
81
  if (hash['PeerHost'])
82
82
  self.peerhost = hash['PeerHost']
83
83
  elsif (hash['PeerAddr'])
84
84
  self.peerhost = hash['PeerAddr']
85
- else
86
- self.peerhost = nil
87
85
  end
88
86
 
89
87
  if (hash['LocalHost'])
90
88
  self.localhost = hash['LocalHost']
91
89
  elsif (hash['LocalAddr'])
92
90
  self.localhost = hash['LocalAddr']
93
- else
94
- self.localhost = '0.0.0.0'
95
91
  end
96
92
 
97
93
  if (hash['PeerPort'])
98
94
  self.peerport = hash['PeerPort'].to_i
99
- else
100
- self.peerport = 0
101
95
  end
102
96
 
103
97
  if (hash['LocalPort'])
104
98
  self.localport = hash['LocalPort'].to_i
105
- else
106
- self.localport = 0
107
99
  end
108
100
 
109
101
  if (hash['Bare'])
110
102
  self.bare = hash['Bare']
111
- else
112
- self.bare = false
113
103
  end
114
104
 
115
105
  if (hash['SSL'] and hash['SSL'].to_s =~ /^(t|y|1)/i)
116
106
  self.ssl = true
117
- else
118
- self.ssl = false
119
107
  end
120
108
 
121
109
  if hash['SSLContext']
@@ -179,33 +167,16 @@ class Rex::Socket::Parameters
179
167
  # The protocol this socket will be using
180
168
  if (hash['Proto'])
181
169
  self.proto = hash['Proto'].downcase
182
- else
183
- self.proto = 'tcp'
184
170
  end
185
171
 
186
172
  # Whether or not the socket should be a server
187
- self.server = hash['Server'] || false
173
+ self.server = hash['Server']
188
174
 
189
175
  # The communication subsystem to use to create the socket
190
176
  self.comm = hash['Comm']
191
177
 
192
178
  # The context that was passed in, if any.
193
- self.context = hash['Context'] || {}
194
-
195
- # If no comm was supplied, try to use the comm that is best fit to
196
- # handle the provided host based on the current routing table.
197
- if( self.server )
198
- if (self.comm == nil and self.localhost)
199
- self.comm = Rex::Socket::SwitchBoard.best_comm(self.localhost)
200
- end
201
- else
202
- if (self.comm == nil and self.peerhost)
203
- self.comm = Rex::Socket::SwitchBoard.best_comm(self.peerhost)
204
- end
205
- end
206
-
207
- # If we still haven't found a comm, we default to the local comm.
208
- self.comm = Rex::Socket::Comm::Local if (self.comm == nil)
179
+ self.context = hash['Context']
209
180
 
210
181
  # If we are a UDP server, turn off the server flag as it was only set when
211
182
  # creating the UDP socket in order to avail of the switch board above.
@@ -216,19 +187,29 @@ class Rex::Socket::Parameters
216
187
  # The number of connection retries to make (client only)
217
188
  if hash['Retries']
218
189
  self.retries = hash['Retries'].to_i
219
- else
220
- self.retries = 0
221
190
  end
222
191
 
223
192
  # The number of seconds before a connect attempt times out (client only)
224
193
  if hash['Timeout']
225
194
  self.timeout = hash['Timeout'].to_i
226
- else
227
- self.timeout = 5
228
195
  end
229
196
 
230
197
  # Whether to force IPv6 addressing
231
- self.v6 = hash['IPv6'] || false
198
+ self.v6 = hash['IPv6']
199
+ end
200
+
201
+ def merge(other)
202
+ self.dup.merge!(other)
203
+ end
204
+
205
+ def merge!(other)
206
+ other = self.class.new(other) if other.is_a? Hash
207
+
208
+ other.instance_variables.each do |name|
209
+ value = other.instance_variable_get(name)
210
+ instance_variable_set(name, value) unless value.nil?
211
+ end
212
+ self
232
213
  end
233
214
 
234
215
  ##
@@ -294,7 +275,6 @@ class Rex::Socket::Parameters
294
275
  return v6
295
276
  end
296
277
 
297
-
298
278
  ##
299
279
  #
300
280
  # Attributes
@@ -308,50 +288,94 @@ class Rex::Socket::Parameters
308
288
 
309
289
  # The remote port. Equivalent to the PeerPort parameter hash key.
310
290
  # @return [Fixnum]
311
- attr_accessor :peerport
291
+ attr_writer :peerport
292
+ def peerport
293
+ @peerport || 0
294
+ end
312
295
 
313
296
  # The local host. Equivalent to the LocalHost parameter hash key.
314
297
  # @return [String]
315
- attr_accessor :localhost
298
+ attr_writer :localhost
299
+ def localhost
300
+ @localhost || '0.0.0.0'
301
+ end
316
302
 
317
303
  # The local port. Equivalent to the LocalPort parameter hash key.
318
304
  # @return [Fixnum]
319
- attr_accessor :localport
305
+ attr_writer :localport
306
+ def localport
307
+ @localport || 0
308
+ end
320
309
 
321
310
  # The protocol to to use, such as TCP. Equivalent to the Proto parameter
322
311
  # hash key.
323
312
  # @return [String]
324
- attr_accessor :proto
313
+ attr_writer :proto
314
+ def proto
315
+ @proto || 'tcp'
316
+ end
325
317
 
326
318
  # Whether or not this is a server. Equivalent to the Server parameter
327
319
  # hash key.
328
320
  # @return [Bool]
329
- attr_accessor :server
321
+ attr_writer :server
322
+ def server
323
+ @server || false
324
+ end
330
325
 
331
326
  # The {Comm} instance that should be used to create the underlying socket.
332
327
  # @return [Comm]
333
- attr_accessor :comm
328
+ attr_writer :comm
329
+ def comm
330
+ return @comm unless @comm.nil?
331
+
332
+ best_comm = nil
333
+ # If no comm was explicitly specified, try to use the comm that is best fit
334
+ # to handle the provided host based on the current routing table.
335
+ if server and localhost
336
+ best_comm = Rex::Socket::SwitchBoard.best_comm(localhost)
337
+ elsif peerhost
338
+ best_comm = Rex::Socket::SwitchBoard.best_comm(peerhost)
339
+ end
340
+
341
+ best_comm || Rex::Socket::Comm::Local
342
+ end
334
343
 
335
344
  # The context hash that was passed in to the structure. (default: {})
336
345
  # @return [Hash]
337
- attr_accessor :context
346
+ attr_writer :context
347
+ def context
348
+ @context || {}
349
+ end
338
350
 
339
351
  # The number of attempts that should be made.
340
352
  # @return [Fixnum]
341
- attr_accessor :retries
353
+ attr_writer :retries
354
+ def retries
355
+ @retries || 0
356
+ end
342
357
 
343
358
  # The number of seconds before a connection attempt should time out.
344
359
  # @return [Fixnum]
345
- attr_accessor :timeout
360
+ attr_writer :timeout
361
+ def timeout
362
+ @timeout || 5
363
+ end
346
364
 
347
365
  # Whether or not this is a bare (non-extended) socket instance that should
348
366
  # be created.
349
367
  # @return [Bool]
350
- attr_accessor :bare
368
+ attr_writer :bare
369
+ def bare
370
+ @comm || false
371
+ end
351
372
 
352
373
  # Whether or not SSL should be used to wrap the connection.
353
374
  # @return [Bool]
354
- attr_accessor :ssl
375
+ attr_writer :ssl
376
+ def ssl
377
+ @ssl || false
378
+ end
355
379
 
356
380
  # Pre configured SSL Context to use
357
381
  # @return [OpenSSL::SSL::SSLContext]
@@ -384,21 +408,26 @@ class Rex::Socket::Parameters
384
408
  # The client SSL certificate
385
409
  #
386
410
  attr_accessor :ssl_client_cert
411
+
387
412
  #
388
413
  # The client SSL key
389
414
  #
390
415
  attr_accessor :ssl_client_key
416
+
391
417
  #
392
418
  # SSL certificate verification mode for SSL context
393
419
  attr_accessor :ssl_verify_mode
420
+
394
421
  #
395
422
  # Whether we should use IPv6
396
423
  # @return [Bool]
397
- attr_accessor :v6
398
-
424
+ attr_writer :v6
425
+ def v6
426
+ @v6 || false
427
+ end
399
428
 
400
429
  # List of proxies to use
401
- # @return [String]
430
+ # @return [Array]
402
431
  attr_accessor :proxies
403
432
 
404
433
  alias peeraddr peerhost
@@ -1,5 +1,5 @@
1
1
  module Rex
2
2
  module Socket
3
- VERSION = "0.1.21"
3
+ VERSION = "0.1.22"
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.21
4
+ version: 0.1.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Maloney
@@ -93,7 +93,7 @@ cert_chain:
93
93
  JI/W23RbIRksG2pioMhd4dCXq3FLLlkOV1YfCwWixNB+iIhQPPZVaPNfgPhCn4Dt
94
94
  DeGjje/qA4fkLtRmOtb9PUBq3ToRDE4=
95
95
  -----END CERTIFICATE-----
96
- date: 2019-12-03 00:00:00.000000000 Z
96
+ date: 2020-03-04 00:00:00.000000000 Z
97
97
  dependencies:
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: bundler
metadata.gz.sig CHANGED
Binary file