logstash-output-tcp 6.2.2 → 7.0.0
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/CHANGELOG.md +8 -3
- data/docs/index.asciidoc +17 -38
- data/lib/logstash/outputs/tcp.rb +28 -86
- data/logstash-output-tcp.gemspec +1 -2
- data/spec/fixtures/encrypted/instance.crt +17 -27
- data/spec/fixtures/encrypted/instance.key +26 -50
- data/spec/fixtures/plaintext/instance.crt +17 -27
- data/spec/fixtures/plaintext/instance.key +27 -52
- data/spec/outputs/tcp_spec.rb +27 -102
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6f831af52dc575cf49b8bd64ac494753bbc852bb8cdc37df12ff7c1b0b40a7f
|
4
|
+
data.tar.gz: c0fd08ae08b9b9518f37164539db57a137ffea4c1a92b82915b2678f329b4247
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d2bf294da64059cdfd5d25ab58172e8b0d02011b9657fc72bbda2e4839d71ef64465405af9320fbaff72c2c4e76308fd696577f84c4eabad7e52bd8011ce6ca
|
7
|
+
data.tar.gz: 6ec47a3647e01a3324ddfdf9c0804d14aafa610e5e648d65fa90e37c89831cf1a8f5e3c3f709c564d9ae3bd55a794af62d9bbca8f2d098e0963e347e7a5ed85e
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
-
##
|
2
|
-
-
|
3
|
-
|
1
|
+
## 7.0.0
|
2
|
+
- SSL settings that were marked deprecated in version `6.2.0` are now marked obsolete, and will prevent the plugin from starting.
|
3
|
+
- These settings are:
|
4
|
+
- `ssl_cert`, which should be replaced by `ssl_certificate`
|
5
|
+
- `ssl_cacert`, which should be replaced by `ssl_certificate_authorities`
|
6
|
+
- `ssl_enable`, which should be replaced by `ssl_enabled`
|
7
|
+
- `ssl_verify`, which should be replaced by `ssl_client_authentication` when `mode` is `server` or `ssl_verification_mode`when mode is `client`
|
8
|
+
- [58](https://github.com/logstash-plugins/logstash-output-tcp/pull/58)
|
4
9
|
## 6.2.1
|
5
10
|
- Document correct default plugin codec [#54](https://github.com/logstash-plugins/logstash-output-tcp/pull/54)
|
6
11
|
|
data/docs/index.asciidoc
CHANGED
@@ -33,6 +33,10 @@ depending on `mode`.
|
|
33
33
|
|
34
34
|
This plugin supports the following configuration options plus the <<plugins-{type}s-{plugin}-common-options>> described later.
|
35
35
|
|
36
|
+
NOTE: As of version `7.0.0` of this plugin, a number of previously deprecated settings related to SSL have been removed. Please see the
|
37
|
+
<<plugins-{type}s-{plugin}-obsolete-options>> for more details.
|
38
|
+
|
39
|
+
|
36
40
|
[cols="<,<,<",options="header",]
|
37
41
|
|=======================================================================
|
38
42
|
|Setting |Input type|Required
|
@@ -40,19 +44,15 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
40
44
|
| <<plugins-{type}s-{plugin}-mode>> |<<string,string>>, one of `["server", "client"]`|No
|
41
45
|
| <<plugins-{type}s-{plugin}-port>> |<<number,number>>|Yes
|
42
46
|
| <<plugins-{type}s-{plugin}-reconnect_interval>> |<<number,number>>|No
|
43
|
-
| <<plugins-{type}s-{plugin}-ssl_cacert>> |a valid filesystem path|__Deprecated__
|
44
|
-
| <<plugins-{type}s-{plugin}-ssl_cert>> |a valid filesystem path|__Deprecated__
|
45
47
|
| <<plugins-{type}s-{plugin}-ssl_certificate>> |a valid filesystem path|No
|
46
48
|
| <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> |<<array,array>>|No
|
47
49
|
| <<plugins-{type}s-{plugin}-ssl_cipher_suites>> |<<string,string>>|No
|
48
50
|
| <<plugins-{type}s-{plugin}-ssl_client_authentication>> |<<string,string>>, one of `["none", "optional", "required"]`|No
|
49
|
-
| <<plugins-{type}s-{plugin}-ssl_enable>> |<<boolean,boolean>>|__Deprecated__
|
50
51
|
| <<plugins-{type}s-{plugin}-ssl_enabled>> |<<boolean,boolean>>|No
|
51
52
|
| <<plugins-{type}s-{plugin}-ssl_key>> |a valid filesystem path|No
|
52
53
|
| <<plugins-{type}s-{plugin}-ssl_key_passphrase>> |<<password,password>>|No
|
53
54
|
| <<plugins-{type}s-{plugin}-ssl_supported_protocols>> |<<string,string>>|No
|
54
55
|
| <<plugins-{type}s-{plugin}-ssl_verification_mode>> |<<string,string>>, one of `["full", "none"]`|No
|
55
|
-
| <<plugins-{type}s-{plugin}-ssl_verify>> |<<boolean,boolean>>|No
|
56
56
|
|=======================================================================
|
57
57
|
|
58
58
|
Also see <<plugins-{type}s-{plugin}-common-options>> for a list of options supported by all
|
@@ -97,24 +97,6 @@ When mode is `client`, the port to connect to.
|
|
97
97
|
|
98
98
|
When connect failed,retry interval in sec.
|
99
99
|
|
100
|
-
[id="plugins-{type}s-{plugin}-ssl_cacert"]
|
101
|
-
===== `ssl_cacert`
|
102
|
-
deprecated[6.2.0, Replaced by <<plugins-{type}s-{plugin}-ssl_certificate_authorities>>]
|
103
|
-
|
104
|
-
* Value type is <<path,path>>
|
105
|
-
* There is no default value for this setting.
|
106
|
-
|
107
|
-
The SSL CA certificate, chainfile or CA path. The system CA path is automatically included.
|
108
|
-
|
109
|
-
[id="plugins-{type}s-{plugin}-ssl_cert"]
|
110
|
-
===== `ssl_cert`
|
111
|
-
deprecated[6.2.0, Replaced by <<plugins-{type}s-{plugin}-ssl_certificate>>]
|
112
|
-
|
113
|
-
* Value type is <<path,path>>
|
114
|
-
* There is no default value for this setting.
|
115
|
-
|
116
|
-
SSL certificate path
|
117
|
-
|
118
100
|
[id="plugins-{type}s-{plugin}-ssl_certificate"]
|
119
101
|
===== `ssl_certificate`
|
120
102
|
|
@@ -160,15 +142,6 @@ Please note that the server does not validate the client certificate CN (Common
|
|
160
142
|
NOTE: This setting can be used only if <<plugins-{type}s-{plugin}-mode>> is `server` and <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> is set.
|
161
143
|
|
162
144
|
|
163
|
-
[id="plugins-{type}s-{plugin}-ssl_enable"]
|
164
|
-
===== `ssl_enable`
|
165
|
-
deprecated[6.2.0, Replaced by <<plugins-{type}s-{plugin}-ssl_enabled>>]
|
166
|
-
|
167
|
-
* Value type is <<boolean,boolean>>
|
168
|
-
* Default value is `false`
|
169
|
-
|
170
|
-
Enable SSL (must be set for other `ssl_` options to take effect).
|
171
|
-
|
172
145
|
[id="plugins-{type}s-{plugin}-ssl_enabled"]
|
173
146
|
===== `ssl_enabled`
|
174
147
|
|
@@ -223,15 +196,21 @@ has a hostname or IP address that matches the names within the certificate.
|
|
223
196
|
|
224
197
|
NOTE: This setting can be used only if <<plugins-{type}s-{plugin}-mode>> is `client`.
|
225
198
|
|
226
|
-
[id="plugins-{type}s-{plugin}-
|
227
|
-
|
228
|
-
|
199
|
+
[id="plugins-{type}s-{plugin}-obsolete-options"]
|
200
|
+
==== TCP Output Obsolete Configuration Options
|
201
|
+
|
202
|
+
WARNING: As of version `6.0.0` of this plugin, some configuration options have been replaced.
|
203
|
+
The plugin will fail to start if it contains any of these obsolete options.
|
229
204
|
|
230
|
-
* Value type is <<boolean,boolean>>
|
231
|
-
* Default value is `false`
|
232
205
|
|
233
|
-
|
234
|
-
|
206
|
+
[cols="<,<",options="header",]
|
207
|
+
|=======================================================================
|
208
|
+
|Setting|Replaced by
|
209
|
+
| ssl_cacert |<<plugins-{type}s-{plugin}-ssl_certificate_authorities>>
|
210
|
+
| ssl_cert |<<plugins-{type}s-{plugin}-ssl_certificate>>
|
211
|
+
| ssl_enable |<<plugins-{type}s-{plugin}-ssl_enabled>>
|
212
|
+
| ssl_verify |<<plugins-{type}s-{plugin}-ssl_client_authentication>> in `server` mode and <<plugins-{type}s-{plugin}-ssl_verification_mode>> in `client` mode
|
213
|
+
|=======================================================================
|
235
214
|
|
236
215
|
[id="plugins-{type}s-{plugin}-common-options"]
|
237
216
|
include::{include_path}/{type}.asciidoc[]
|
data/lib/logstash/outputs/tcp.rb
CHANGED
@@ -3,7 +3,6 @@ require "logstash/outputs/base"
|
|
3
3
|
require "logstash/namespace"
|
4
4
|
require "thread"
|
5
5
|
require "logstash/util/socket_peer"
|
6
|
-
require "logstash/plugin_mixins/normalize_config_support"
|
7
6
|
|
8
7
|
# Write events over a TCP socket.
|
9
8
|
#
|
@@ -13,8 +12,6 @@ require "logstash/plugin_mixins/normalize_config_support"
|
|
13
12
|
# depending on `mode`.
|
14
13
|
class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
15
14
|
|
16
|
-
include LogStash::PluginMixins::NormalizeConfigSupport
|
17
|
-
|
18
15
|
config_name "tcp"
|
19
16
|
concurrency :single
|
20
17
|
|
@@ -35,9 +32,6 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
35
32
|
# `client` connects to a server.
|
36
33
|
config :mode, :validate => ["server", "client"], :default => "client"
|
37
34
|
|
38
|
-
# Enable SSL (must be set for other `ssl_` options to take effect).
|
39
|
-
config :ssl_enable, :validate => :boolean, :default => false, :deprecated => "Use 'ssl_enabled' instead."
|
40
|
-
|
41
35
|
# Enable SSL (must be set for other `ssl_` options to take effect).
|
42
36
|
config :ssl_enabled, :validate => :boolean, :default => false
|
43
37
|
|
@@ -48,10 +42,6 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
48
42
|
# This option needs to be used with `ssl_certificate_authorities` and a defined list of CAs.
|
49
43
|
config :ssl_client_authentication, :validate => %w[none optional required], :default => 'none'
|
50
44
|
|
51
|
-
# Verify the identity of the other end of the SSL connection against the CA.
|
52
|
-
# For input, sets the field `sslsubject` to that of the client certificate.
|
53
|
-
config :ssl_verify, :validate => :boolean, :default => false, :deprecated => "Use 'ssl_client_authentication' when `mode` is 'server' or 'ssl_verification_mode' when mode is `client`"
|
54
|
-
|
55
45
|
# Options to verify the server's certificate.
|
56
46
|
# "full": validates that the provided certificate has an issue date that’s within the not_before and not_after dates;
|
57
47
|
# chains to a trusted Certificate Authority (CA); has a hostname or IP address that matches the names within the certificate.
|
@@ -59,16 +49,11 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
59
49
|
# "none": performs no certificate validation. Disabling this severely compromises security (https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf)
|
60
50
|
config :ssl_verification_mode, :validate => %w[full none], :default => 'full'
|
61
51
|
|
62
|
-
# The SSL CA certificate, chainfile or CA path. The system CA path is automatically included.
|
63
|
-
config :ssl_cacert, :validate => :path, :deprecated => "Use 'ssl_certificate_authorities' instead."
|
64
52
|
|
65
53
|
# Validate client certificate or certificate chain against these authorities. You can define multiple files.
|
66
54
|
# All the certificates will be read and added to the trust store.
|
67
55
|
config :ssl_certificate_authorities, :validate => :path, :list => true
|
68
56
|
|
69
|
-
# SSL certificate path
|
70
|
-
config :ssl_cert, :validate => :path, :deprecated => "Use 'ssl_certificate' instead."
|
71
|
-
|
72
57
|
# SSL certificate path
|
73
58
|
config :ssl_certificate, :validate => :path
|
74
59
|
|
@@ -84,6 +69,11 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
84
69
|
# The list of ciphers suite to use
|
85
70
|
config :ssl_cipher_suites, :validate => :string, :list => true
|
86
71
|
|
72
|
+
config :ssl_enable, :obsolete => "Use 'ssl_enabled' instead."
|
73
|
+
config :ssl_verify, :obsolete => "Use 'ssl_client_authentication' when `mode` is 'server' or 'ssl_verification_mode' when mode is `client`"
|
74
|
+
config :ssl_cacert, :obsolete => "Use 'ssl_certificate_authorities' instead."
|
75
|
+
config :ssl_cert, :obsolete => "Use 'ssl_certificate' instead."
|
76
|
+
|
87
77
|
class Client
|
88
78
|
|
89
79
|
##
|
@@ -189,11 +179,6 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
189
179
|
end
|
190
180
|
private :load_cert_store
|
191
181
|
|
192
|
-
def initialize(*args)
|
193
|
-
super(*args)
|
194
|
-
setup_ssl_params!
|
195
|
-
end
|
196
|
-
|
197
182
|
# @overload Base#register
|
198
183
|
def register
|
199
184
|
require "socket"
|
@@ -279,7 +264,7 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
279
264
|
client_socket = nil
|
280
265
|
@codec.on_event do |event, payload|
|
281
266
|
begin
|
282
|
-
client_socket =
|
267
|
+
client_socket = connect unless client_socket
|
283
268
|
while payload && payload.bytesize > 0
|
284
269
|
begin
|
285
270
|
written_bytes_size = client_socket.write_nonblock(payload)
|
@@ -331,34 +316,32 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
331
316
|
@logger.error(msg, details)
|
332
317
|
end
|
333
318
|
|
319
|
+
private
|
320
|
+
|
334
321
|
def connect
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
322
|
+
begin
|
323
|
+
client_socket = TCPSocket.new(@host, @port)
|
324
|
+
if @ssl_enabled
|
325
|
+
client_socket = OpenSSL::SSL::SSLSocket.new(client_socket, @ssl_context)
|
326
|
+
begin
|
327
|
+
client_socket.connect
|
328
|
+
rescue OpenSSL::SSL::SSLError => ssle
|
329
|
+
log_error 'connect ssl failure:', ssle, backtrace: false
|
330
|
+
# NOTE(mrichar1): Hack to prevent hammering peer
|
331
|
+
sleep(5)
|
332
|
+
raise
|
333
|
+
end
|
345
334
|
end
|
335
|
+
client_socket.extend(::LogStash::Util::SocketPeer)
|
336
|
+
@logger.debug("opened connection", :client => client_socket.peer)
|
337
|
+
return client_socket
|
338
|
+
rescue => e
|
339
|
+
log_error 'failed to connect:', e
|
340
|
+
sleep @reconnect_interval
|
341
|
+
retry
|
346
342
|
end
|
347
|
-
|
348
|
-
@logger.debug("opened connection", :client => client_socket.peer)
|
349
|
-
client_socket
|
350
|
-
end
|
351
|
-
|
352
|
-
private
|
353
|
-
def retryable_connect
|
354
|
-
connect
|
355
|
-
rescue => e
|
356
|
-
log_error 'failed to connect:', e
|
357
|
-
sleep @reconnect_interval
|
358
|
-
retry
|
359
|
-
end
|
343
|
+
end # def connect
|
360
344
|
|
361
|
-
private
|
362
345
|
def validate_ssl_config!
|
363
346
|
unless @ssl_enabled
|
364
347
|
ignored_ssl_settings = original_params.select { |k| k != 'ssl_enabled' && k != 'ssl_enable' && k.start_with?('ssl_') }
|
@@ -407,47 +390,6 @@ class LogStash::Outputs::Tcp < LogStash::Outputs::Base
|
|
407
390
|
original_params.include?('ssl_enable') ? 'ssl_enable' : 'ssl_enabled'
|
408
391
|
end
|
409
392
|
|
410
|
-
def setup_ssl_params!
|
411
|
-
@ssl_enabled = normalize_config(:ssl_enabled) do |normalizer|
|
412
|
-
normalizer.with_deprecated_alias(:ssl_enable)
|
413
|
-
end
|
414
|
-
|
415
|
-
@ssl_certificate = normalize_config(:ssl_certificate) do |normalizer|
|
416
|
-
normalizer.with_deprecated_alias(:ssl_cert)
|
417
|
-
end
|
418
|
-
|
419
|
-
if server?
|
420
|
-
@ssl_client_authentication = normalize_config(:ssl_client_authentication) do |normalizer|
|
421
|
-
normalizer.with_deprecated_mapping(:ssl_verify) do |ssl_verify|
|
422
|
-
ssl_verify == true ? 'required' : 'none'
|
423
|
-
end
|
424
|
-
end
|
425
|
-
else
|
426
|
-
@ssl_verification_mode = normalize_config(:ssl_verification_mode) do |normalize|
|
427
|
-
normalize.with_deprecated_mapping(:ssl_verify) do |ssl_verify|
|
428
|
-
ssl_verify == true ? 'full' : 'none'
|
429
|
-
end
|
430
|
-
end
|
431
|
-
|
432
|
-
# Keep backwards compatibility with the default :ssl_verify value (false)
|
433
|
-
if !original_params.include?('ssl_verify') && !original_params.include?('ssl_verification_mode')
|
434
|
-
@ssl_verification_mode = 'none'
|
435
|
-
end
|
436
|
-
end
|
437
|
-
|
438
|
-
@ssl_certificate_authorities = normalize_config(:ssl_certificate_authorities) do |normalize|
|
439
|
-
normalize.with_deprecated_mapping(:ssl_cacert) do |ssl_cacert|
|
440
|
-
if File.directory?(ssl_cacert)
|
441
|
-
Dir.children(ssl_cacert)
|
442
|
-
.map{ |f| File.join(ssl_cacert, f) }
|
443
|
-
.reject{ |f| File.directory?(f) || File.basename(f).start_with?('.') }
|
444
|
-
else
|
445
|
-
[ssl_cacert]
|
446
|
-
end
|
447
|
-
end
|
448
|
-
end
|
449
|
-
end
|
450
|
-
|
451
393
|
def server?
|
452
394
|
@mode == "server"
|
453
395
|
end # def server?
|
data/logstash-output-tcp.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-output-tcp'
|
4
|
-
s.version = '
|
4
|
+
s.version = '7.0.0'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Writes events over a TCP socket"
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
@@ -24,7 +24,6 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_runtime_dependency 'logstash-core', '>= 8.1.0'
|
25
25
|
s.add_runtime_dependency 'logstash-codec-json'
|
26
26
|
s.add_runtime_dependency 'stud'
|
27
|
-
s.add_runtime_dependency 'logstash-mixin-normalize_config_support', '~>1.0'
|
28
27
|
|
29
28
|
s.add_runtime_dependency 'jruby-openssl', '>= 0.12.2' # 0.12 supports TLSv1.3
|
30
29
|
|
@@ -1,29 +1,19 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
WzvGI9gDDOdaOLU2BNAJjn5o6DA9MF9IWNHYCnEp0ZKTXX69IlJB3/VK2JU0L2pY
|
20
|
-
R9deha5fqAELge9o1dZ4lwvHPCsRO3peNSbQCVXSPSRNw/iQITrL/VM2qT88bJd9
|
21
|
-
v/DK0UNnhmJKNXQSjHwUtkBeKXrIURRlmkXr6YR+wIhQEm8Tx0dJTmUVb1e7bjmm
|
22
|
-
/NwDG+qFFiGScLzmVVk2gAaiPJpOFjyFqsazMUXPD/3uHPwIvVXpLxr0pby2bMHj
|
23
|
-
8FAxYYqIKcx8m0tSFecOx7k1gp1nODygJQwXuqsVbJjM1x1xA8WL0a4dcr7WCqhj
|
24
|
-
bswICLFPHTRhEqK1D8a6TEe156H2b0p4YFhjXDy94ppGEg+1/bKklehihpS2nerO
|
25
|
-
JUiuWrLNirK3Xqs7rNJ1tMx+D3fCJOdnELYjYB7HbIyySF5wTtNKSPGzhI7HMdj9
|
26
|
-
s1B8OuNJTDPKkz3P3OOFUL5Eqs6Ztvzt58+VBMv7X3+8qrSfgmhzKVm4vv3t/pOX
|
27
|
-
M3ACdYyC4y6p2HtoPke1C4ySze7f2LAW+g3Pj7awlSUsnaf2gElke8UszMvl84qI
|
28
|
-
QZ7qExJbYJ7UU9gzNG2rHE/e1OM4OL+W70t44QgNiynQCVfhC+XTAmjF0NZn
|
2
|
+
MIIDIjCCAgqgAwIBAgIUTCjyocBgCYSWU/GYI58F0IBXLHswDQYJKoZIhvcNAQEL
|
3
|
+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
4
|
+
cmF0ZWQgQ0EwHhcNMjIwMzIxMDc1NTU2WhcNMjUwMzIwMDc1NTU2WjATMREwDwYD
|
5
|
+
VQQDEwhpbnN0YW5jZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJKT
|
6
|
+
f0FF/R9WBC7lwN0IJdOn+jPJJ+4M3LY/sfFuTaAUgPSaiRLLzCjox1p1Xy9z+xyk
|
7
|
+
C2Dkhb4FdOZBNqS/w0Z7lkrha8VZg2UKW4+i1lq4ANPl9sP9YCbh1R+SRdpHnZX7
|
8
|
+
APG798+0+NC4GmEeOIFfWsEE4MiFXAPunhAlAbxMl6e5htX4cgYWMbH67Ur1/uQB
|
9
|
+
26Y6PBahKP7dbxaL/ugPE6MDmmA+cNRWMa21Ay2h94IesRXwNRFn1gQ1SqKU0hBJ
|
10
|
+
KX7u0IoYyS6nbDlF6E+npLLWzDMCHsykrnadWV5kDSNv1t7Wvk0noNStrryOXgtc
|
11
|
+
7iCCOX1oqsP/yDNl9OECAwEAAaNNMEswHQYDVR0OBBYEFBtzuCJPEhHW3ZD1bReq
|
12
|
+
S6K3P09OMB8GA1UdIwQYMBaAFJcC1Mw29qzRV0dPCCc6GyB8LXx3MAkGA1UdEwQC
|
13
|
+
MAAwDQYJKoZIhvcNAQELBQADggEBAHvXsfMgY+PTBCnW3A6QCGZ3jTSRqqXRFYB8
|
14
|
+
b/unfhD4iUFlgO4a/UCL2MTsFYXkzvlzwQyH6ll9/rTslBvJLiqi3+IZMfGNoaNI
|
15
|
+
LhTLy0NF9scPju7Q6MxcPAceI4gmxKyBWJxm4XYJ1VwmPKJNzKqFEwfPWMakxUaT
|
16
|
+
wiuhVodqZweWi7S2keYiduBLEbqWBJPKAnb8e3PIILBqL0nfhmVw0NSAD19d9oLR
|
17
|
+
89AaY8zQ4YL4Txs4FSrK0VQl3L6NAtAaq9JvXqzXD/E0EO1YL8ykM3Zash/GG9iN
|
18
|
+
B9Momegqn8/q7pfoWdkE2oL9KUKispUT9Fq3mY6KHZL1T4SbxL8=
|
29
19
|
-----END CERTIFICATE-----
|
@@ -1,54 +1,30 @@
|
|
1
1
|
-----BEGIN RSA PRIVATE KEY-----
|
2
2
|
Proc-Type: 4,ENCRYPTED
|
3
|
-
DEK-Info: AES-128-CBC,
|
3
|
+
DEK-Info: AES-128-CBC,635374A0A566A0189BE4366E77881457
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
+
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
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
-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
-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
-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
-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
-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
-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
-
ViRG7swROwcu/EylVliZ2qGWbBKmSpTyr5Cb8e9UqHER+/SOdSW4Yy19px1O+IjR
|
38
|
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-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
-
IV6L9ahGCLIZ+WwLpQ0Oupa1YAFYXQonm6Yj3SidFJzb57wYHoqvPnH54UKOVjsR
|
53
|
-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
|
54
30
|
-----END RSA PRIVATE KEY-----
|
@@ -1,29 +1,19 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
oSmdYj+2hJ650qjAh1rqjoACxcCAIWlBfrG14pVnDdKOVQwX+NZjRZv3V4fRdqSs
|
20
|
-
DgzOLbdZcocL97S42b6qPhlpkiTlQ4Z6nzeB4HjzVln+0bAb9ykFxnyicCHyCPg5
|
21
|
-
rSO5eiLGq/eXQOblBpb/xqOSsiRq6VHBFfOjjFDE2eOiYT5kuZvOWNgHUz/4e2TN
|
22
|
-
7WXNB3eJgNfmttXsQnNMK7G5J7rYlnOSg7bTCZFFbcGKf2CILKxDn4KCv/ZWeeBc
|
23
|
-
bAuAaGAJTO+DLZlah2Yn0bpkmvpsLZ6NmZr9T+BV0xa17Q8VEgd9tensxnmp0gf/
|
24
|
-
xC+kapL6pMu+2VJHQ0V9K32h3hongddofKczL1ztvKhISIVYM+vPwxS9VdXEwUxz
|
25
|
-
HTqu9hP5TBQCHR5cAKBwz3+haWA6iq8rCEXoDgwHgwYARQI6C6f8AVbU9OWLt5Nt
|
26
|
-
RwpJYMYpJhIOyuuRpaCIKAyBaST87MOj6dB31mlZQtXUFJ2ZYNmpZlCwoS1BWj8m
|
27
|
-
gHsv5vqPVHUq0lvxamNPJyGLfv+lckxXQcepMdjl2qLkAQJFYNMwOy9fFVZXOt3k
|
28
|
-
N5J4xyJ3nD50j/y9KeM3s7pDHENyIQtstJ3kMyCaD97SSlcXxTlinYOp2SIl
|
2
|
+
MIIDIjCCAgqgAwIBAgIURM555Ac4/c8UOP5fB12+1bo+b7owDQYJKoZIhvcNAQEL
|
3
|
+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
4
|
+
cmF0ZWQgQ0EwHhcNMjIwMzIxMDc1NTA4WhcNMjUwMzIwMDc1NTA4WjATMREwDwYD
|
5
|
+
VQQDEwhpbnN0YW5jZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI0s
|
6
|
+
sYPGWeca0YMIVATxnEA/+WFL/eWWcbaX5JeaJA+g6WxMs2B6FEMfaSxauGrHZJWt
|
7
|
+
YNP1s0pptzJEPAZyx3Tkv8oNtSai3rpOocY3ebE/SWXlQd7xHWvy+w5ls1LRHINU
|
8
|
+
pEnMZhjdHqXFjIipmsAXihzU/BrHkWGfddco88YuaMgtWbLIqQr/oHyd2F6KgQby
|
9
|
+
HPSD35hCYvLQiHEY7vIntA6A9mYSdbZg0ZvI+QGEvZmhYXZjKOy7Vfg8p1zmfbIn
|
10
|
+
XdddCOkBp5gXDu8aRxigaQAi3Y+ESnVPxDr62+VEzCdmd/PCW8blHfvE9bTgqjYm
|
11
|
+
gH01PAoqQewkuxclufECAwEAAaNNMEswHQYDVR0OBBYEFNIW9layQi7V2kbYjwIu
|
12
|
+
NWT0QXOdMB8GA1UdIwQYMBaAFEyJvLXizLXiGu8sBnIcIS001ArxMAkGA1UdEwQC
|
13
|
+
MAAwDQYJKoZIhvcNAQELBQADggEBAAOnGIKiJxEc684Y6w1WpRftiD8VnkzE+A8n
|
14
|
+
uVXJibZzEKqxMWZ83A4lTugG+vKpOj1+8hcYUdXhIo2Qt92ArIOr2S7awdkMeoRq
|
15
|
+
eIKPElC9/8mm3572kdlqBuiT12bA2oD4zrI2hS0HV21DMLAxoorzLqn0TjMnnpm3
|
16
|
+
J1KLJzzMSRtiUtwiLXG4tx2ThXfTwcJmsRMQqZW/mFajEVs0jafUAeBH7hZoZX8o
|
17
|
+
7e0O3TCQ5JWW3/xeGK/JnAZ1IyA6jQU/J5LbGgPVu0FBGmVn3PhtwYASrdXWzK4s
|
18
|
+
ncofcBHflmi8dkiKHVWNnOTdZdzkApYo59/eq4iDESR8YNgOCKA=
|
29
19
|
-----END CERTIFICATE-----
|
@@ -1,52 +1,27 @@
|
|
1
|
-
-----BEGIN PRIVATE KEY-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
M37gkLZYncaRuRvfp8Z/DRM3Zjoim3y4QIR/SAv/q+Asaqb5HAMbSrWThcXyNkLu
|
29
|
-
KGEs/xWnBAK2VIZr7XAVQYwxDgLZjowLmXgHb2vqsUJEPKQ/AoIBAQDLAN8Kp3Np
|
30
|
-
5R6ZDKvDyvZ/CfHVyqfaKzrKVQg67qddOjpNTtnz08OkOCW4HrnknCr9+WJElBdn
|
31
|
-
Q1eqPCngvWtxDxfh0Qzvkh1eiC90bgzks6OH4Ex98AYSX/+zX/B+TGalYtVlOstt
|
32
|
-
6oz7JYwjgNPsoEkAbBwnGl/JTFEQ1UNuRmxDBP+bgJRbqt6zMOr3Ig94mDLKI6xm
|
33
|
-
uxZLW6pSv12jXQPxsUQ/roUCrcFB0ry6PT7PEB3JxGAsJbZZE//QP9KZ8CAy+vR9
|
34
|
-
N8jk/gzCQgkhca3DI9EeB79wP/DLjSwE5AVodL9SJfZX9pYmsj2JSk615a946ELT
|
35
|
-
7AE4GrHaHKh/AoIBAQCxhiVnR4uistusmupYZQGl7V/9oT/JfvNegOogZnzKzCD6
|
36
|
-
UDyijB7zAxsjlBhPfJ3zQORe2jEF7ffWWMJCQhuzqx7OFwPBnHa1J0pj6SPR01Jp
|
37
|
-
6+6X3B4Or7HOdGjFFY5t4N0ODnUEBnR3IzKaSGOdnWxNA8ErrOXbHUGpxVMJH5Eu
|
38
|
-
DShHTq2rj7QpgESmJvDxPdI8jvwZyhqn0lYtNzuOrcnphCvUt/BhAm/EQ565EUhO
|
39
|
-
gPkDTTQYwRuLOyF3WmurNYBPz+BEsLxsy8daoPs4B0wvcqdc7AJwIRcmIpgsytcz
|
40
|
-
3xxhd+nxGodZ3MNE6mxMOHgVPjlOPy2e8wFXM1oJAoIBAHu2bTat85zuP2ZgHXE1
|
41
|
-
iGDFK7bxSLehLrPNfDWF6ULcUFl6m0KHpCu49+ur9feG4IBkcWl/on+Qv6UEAzVt
|
42
|
-
2kNNQm2gm7SIJBPPBLR8uKjLfPY6UANTui+Kh2bGKeaeItPZVljZqs2yafZH3I5q
|
43
|
-
XTxQNgzm1YVTAlrHgoOyo+RZUHLLYgZfJopyqEMlpZu0Cx+gCRu8/7yfeSe1lifV
|
44
|
-
bXg4IEYzlHcGoRKP1z2I8vDAkD1aAf1LCpz84pKIqJY9vteHSegnncWNsIU0+YuM
|
45
|
-
+MmD4LQSaMdXS2hZ3yH9R303hMAyncGvVuAmazzr1KqNOUiK0BPr34YMxnVtd0OH
|
46
|
-
wXsCggEBAMHukcdldqhBwdSUMDlzqoUGBtHdA5KCbAbJTL0P1EvqVivinWsu0idR
|
47
|
-
q4Nr+0y2SEsgWB0Io7BZcBRtXGFq08IkWV2PAcuEMNkXcOjZsPWEGxJxv7A0jhP1
|
48
|
-
9Y6eSxlOJfbT7nKQAnY3sADOzzCDR+xKcUrckFNxaIIKRFgkTyRP137LGeCvti4M
|
49
|
-
BFWjRfoaaDIJ6Fe8KfTz0Gds+oDQE5H9FzGaMSpY4OS9ERWmA+FVUBgGu8KYcZA8
|
50
|
-
L71sA6CRBK04MsK3rKi+/5tQZHxrkLb3Ast5So7f8TbgJCe7fGo0jDcmwxlarN+K
|
51
|
-
o22D2dsjujfyKKiKar1g0pjn2ouLyGI=
|
52
|
-
-----END PRIVATE KEY-----
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpAIBAAKCAQEAjSyxg8ZZ5xrRgwhUBPGcQD/5YUv95ZZxtpfkl5okD6DpbEyz
|
3
|
+
YHoUQx9pLFq4asdkla1g0/WzSmm3MkQ8BnLHdOS/yg21JqLeuk6hxjd5sT9JZeVB
|
4
|
+
3vEda/L7DmWzUtEcg1SkScxmGN0epcWMiKmawBeKHNT8GseRYZ911yjzxi5oyC1Z
|
5
|
+
ssipCv+gfJ3YXoqBBvIc9IPfmEJi8tCIcRju8ie0DoD2ZhJ1tmDRm8j5AYS9maFh
|
6
|
+
dmMo7LtV+DynXOZ9sidd110I6QGnmBcO7xpHGKBpACLdj4RKdU/EOvrb5UTMJ2Z3
|
7
|
+
88JbxuUd+8T1tOCqNiaAfTU8CipB7CS7FyW58QIDAQABAoIBAD10dD4J7X72JLgm
|
8
|
+
uvR//OXXM4cQXpFAAXZb/s2j8wi+on5bkUZxPjrOBKmjQF5zOC0UEW+TqJ2/EVmX
|
9
|
+
bI3eD0eqgHbDqtUL12tA6Zlw8s+e3iO2Pgt/6K/iUTm+OebWUtQ012Osz9EJCNte
|
10
|
+
+MNRGaV/WccdTDWYJIhbsx+bmyrsxxW49rwvgxI26tpJYp0QEmwEiDqfc8kRFWgy
|
11
|
+
xVSt8Rjwk418YdsYUIGrO6RsGkwsCOTJWUJpBOzLBKwj4do5l5fC2g1/MSlj7Odj
|
12
|
+
0HH/riBmzBj/YcyMlkhfGU0Zj/OlDnz8FP5HhfpYsGxvrjOYJ49Cl4cu8r47wnFP
|
13
|
+
nx4RMmUCgYEA4U9hOtp8oJ+Ztio/1I6bAb/hKLJ3LNeV46697/lTy6tSVmYJ1DGJ
|
14
|
+
YU3P5wmOpjZC2xs22VyX/vgC1v5RT0Jg8CGgXukmMV1gQQch6gAQci9+ZJ4LRz9U
|
15
|
+
++dXyKuUbqncx9ezFwddBr+jQuu6Wn2AHljEp7wZGaijxD2lsp4B8vcCgYEAoGd8
|
16
|
+
w+hre2pGy5PKJPSoPp+9tNVJasXe3DM6ZYEZkd+96gStA+8UlSYe9hP+Taik7oUJ
|
17
|
+
SYzELfyU8s+9XWozaa1T5PeyY8jIbEnUHWy8Uag4dHY7ooR+7b3iAD4RLfx3o2GP
|
18
|
+
vJwP3i2FwklDbbyugVXZBfkSf2NJ4QidYIWzGFcCgYAD4MHjqW8LtLOIlyGSHwI7
|
19
|
+
/Xl6ode7RdqmmJNcVgZDMyevpQH2TQP4UMaLS3bRFY4BB27iPt2+3bXuzWHI43OX
|
20
|
+
rnx8JbcqkljdxamnxWiDDp42TSIUj9p+m3S/V3Suku3h4qyKcO4A97tvo28Jr69M
|
21
|
+
1mpMGMi10FlBP25irKWL8QKBgQCZqKlnjrWwA24QROJnpoupeiMkIRH0m9rS/Kwb
|
22
|
+
YqHZEQoALTyEwTnpaxxLxXlecYiWCZGNCLFCEG2rcQBJhZv8xxLQC8yzNDtzKQJu
|
23
|
+
saRxYQG75ytXky94lebzLoIMmIcPVz13g9TblKZHKSHT9OUCdvewdhqXN8klLrh8
|
24
|
+
J3gafwKBgQDcn/8lzfmbsKO/V9fzEbqUQJOJkwyf2adLFD+KlHM3+VAghnj70j05
|
25
|
+
1XDkQ3LOgKrqPdC/HIGjjlkTn6vaieXltHguMg99nPpzj+LXrtN22ru2eTjjUNsD
|
26
|
+
+uB9N4kgUAR00xu60xkkOSK1TcudeL5uwejO2ul0tkDu1YGDvhXymA==
|
27
|
+
-----END RSA PRIVATE KEY-----
|
data/spec/outputs/tcp_spec.rb
CHANGED
@@ -24,6 +24,25 @@ describe LogStash::Outputs::Tcp do
|
|
24
24
|
|
25
25
|
let(:event) { LogStash::Event.new('message' => 'foo bar') }
|
26
26
|
|
27
|
+
['server', 'client'].each do |mode|
|
28
|
+
describe "handling obsolete settings for #{mode} mode" do
|
29
|
+
[{:name => 'ssl_cert', :replacement => 'ssl_certificate', :sample_value => "certificate_path"},
|
30
|
+
{:name => 'ssl_cacert', :replacement => 'ssl_certificate_authorities', :sample_value => "certificate_path"},
|
31
|
+
{:name => 'ssl_enable', :replacement => 'ssl_enabled', :sample_value => true},
|
32
|
+
{:name => 'ssl_verify', :replacement => 'ssl_client_authentication', :sample_value => 'peer'}].each do | obsolete_setting |
|
33
|
+
context "with obsolete #{obsolete_setting[:name]}" do
|
34
|
+
let (:deprecated_config) do
|
35
|
+
config.merge({'mode' => mode, obsolete_setting[:name] => obsolete_setting[:sample_value]})
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should raise a config error with the appropriate message" do
|
39
|
+
expect { LogStash::Outputs::Tcp.new(deprecated_config).register }.to raise_error LogStash::ConfigurationError, /The setting `#{obsolete_setting[:name]}` in plugin `tcp` is obsolete and is no longer available. Use '#{obsolete_setting[:replacement]}'/i
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
27
46
|
context 'failing to connect' do
|
28
47
|
|
29
48
|
before { subject.register }
|
@@ -125,7 +144,7 @@ describe LogStash::Outputs::Tcp do
|
|
125
144
|
context "client mode" do
|
126
145
|
before { subject.register }
|
127
146
|
|
128
|
-
let(:config) { super().merge
|
147
|
+
let(:config) { super().merge 'mode' => 'client' }
|
129
148
|
|
130
149
|
it 'writes payload data' do
|
131
150
|
Thread.start { sleep 0.25; subject.receive event }
|
@@ -214,7 +233,7 @@ describe LogStash::Outputs::Tcp do
|
|
214
233
|
|
215
234
|
context 'with supported protocol' do
|
216
235
|
|
217
|
-
let(:config) { super().merge("ssl_supported_protocols" => ['TLSv1.2']) }
|
236
|
+
let(:config) { super().merge("ssl_supported_protocols" => ['TLSv1.2'], "ssl_verification_mode" => "none") }
|
218
237
|
|
219
238
|
let(:server_min_version) { 'TLS1_2' }
|
220
239
|
|
@@ -229,48 +248,11 @@ describe LogStash::Outputs::Tcp do
|
|
229
248
|
expect( read ).to end_with 'foo bar'
|
230
249
|
end
|
231
250
|
|
232
|
-
context 'with ssl_verification_mode => full' do
|
233
|
-
let(:config) do
|
234
|
-
{
|
235
|
-
"mode" => "client",
|
236
|
-
"host" => "localhost",
|
237
|
-
"port" => port,
|
238
|
-
"ssl_enabled" => true,
|
239
|
-
"ssl_certificate_authorities" => crt_file,
|
240
|
-
"ssl_verification_mode" => "full",
|
241
|
-
"codec" => "plain"
|
242
|
-
}
|
243
|
-
end
|
244
|
-
|
245
|
-
context "with right host name" do
|
246
|
-
let(:config) { super().merge("host" => "localhost") }
|
247
|
-
it 'reads plain data' do
|
248
|
-
thread = Thread.start { sleep 0.25; subject.receive event }
|
249
|
-
socket = secure_server.accept
|
250
|
-
read = socket.sysread(100)
|
251
|
-
expect( read.size ).to be > 0
|
252
|
-
expect( read ).to end_with 'foo bar'
|
253
|
-
end
|
254
|
-
end
|
255
|
-
|
256
|
-
context "with wrong host name" do
|
257
|
-
let(:config) { super().merge("host" => "127.0.0.1") }
|
258
|
-
it 'closes the connection' do
|
259
|
-
thread = Thread.start do
|
260
|
-
sleep 0.25
|
261
|
-
expect { subject.connect }.to raise_error(OpenSSL::SSL::SSLError, /hostname "127.0.0.1" does not match the server certificate/)
|
262
|
-
end
|
263
|
-
secure_server.accept rescue nil # the other side will close the connection potentially causing a "Socket closed" error
|
264
|
-
thread.join
|
265
|
-
end
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
251
|
end
|
270
252
|
|
271
253
|
context 'with unsupported protocol (on server)' do
|
272
254
|
|
273
|
-
let(:config) { super().merge("ssl_supported_protocols" => ['TLSv1.1']
|
255
|
+
let(:config) { super().merge("ssl_supported_protocols" => ['TLSv1.1']) }
|
274
256
|
|
275
257
|
let(:server_min_version) { 'TLS1_2' }
|
276
258
|
|
@@ -278,16 +260,16 @@ describe LogStash::Outputs::Tcp do
|
|
278
260
|
after { secure_server.close }
|
279
261
|
|
280
262
|
it 'fails (and loops retrying)' do
|
281
|
-
expect(subject.logger).to receive(:error).
|
282
|
-
expect(subject.logger).to receive(:error).
|
263
|
+
expect(subject.logger).to receive(:error).with(/connect ssl failure/i, hash_including(message: /No appropriate protocol/i)).and_call_original
|
264
|
+
expect(subject.logger).to receive(:error).with(/failed to connect/i, hash_including(exception: OpenSSL::SSL::SSLError)).and_call_original
|
283
265
|
expect(subject).to receive(:sleep).once.and_call_original
|
284
266
|
expect(subject).to receive(:sleep).once.and_throw :TEST_DONE # to be able to abort the retry loop
|
285
267
|
|
286
268
|
Thread.start { secure_server.accept rescue nil }
|
287
|
-
expect {
|
269
|
+
expect { subject.receive event }.to throw_symbol(:TEST_DONE)
|
288
270
|
end
|
289
271
|
|
290
|
-
end
|
272
|
+
end if LOGSTASH_VERSION > '7.0'
|
291
273
|
|
292
274
|
end
|
293
275
|
|
@@ -314,7 +296,7 @@ describe LogStash::Outputs::Tcp do
|
|
314
296
|
context "and protocol is TLSv1.3" do
|
315
297
|
let(:key_file) { File.join(FIXTURES_PATH, 'plaintext/instance.key') }
|
316
298
|
let(:crt_file) { File.join(FIXTURES_PATH, 'plaintext/instance.crt') }
|
317
|
-
let(:config) { super().merge("ssl_certificate" => crt_file, "ssl_key" => key_file) }
|
299
|
+
let(:config) { super().merge("ssl_certificate" => crt_file, "ssl_key" => key_file, "ssl_verification_mode" => "none") }
|
318
300
|
|
319
301
|
let(:secure_server) do
|
320
302
|
ssl_context = OpenSSL::SSL::SSLContext.new
|
@@ -411,16 +393,6 @@ describe LogStash::Outputs::Tcp do
|
|
411
393
|
end
|
412
394
|
end
|
413
395
|
|
414
|
-
context "with deprecated ssl_verify = true and no ssl_certificate_authorities" do
|
415
|
-
let(:config) { super().merge(
|
416
|
-
'ssl_verify' => true,
|
417
|
-
'ssl_certificate_authorities' => []
|
418
|
-
) }
|
419
|
-
|
420
|
-
it "should register without errors" do
|
421
|
-
expect { subject.register }.to_not raise_error
|
422
|
-
end
|
423
|
-
end
|
424
396
|
|
425
397
|
%w[required optional].each do |ssl_client_authentication|
|
426
398
|
context "with ssl_client_authentication = `#{ssl_client_authentication}` and no ssl_certificate_authorities" do
|
@@ -446,53 +418,6 @@ describe LogStash::Outputs::Tcp do
|
|
446
418
|
end
|
447
419
|
end
|
448
420
|
|
449
|
-
context "with deprecated settings" do
|
450
|
-
let(:ssl_verify) { true }
|
451
|
-
let(:certificate_path) { File.join(FIXTURES_PATH, 'plaintext/instance.crt') }
|
452
|
-
let(:config) do
|
453
|
-
{
|
454
|
-
"host" => "127.0.0.1",
|
455
|
-
"port" => port,
|
456
|
-
"ssl_enable" => true,
|
457
|
-
"ssl_cert" => certificate_path,
|
458
|
-
"ssl_key" => File.join(FIXTURES_PATH, 'plaintext/instance.key'),
|
459
|
-
"ssl_verify" => ssl_verify
|
460
|
-
}
|
461
|
-
end
|
462
|
-
|
463
|
-
context "and mode is server" do
|
464
|
-
let(:config) { super().merge("mode" => 'server') }
|
465
|
-
[true, false].each do |verify|
|
466
|
-
context "and ssl_verify is #{verify}" do
|
467
|
-
let(:ssl_verify) { verify }
|
468
|
-
|
469
|
-
it "should set new configs variables" do
|
470
|
-
subject.register
|
471
|
-
expect(subject.instance_variable_get(:@ssl_enabled)).to eql(true)
|
472
|
-
expect(subject.instance_variable_get(:@ssl_client_authentication)).to eql(verify ? 'required' : 'none')
|
473
|
-
expect(subject.instance_variable_get(:@ssl_certificate)).to eql(certificate_path)
|
474
|
-
end
|
475
|
-
end
|
476
|
-
end
|
477
|
-
end
|
478
|
-
|
479
|
-
context "and mode is client" do
|
480
|
-
let(:config) { super().merge("mode" => 'client') }
|
481
|
-
[true, false].each do |verify|
|
482
|
-
context "and ssl_verify is #{verify}" do
|
483
|
-
let(:ssl_verify) { verify }
|
484
|
-
|
485
|
-
it "should set new configs variables" do
|
486
|
-
subject.register
|
487
|
-
expect(subject.instance_variable_get(:@ssl_enabled)).to eql(true)
|
488
|
-
expect(subject.instance_variable_get(:@ssl_verification_mode)).to eql(verify ? 'full' : 'none')
|
489
|
-
expect(subject.instance_variable_get(:@ssl_certificate)).to eql(certificate_path)
|
490
|
-
end
|
491
|
-
end
|
492
|
-
end
|
493
|
-
end
|
494
|
-
end
|
495
|
-
|
496
421
|
context "with ssl_client_authentication" do
|
497
422
|
let(:config) do
|
498
423
|
super().merge 'ssl_client_authentication' => 'required'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-tcp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 7.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,20 +72,6 @@ dependencies:
|
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
requirement: !ruby/object:Gem::Requirement
|
77
|
-
requirements:
|
78
|
-
- - "~>"
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
version: '1.0'
|
81
|
-
name: logstash-mixin-normalize_config_support
|
82
|
-
type: :runtime
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - "~>"
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '1.0'
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
76
|
requirement: !ruby/object:Gem::Requirement
|
91
77
|
requirements:
|