logstash-input-http 3.11.1-java → 4.0.0-java
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 +12 -41
- data/README.md +1 -1
- data/VERSION +1 -1
- data/docs/index.asciidoc +20 -117
- data/lib/logstash/inputs/http.rb +10 -92
- data/lib/logstash-input-http_jars.rb +8 -9
- data/spec/inputs/helpers.rb +1 -5
- data/spec/inputs/http_spec.rb +30 -240
- data/vendor/jar-dependencies/io/netty/netty-buffer/{4.1.137.Final/netty-buffer-4.1.137.Final.jar → 4.1.115.Final/netty-buffer-4.1.115.Final.jar} +0 -0
- data/vendor/jar-dependencies/io/netty/netty-codec/{4.1.137.Final/netty-codec-4.1.137.Final.jar → 4.1.115.Final/netty-codec-4.1.115.Final.jar} +0 -0
- data/vendor/jar-dependencies/io/netty/netty-codec-http/{4.1.137.Final/netty-codec-http-4.1.137.Final.jar → 4.1.115.Final/netty-codec-http-4.1.115.Final.jar} +0 -0
- data/vendor/jar-dependencies/io/netty/netty-common/{4.1.137.Final/netty-common-4.1.137.Final.jar → 4.1.115.Final/netty-common-4.1.115.Final.jar} +0 -0
- data/vendor/jar-dependencies/io/netty/netty-handler/4.1.115.Final/netty-handler-4.1.115.Final.jar +0 -0
- data/vendor/jar-dependencies/io/netty/netty-transport/{4.1.137.Final/netty-transport-4.1.137.Final.jar → 4.1.115.Final/netty-transport-4.1.115.Final.jar} +0 -0
- data/vendor/jar-dependencies/io/netty/netty-transport-native-unix-common/{4.1.137.Final/netty-transport-native-unix-common-4.1.137.Final.jar → 4.1.115.Final/netty-transport-native-unix-common-4.1.115.Final.jar} +0 -0
- data/vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/4.0.0/logstash-input-http-4.0.0.jar +0 -0
- metadata +22 -20
- data/vendor/jar-dependencies/io/netty/netty-handler/4.1.137.Final/netty-handler-4.1.137.Final.jar +0 -0
- data/vendor/jar-dependencies/io/netty/netty-resolver/4.1.137.Final/netty-resolver-4.1.137.Final.jar +0 -0
- data/vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.11.1/logstash-input-http-3.11.1.jar +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c406f5e0d989c833db3c35529b4012053539955f830fde6ca9e44235f4a39d3b
|
|
4
|
+
data.tar.gz: 22916a6402a2c55edfbee1bf3af0a578b630d2fd756356733bfc0c7de3359fdf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2c2616bcde330f2d0a2d0f4273f45e7bd2ad7e09e3a1322d0c759c146c38e13c92f202b45c4a1df6a19b0b9e1ae46eaaa0e3ec1fc81f5e8421a591479122ab3e
|
|
7
|
+
data.tar.gz: 1b4d208dc8e180ee5818270f1ceb36625870d4429b9570102f69beb96c253bc5a64fc3837c90d8960b2bca1391b9b93bff76fd648d67ed27cb8b9b366b238ca2
|
data/CHANGELOG.md
CHANGED
|
@@ -1,44 +1,15 @@
|
|
|
1
|
-
##
|
|
2
|
-
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
## 3.10.9
|
|
14
|
-
- Update Netty dependency to 4.1.135.Final [#220](https://github.com/logstash-plugins/logstash-input-http/pull/220)
|
|
15
|
-
|
|
16
|
-
## 3.10.8
|
|
17
|
-
- Update Netty dependency to 4.1.134.Final [#218](https://github.com/logstash-plugins/logstash-input-http/pull/218)
|
|
18
|
-
|
|
19
|
-
## 3.10.7
|
|
20
|
-
- Update Netty dependency to 4.1.132.Final [#213](https://github.com/logstash-plugins/logstash-input-http/pull/213)
|
|
21
|
-
|
|
22
|
-
## 3.10.6
|
|
23
|
-
- Upgrade netty to 4.1.131 [#211](https://github.com/logstash-plugins/logstash-input-http/pull/211)
|
|
24
|
-
|
|
25
|
-
## 3.10.5
|
|
26
|
-
- Re-packaging the plugin [#209](https://github.com/logstash-plugins/logstash-input-http/pull/209)
|
|
27
|
-
|
|
28
|
-
## 3.10.4
|
|
29
|
-
- Upgrade netty to 4.1.129 [#204](https://github.com/logstash-plugins/logstash-input-http/pull/204)
|
|
30
|
-
|
|
31
|
-
## 3.10.3
|
|
32
|
-
- Upgrade netty to 4.1.126 [#199](https://github.com/logstash-plugins/logstash-input-http/pull/199)
|
|
33
|
-
|
|
34
|
-
## 3.10.2
|
|
35
|
-
- Upgrade netty to 4.1.118 [#194](https://github.com/logstash-plugins/logstash-input-http/pull/194)
|
|
36
|
-
|
|
37
|
-
## 3.10.1
|
|
38
|
-
- Properly naming netty threads [#191](https://github.com/logstash-plugins/logstash-input-http/pull/191)
|
|
39
|
-
|
|
40
|
-
## 3.10.0
|
|
41
|
-
- add improved proactive rate-limiting, rejecting new requests when queue has been actively blocking for more than 10 seconds [#179](https://github.com/logstash-plugins/logstash-input-http/pull/179)
|
|
1
|
+
## 4.0.0
|
|
2
|
+
- SSL settings that were marked deprecated in version `3.7.0` are now marked obsolete, and will prevent the plugin from starting.
|
|
3
|
+
- These settings are:
|
|
4
|
+
- `tls_min_version`, which should be replaced by `ssl_supported_protocols`
|
|
5
|
+
- `tls_max_version`, which should be replaced by `ssl_supported_protocols`
|
|
6
|
+
- `cipher_suites`, which should bre replaced by `ssl_cipher_suites`
|
|
7
|
+
- `ssl`, which should bre replaced by `ssl_enabled`
|
|
8
|
+
- `keystore`, which should bre replaced by `ssl_keystore_path`
|
|
9
|
+
- `keystore_password`, which should bre replaced by `ssl_keystore_password`
|
|
10
|
+
- `ssl_verify_mode`, which should bre replaced by `ssl_client_authentication`
|
|
11
|
+
- `verify_mode`, which should bre replaced by `ssl_client_authentication`
|
|
12
|
+
- [#182](https://github.com/logstash-plugins/logstash-input-http/pull/182)
|
|
42
13
|
|
|
43
14
|
## 3.9.2
|
|
44
15
|
- Upgrade netty to 4.1.115 [#183](https://github.com/logstash-plugins/logstash-input-http/pull/183)
|
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Logstash Plugin
|
|
2
2
|
|
|
3
|
-
[](https://travis-ci.com/logstash-plugins/logstash-input-http)
|
|
4
4
|
|
|
5
5
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
|
6
6
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.0
|
data/docs/index.asciidoc
CHANGED
|
@@ -27,14 +27,6 @@ Logstash will convert it into an event for subsequent processing. Users
|
|
|
27
27
|
can pass plain text, JSON, or any formatted data and use a corresponding codec with this
|
|
28
28
|
input. For Content-Type `application/json` the `json` codec is used, but for all other
|
|
29
29
|
data formats, `plain` codec is used.
|
|
30
|
-
If the `Content-type` header also defines a charset like in:
|
|
31
|
-
|
|
32
|
-
[source,text]
|
|
33
|
-
-----
|
|
34
|
-
curl -X POST -H 'Content-Type: application/json; charset=ISO-8859-1'
|
|
35
|
-
-----
|
|
36
|
-
|
|
37
|
-
then that charset is used to decode the request body. Else UTF-8 is applied.
|
|
38
30
|
|
|
39
31
|
This input can also be used to receive webhook requests to integrate with other services
|
|
40
32
|
and applications. By taking advantage of the vast plugin ecosystem available in Logstash
|
|
@@ -90,53 +82,26 @@ Values in `additional_codecs` are prioritized over those specified in the
|
|
|
90
82
|
`codec` option. That is, the default `codec` is applied only if no codec
|
|
91
83
|
for the request's content-type is found in the `additional_codecs` setting.
|
|
92
84
|
|
|
93
|
-
[id="plugins-{type}s-{plugin}-wire-logging"]
|
|
94
|
-
==== Enable wire logging
|
|
95
|
-
This plugin could log all requests and responses passing through the socket after TLS decoding.
|
|
96
|
-
This functionality helps troubleshoot issues in the processing pipeline that standard
|
|
97
|
-
external traffic captures, such as `tcpdump`, cannot resolve.
|
|
98
|
-
By default it's disabled, to dump received and sent payloads post-TLS decoding, enable debug logging
|
|
99
|
-
for `org.logstash.plugins.inputs.http.util.WireLogger`.
|
|
100
|
-
Note: Payloads exceeding 4 KB are automatically truncated to prevent excessive log file growth.
|
|
101
|
-
If you want to set a different limit, then in {ls} `config/jvm.options` configure a value for the system property `logstash.httpinput.wire.dump.size`.
|
|
102
|
-
|
|
103
|
-
[source,text]
|
|
104
|
-
-----
|
|
105
|
-
-Dlogstash.httpinput.wire.dump.size=512
|
|
106
|
-
-----
|
|
107
|
-
If you want to remove any limit, at the risk of polluting {ls} logs, set it to `0`.
|
|
108
|
-
Admitted values are only integers greater or equals to 0.
|
|
109
|
-
|
|
110
|
-
To enable it start {ls} in debug mode or configure the `config/log4j2.properties` to include:
|
|
111
|
-
|
|
112
|
-
[source,text]
|
|
113
|
-
-----
|
|
114
|
-
logger.httpwire.name = org.logstash.plugins.inputs.http.util.WireLogger
|
|
115
|
-
logger.httpwire.level = DEBUG
|
|
116
|
-
-----
|
|
117
|
-
|
|
118
|
-
WARNING: when this log is enabled the payload is dumped, so if contains secretes those are exposed in {ls} logs.
|
|
119
|
-
|
|
120
85
|
[id="plugins-{type}s-{plugin}-options"]
|
|
121
86
|
==== Http Input Configuration Options
|
|
122
87
|
|
|
123
88
|
This plugin supports the following configuration options plus the <<plugins-{type}s-{plugin}-common-options>> described later.
|
|
124
89
|
|
|
90
|
+
NOTE: As of version `4.0.0` of this plugin, a number of previously deprecated settings related to SSL have been removed.
|
|
91
|
+
Please check out <<plugins-{type}s-{plugin}-obsolete-options>> for details.
|
|
92
|
+
|
|
93
|
+
|
|
125
94
|
[cols="<,<,<",options="header",]
|
|
126
95
|
|=======================================================================
|
|
127
96
|
|Setting |Input type|Required
|
|
128
97
|
| <<plugins-{type}s-{plugin}-additional_codecs>> |<<hash,hash>>|No
|
|
129
|
-
| <<plugins-{type}s-{plugin}-cipher_suites>> |<<array,array>>|__Deprecated__
|
|
130
98
|
| <<plugins-{type}s-{plugin}-ecs_compatibility>> | <<string,string>>|No
|
|
131
99
|
| <<plugins-{type}s-{plugin}-host>> |<<string,string>>|No
|
|
132
|
-
| <<plugins-{type}s-{plugin}-keystore>> |<<path,path>>|__Deprecated__
|
|
133
|
-
| <<plugins-{type}s-{plugin}-keystore_password>> |<<password,password>>|__Deprecated__
|
|
134
100
|
| <<plugins-{type}s-{plugin}-password>> |<<password,password>>|No
|
|
135
101
|
| <<plugins-{type}s-{plugin}-port>> |<<number,number>>|No
|
|
136
102
|
| <<plugins-{type}s-{plugin}-max_pending_requests>> |<<number,number>>|No
|
|
137
103
|
| <<plugins-{type}s-{plugin}-response_headers>> |<<hash,hash>>|No
|
|
138
104
|
| <<plugins-{type}s-{plugin}-response_code>> |<<number,number>>, one of `[200, 201, 202, 204]`|No
|
|
139
|
-
| <<plugins-{type}s-{plugin}-ssl>> |<<boolean,boolean>>|__Deprecated__
|
|
140
105
|
| <<plugins-{type}s-{plugin}-ssl_certificate>> |a valid filesystem path|No
|
|
141
106
|
| <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> |<<array,array>>|No
|
|
142
107
|
| <<plugins-{type}s-{plugin}-ssl_cipher_suites>> |<<array,array>>|No
|
|
@@ -152,12 +117,8 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
|
152
117
|
| <<plugins-{type}s-{plugin}-ssl_truststore_password>> |<<password,password>>|No
|
|
153
118
|
| <<plugins-{type}s-{plugin}-ssl_truststore_path>> |<<path,path>>|No
|
|
154
119
|
| <<plugins-{type}s-{plugin}-ssl_truststore_type>> |<<string,string>>|No
|
|
155
|
-
| <<plugins-{type}s-{plugin}-ssl_verify_mode>> |<<string,string>>, one of `["none", "peer", "force_peer"]`|__Deprecated__
|
|
156
120
|
| <<plugins-{type}s-{plugin}-threads>> |<<number,number>>|No
|
|
157
|
-
| <<plugins-{type}s-{plugin}-tls_max_version>> |<<number,number>>|__Deprecated__
|
|
158
|
-
| <<plugins-{type}s-{plugin}-tls_min_version>> |<<number,number>>|__Deprecated__
|
|
159
121
|
| <<plugins-{type}s-{plugin}-user>> |<<string,string>>|No
|
|
160
|
-
| <<plugins-{type}s-{plugin}-verify_mode>> |<<string,string>>, one of `["none", "peer", "force_peer"]`|__Deprecated__
|
|
161
122
|
|=======================================================================
|
|
162
123
|
|
|
163
124
|
Also see <<plugins-{type}s-{plugin}-common-options>> for a list of options supported by all
|
|
@@ -175,13 +136,6 @@ Apply specific codecs for specific content types.
|
|
|
175
136
|
The default codec will be applied only after this list is checked
|
|
176
137
|
and no codec for the request's content-type is found
|
|
177
138
|
|
|
178
|
-
[id="plugins-{type}s-{plugin}-cipher_suites"]
|
|
179
|
-
===== `cipher_suites`
|
|
180
|
-
deprecated[3.6.0, Replaced by <<plugins-{type}s-{plugin}-ssl_cipher_suites>>]
|
|
181
|
-
|
|
182
|
-
* Value type is <<array,array>>
|
|
183
|
-
|
|
184
|
-
The list of cipher suites to use, listed by priorities.
|
|
185
139
|
|
|
186
140
|
[id="plugins-{type}s-{plugin}-ecs_compatibility"]
|
|
187
141
|
===== `ecs_compatibility`
|
|
@@ -255,23 +209,6 @@ See <<plugins-{type}s-{plugin}-ecs_metadata>> for detailed information.
|
|
|
255
209
|
|
|
256
210
|
The host or ip to bind
|
|
257
211
|
|
|
258
|
-
[id="plugins-{type}s-{plugin}-keystore"]
|
|
259
|
-
===== `keystore`
|
|
260
|
-
deprecated[3.7.0, Use <<plugins-{type}s-{plugin}-ssl_keystore_path>> instead]
|
|
261
|
-
|
|
262
|
-
* Value type is <<path,path>>
|
|
263
|
-
* There is no default value for this setting.
|
|
264
|
-
|
|
265
|
-
The JKS keystore to validate the client's certificates
|
|
266
|
-
|
|
267
|
-
[id="plugins-{type}s-{plugin}-keystore_password"]
|
|
268
|
-
===== `keystore_password`
|
|
269
|
-
deprecated[3.7.0, Use <<plugins-{type}s-{plugin}-ssl_keystore_password>> instead]
|
|
270
|
-
|
|
271
|
-
* Value type is <<password,password>>
|
|
272
|
-
* There is no default value for this setting.
|
|
273
|
-
|
|
274
|
-
Set the keystore password
|
|
275
212
|
|
|
276
213
|
[id="plugins-{type}s-{plugin}-password"]
|
|
277
214
|
===== `password`
|
|
@@ -349,16 +286,6 @@ specify a target field for the client host of the http request
|
|
|
349
286
|
|
|
350
287
|
specify target field for the client host of the http request
|
|
351
288
|
|
|
352
|
-
[id="plugins-{type}s-{plugin}-ssl"]
|
|
353
|
-
===== `ssl`
|
|
354
|
-
deprecated[3.7.0, Replaced by <<plugins-{type}s-{plugin}-ssl_enabled>>]
|
|
355
|
-
|
|
356
|
-
* Value type is <<boolean,boolean>>
|
|
357
|
-
* Default value is `false`
|
|
358
|
-
|
|
359
|
-
Events are, by default, sent in plain text. You can
|
|
360
|
-
enable encryption by setting `ssl` to true and configuring
|
|
361
|
-
the `ssl_certificate` and `ssl_key` options.
|
|
362
289
|
|
|
363
290
|
[id="plugins-{type}s-{plugin}-ssl_certificate"]
|
|
364
291
|
===== `ssl_certificate`
|
|
@@ -508,22 +435,6 @@ NOTE: You cannot use this setting and <<plugins-{type}s-{plugin}-ssl_certificate
|
|
|
508
435
|
|
|
509
436
|
The format of the truststore file. It must be either `jks` or `pkcs12`.
|
|
510
437
|
|
|
511
|
-
[id="plugins-{type}s-{plugin}-ssl_verify_mode"]
|
|
512
|
-
===== `ssl_verify_mode`
|
|
513
|
-
deprecated[3.7.0, Replaced by <<plugins-{type}s-{plugin}-ssl_client_authentication>>]
|
|
514
|
-
|
|
515
|
-
* Value can be any of: `none`, `peer`, `force_peer`
|
|
516
|
-
* Default value is `"none"`
|
|
517
|
-
|
|
518
|
-
By default the server doesn't do any client verification.
|
|
519
|
-
|
|
520
|
-
`peer` will make the server ask the client to provide a certificate.
|
|
521
|
-
If the client provides a certificate, it will be validated.
|
|
522
|
-
|
|
523
|
-
`force_peer` will make the server ask the client to provide a certificate.
|
|
524
|
-
If the client doesn't provide a certificate, the connection will be closed.
|
|
525
|
-
|
|
526
|
-
This option needs to be used with <<plugins-{type}s-{plugin}-ssl_certificate_authorities>> and a defined list of CAs.
|
|
527
438
|
|
|
528
439
|
[id="plugins-{type}s-{plugin}-threads"]
|
|
529
440
|
===== `threads`
|
|
@@ -533,23 +444,6 @@ This option needs to be used with <<plugins-{type}s-{plugin}-ssl_certificate_aut
|
|
|
533
444
|
|
|
534
445
|
Number of threads to use for both accepting connections and handling requests
|
|
535
446
|
|
|
536
|
-
[id="plugins-{type}s-{plugin}-tls_max_version"]
|
|
537
|
-
===== `tls_max_version`
|
|
538
|
-
deprecated[3.6.0]
|
|
539
|
-
|
|
540
|
-
* Value type is <<number,number>>
|
|
541
|
-
|
|
542
|
-
The maximum TLS version allowed for the encrypted connections.
|
|
543
|
-
The value must be the one of the following: 1.1 for TLS 1.1, 1.2 for TLS 1.2, 1.3 for TLSv1.3
|
|
544
|
-
|
|
545
|
-
[id="plugins-{type}s-{plugin}-tls_min_version"]
|
|
546
|
-
===== `tls_min_version`
|
|
547
|
-
deprecated[3.6.0]
|
|
548
|
-
|
|
549
|
-
* Value type is <<number,number>>
|
|
550
|
-
|
|
551
|
-
The minimum TLS version allowed for the encrypted connections.
|
|
552
|
-
The value must be one of the following: 1.1 for TLS 1.1, 1.2 for TLS 1.2, 1.3 for TLSv1.3
|
|
553
447
|
|
|
554
448
|
[id="plugins-{type}s-{plugin}-user"]
|
|
555
449
|
===== `user`
|
|
@@ -559,15 +453,24 @@ The value must be one of the following: 1.1 for TLS 1.1, 1.2 for TLS 1.2, 1.3 fo
|
|
|
559
453
|
|
|
560
454
|
Username for basic authorization
|
|
561
455
|
|
|
562
|
-
[id="plugins-{type}s-{plugin}-
|
|
563
|
-
|
|
564
|
-
deprecated[3.6.0, Replaced by <<plugins-{type}s-{plugin}-ssl_verify_mode>>]
|
|
456
|
+
[id="plugins-{type}s-{plugin}-obsolete-options"]
|
|
457
|
+
==== HTTP Input Obsolete Configuration Options
|
|
565
458
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
Set the client certificate verification method. Valid methods: none, peer, force_peer
|
|
459
|
+
WARNING: As of version `4.0.0` of this plugin, some configuration options have been replaced.
|
|
460
|
+
The plugin will fail to start if it contains any of these obsolete options.
|
|
570
461
|
|
|
462
|
+
[cols="<,<",options="header",]
|
|
463
|
+
|=======================================================================
|
|
464
|
+
|Setting|Replaced by
|
|
465
|
+
| cipher_suites |<<plugins-{type}s-{plugin}-ssl_cipher_suites>>
|
|
466
|
+
| keystore |<<plugins-{type}s-{plugin}-ssl_keystore_path>>
|
|
467
|
+
| keystore_password |<<plugins-{type}s-{plugin}-ssl_keystore_password>>
|
|
468
|
+
| ssl |<<plugins-{type}s-{plugin}-ssl_enabled>>
|
|
469
|
+
| ssl_verify_mode |<<plugins-{type}s-{plugin}-ssl_client_authentication>>
|
|
470
|
+
| tls_max_version |<<plugins-{type}s-{plugin}-ssl_supported_protocols>>
|
|
471
|
+
| tls_min_version |<<plugins-{type}s-{plugin}-ssl_supported_protocols>>
|
|
472
|
+
| verify_mode |<<plugins-{type}s-{plugin}-ssl_client_authentication>>
|
|
473
|
+
|=======================================================================
|
|
571
474
|
|
|
572
475
|
[id="plugins-{type}s-{plugin}-common-options"]
|
|
573
476
|
include::{include_path}/{type}.asciidoc[]
|
data/lib/logstash/inputs/http.rb
CHANGED
|
@@ -55,11 +55,6 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
55
55
|
# Password for basic authorization
|
|
56
56
|
config :password, :validate => :password, :required => false
|
|
57
57
|
|
|
58
|
-
# Events are by default sent in plain text. You can
|
|
59
|
-
# enable encryption by setting `ssl` to true and configuring
|
|
60
|
-
# the `ssl_certificate` and `ssl_key` options.
|
|
61
|
-
config :ssl, :validate => :boolean, :default => false, :deprecated => "Set 'ssl_enabled' instead."
|
|
62
|
-
|
|
63
58
|
# Events are by default sent in plain text. You can
|
|
64
59
|
# enable encryption by setting `ssl` to true and configuring
|
|
65
60
|
# the `ssl_certificate` and `ssl_key` options.
|
|
@@ -108,17 +103,6 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
108
103
|
# This option needs to be used with `ssl_certificate_authorities` and a defined list of CAs.
|
|
109
104
|
config :ssl_client_authentication, :validate => %w[none optional required], :default => 'none'
|
|
110
105
|
|
|
111
|
-
# By default the server doesn't do any client verification.
|
|
112
|
-
#
|
|
113
|
-
# `peer` will make the server ask the client to provide a certificate.
|
|
114
|
-
# If the client provides a certificate, it will be validated.
|
|
115
|
-
#
|
|
116
|
-
# `force_peer` will make the server ask the client to provide a certificate.
|
|
117
|
-
# If the client doesn't provide a certificate, the connection will be closed.
|
|
118
|
-
#
|
|
119
|
-
# This option needs to be used with `ssl_certificate_authorities` and a defined list of CAs.
|
|
120
|
-
config :ssl_verify_mode, :validate => ["none", "peer", "force_peer"], :default => "none", :deprecated => "Set 'ssl_client_authentication' instead."
|
|
121
|
-
|
|
122
106
|
# Time in milliseconds for an incomplete ssl handshake to timeout
|
|
123
107
|
config :ssl_handshake_timeout, :validate => :number, :default => 10000
|
|
124
108
|
|
|
@@ -150,25 +134,15 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
150
134
|
|
|
151
135
|
config :response_code, :validate => [200, 201, 202, 204], :default => 200
|
|
152
136
|
|
|
153
|
-
#
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
config :
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
config :
|
|
160
|
-
|
|
161
|
-
config :
|
|
162
|
-
|
|
163
|
-
config :cipher_suites, :validate => :array, :default => [], :deprecated => "Set 'ssl_cipher_suites' instead."
|
|
164
|
-
|
|
165
|
-
# The minimum TLS version allowed for the encrypted connections. The value must be one of the following:
|
|
166
|
-
# 1.0 for TLS 1.0, 1.1 for TLS 1.1, 1.2 for TLS 1.2, 1.3 for TLS 1.3
|
|
167
|
-
config :tls_min_version, :validate => :number, :default => TLS.min.version, :deprecated => "Set 'ssl_supported_protocols' instead."
|
|
168
|
-
|
|
169
|
-
# The maximum TLS version allowed for the encrypted connections. The value must be the one of the following:
|
|
170
|
-
# 1.0 for TLS 1.0, 1.1 for TLS 1.1, 1.2 for TLS 1.2, 1.3 for TLS 1.3
|
|
171
|
-
config :tls_max_version, :validate => :number, :default => TLS.max.version, :deprecated => "Set 'ssl_supported_protocols' instead."
|
|
137
|
+
# Obsolete Settings
|
|
138
|
+
config :ssl, :obsolete => "Set 'ssl_enabled' instead."
|
|
139
|
+
config :keystore, :obsolete => "Set 'ssl_keystore_path' instead."
|
|
140
|
+
config :keystore_password, :validate => :password, :obsolete => "Set 'ssl_keystore_password' instead."
|
|
141
|
+
config :verify_mode, :obsolete => "Set 'ssl_client_authentication' instead."
|
|
142
|
+
config :cipher_suites, :obsolete => "Set 'ssl_cipher_suites' instead."
|
|
143
|
+
config :tls_min_version, :obsolete => "Set 'ssl_supported_protocols' instead."
|
|
144
|
+
config :tls_max_version, :obsolete => "Set 'ssl_supported_protocols' instead."
|
|
145
|
+
config :ssl_verify_mode, :obsolete => "Set 'ssl_client_authentication' instead."
|
|
172
146
|
|
|
173
147
|
attr_reader :codecs
|
|
174
148
|
|
|
@@ -200,12 +174,8 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
200
174
|
public
|
|
201
175
|
def register
|
|
202
176
|
|
|
203
|
-
setup_ssl_params!
|
|
204
|
-
|
|
205
177
|
validate_ssl_settings!
|
|
206
178
|
|
|
207
|
-
validate_dump_size_system_property!
|
|
208
|
-
|
|
209
179
|
if @user && @password
|
|
210
180
|
token = Base64.strict_encode64("#{@user}:#{@password.value}")
|
|
211
181
|
@auth_token = "Basic #{token}"
|
|
@@ -299,12 +269,6 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
299
269
|
[http_host, nil]
|
|
300
270
|
end
|
|
301
271
|
end
|
|
302
|
-
|
|
303
|
-
def validate_dump_size_system_property!
|
|
304
|
-
java_import org.logstash.plugins.inputs.http.util.WireLogger
|
|
305
|
-
WireLogger.validate_dump_size_property
|
|
306
|
-
end
|
|
307
|
-
private :validate_dump_size_system_property!
|
|
308
272
|
|
|
309
273
|
def validate_ssl_settings!
|
|
310
274
|
ssl_config_name = original_params.include?('ssl') ? 'ssl' : 'ssl_enabled'
|
|
@@ -350,34 +314,6 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
350
314
|
end
|
|
351
315
|
|
|
352
316
|
def setup_ssl_params!
|
|
353
|
-
@ssl_enabled = normalize_config(:ssl_enabled) do |normalizer|
|
|
354
|
-
normalizer.with_deprecated_alias(:ssl)
|
|
355
|
-
end
|
|
356
|
-
|
|
357
|
-
@ssl_cipher_suites = normalize_config(:ssl_cipher_suites) do |normalizer|
|
|
358
|
-
normalizer.with_deprecated_alias(:cipher_suites)
|
|
359
|
-
end
|
|
360
|
-
|
|
361
|
-
@ssl_supported_protocols = normalize_config(:ssl_supported_protocols) do |normalizer|
|
|
362
|
-
normalizer.with_deprecated_mapping(:tls_min_version, :tls_max_version) do |tls_min_version, tls_max_version|
|
|
363
|
-
TLS.get_supported(tls_min_version..tls_max_version).map(&:name)
|
|
364
|
-
end
|
|
365
|
-
end
|
|
366
|
-
|
|
367
|
-
@ssl_client_authentication = normalize_config(:ssl_client_authentication) do |normalizer|
|
|
368
|
-
normalizer.with_deprecated_mapping(:verify_mode, :ssl_verify_mode) do |verify_mode, ssl_verify_mode|
|
|
369
|
-
normalize_ssl_client_authentication_value!(verify_mode, ssl_verify_mode)
|
|
370
|
-
end
|
|
371
|
-
end
|
|
372
|
-
|
|
373
|
-
@ssl_keystore_path = normalize_config(:ssl_keystore_path) do |normalizer|
|
|
374
|
-
normalizer.with_deprecated_alias(:keystore)
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
@ssl_keystore_password = normalize_config(:ssl_keystore_password) do |normalizer|
|
|
378
|
-
normalizer.with_deprecated_alias(:keystore_password)
|
|
379
|
-
end
|
|
380
|
-
|
|
381
317
|
params['ssl_enabled'] = @ssl_enabled unless @ssl_enabled.nil?
|
|
382
318
|
params['ssl_cipher_suites'] = @ssl_cipher_suites unless @ssl_cipher_suites.nil?
|
|
383
319
|
params['ssl_supported_protocols'] = @ssl_supported_protocols unless @ssl_supported_protocols.nil?
|
|
@@ -386,21 +322,9 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
386
322
|
params['ssl_keystore_password'] = @ssl_keystore_password unless @ssl_keystore_password.nil?
|
|
387
323
|
end
|
|
388
324
|
|
|
389
|
-
def normalize_ssl_client_authentication_value!(verify_mode, ssl_verify_mode)
|
|
390
|
-
verify_mode_explicitly_set = original_params.key?("verify_mode")
|
|
391
|
-
|
|
392
|
-
if verify_mode_explicitly_set && original_params.key?("ssl_verify_mode")
|
|
393
|
-
raise LogStash::ConfigurationError, "Both (deprecated) `ssl_verify_mode` and `verify_mode` were set. Use only `ssl_verify_mode`"
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
deprecated_value = (verify_mode_explicitly_set ? verify_mode : ssl_verify_mode).downcase
|
|
397
|
-
SSL_VERIFY_MODE_TO_CLIENT_AUTHENTICATION_MAP[deprecated_value]
|
|
398
|
-
end
|
|
399
|
-
|
|
400
325
|
def create_http_server(message_handler)
|
|
401
326
|
org.logstash.plugins.inputs.http.NettyHttpServer.new(
|
|
402
|
-
@
|
|
403
|
-
@max_pending_requests, @max_content_length, @response_code)
|
|
327
|
+
@host, @port, message_handler, build_ssl_params, @threads, @max_pending_requests, @max_content_length, @response_code)
|
|
404
328
|
end
|
|
405
329
|
|
|
406
330
|
def build_ssl_params
|
|
@@ -476,13 +400,7 @@ class LogStash::Inputs::Http < LogStash::Inputs::Base
|
|
|
476
400
|
end
|
|
477
401
|
|
|
478
402
|
def provided_ssl_client_authentication_config(values = [@ssl_client_authentication])
|
|
479
|
-
if original_params.include?('ssl_verify_mode')
|
|
480
|
-
['ssl_verify_mode', *values.map { |v| SSL_VERIFY_MODE_TO_CLIENT_AUTHENTICATION_MAP.key(v) }]
|
|
481
|
-
elsif original_params.include?('verify_mode')
|
|
482
|
-
['verify_mode', *values.map { |v| SSL_VERIFY_MODE_TO_CLIENT_AUTHENTICATION_MAP.key(v) }]
|
|
483
|
-
else
|
|
484
403
|
['ssl_client_authentication', *values]
|
|
485
|
-
end
|
|
486
404
|
end
|
|
487
405
|
|
|
488
406
|
private
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
# AUTOGENERATED BY THE GRADLE SCRIPT. DO NOT EDIT.
|
|
2
2
|
|
|
3
3
|
require 'jar_dependencies'
|
|
4
|
-
require_jar('io.netty', 'netty-
|
|
5
|
-
require_jar('io.netty', 'netty-
|
|
6
|
-
require_jar('io.netty', 'netty-codec', '4.1.
|
|
7
|
-
require_jar('io.netty', 'netty-
|
|
8
|
-
require_jar('io.netty', 'netty-transport', '4.1.
|
|
9
|
-
require_jar('io.netty', 'netty-
|
|
10
|
-
require_jar('io.netty', 'netty-
|
|
11
|
-
require_jar('
|
|
12
|
-
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '3.11.1')
|
|
4
|
+
require_jar('io.netty', 'netty-buffer', '4.1.115.Final')
|
|
5
|
+
require_jar('io.netty', 'netty-codec', '4.1.115.Final')
|
|
6
|
+
require_jar('io.netty', 'netty-codec-http', '4.1.115.Final')
|
|
7
|
+
require_jar('io.netty', 'netty-common', '4.1.115.Final')
|
|
8
|
+
require_jar('io.netty', 'netty-transport', '4.1.115.Final')
|
|
9
|
+
require_jar('io.netty', 'netty-handler', '4.1.115.Final')
|
|
10
|
+
require_jar('io.netty', 'netty-transport-native-unix-common', '4.1.115.Final')
|
|
11
|
+
require_jar('org.logstash.plugins.input.http', 'logstash-input-http', '4.0.0')
|
data/spec/inputs/helpers.rb
CHANGED
data/spec/inputs/http_spec.rb
CHANGED
|
@@ -11,17 +11,6 @@ require 'inputs/helpers'
|
|
|
11
11
|
|
|
12
12
|
java_import "io.netty.handler.ssl.util.SelfSignedCertificate"
|
|
13
13
|
|
|
14
|
-
shared_examples "decodes message with charset" do |charset|
|
|
15
|
-
let(:headers) { { "content-type" => "application/json; charset=#{charset}" } }
|
|
16
|
-
let(:body) { '{"msg":"A Coruña"}'.encode(charset) }
|
|
17
|
-
|
|
18
|
-
it "should decode the message accordingly" do
|
|
19
|
-
client.post("http://127.0.0.1:#{port}/meh.json", :headers => headers, :body => body).call
|
|
20
|
-
event = logstash_queue.pop
|
|
21
|
-
expect(event.get("msg")).to eq("A Coruña")
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
14
|
describe LogStash::Inputs::Http do
|
|
26
15
|
|
|
27
16
|
before do
|
|
@@ -55,61 +44,20 @@ describe LogStash::Inputs::Http do
|
|
|
55
44
|
end
|
|
56
45
|
|
|
57
46
|
describe "handling overflowing requests with a 429" do
|
|
58
|
-
let(:logstash_queue_size) { 1 }
|
|
59
|
-
let(:max_pending_requests) { 1 }
|
|
60
|
-
let(:threads) { 1 }
|
|
61
|
-
let(:logstash_queue) { SizedQueue.new(logstash_queue_size) }
|
|
62
|
-
let(:client_options) { {
|
|
63
|
-
request_timeout: 5,
|
|
64
|
-
connect_timeout: 3,
|
|
65
|
-
socket_timeout: 0.5
|
|
66
|
-
} }
|
|
67
|
-
|
|
68
|
-
let(:config) { { "port" => port, "threads" => threads, "max_pending_requests" => max_pending_requests } }
|
|
69
|
-
|
|
70
|
-
context "when sending more requests than queue slots" do
|
|
71
|
-
it "rejects additional incoming requests with HTTP 429" do
|
|
72
|
-
# fill the pipeline queue so the next push blocks the server worker
|
|
73
|
-
logstash_queue_size.times do
|
|
74
|
-
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
75
|
-
expect(response.code).to eq(200)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# a blocked request holds its slot even after the client times out, so sending
|
|
79
|
-
# sequentially fills every worker and backlog slot before the next 429
|
|
80
|
-
blocked = 0
|
|
81
|
-
response = nil
|
|
82
|
-
deadline = Time.now + 30
|
|
83
|
-
until response && response.code == 429
|
|
84
|
-
raise "server never returned 429 (blocked=#{blocked})" if Time.now > deadline
|
|
85
|
-
begin
|
|
86
|
-
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
87
|
-
rescue Manticore::SocketTimeout
|
|
88
|
-
blocked += 1
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
expect(response.code).to eq(429)
|
|
93
|
-
expect(blocked).to eq(threads + max_pending_requests)
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
describe "observing queue back-pressure" do
|
|
99
47
|
let(:logstash_queue_size) { rand(10) + 1 }
|
|
100
48
|
let(:max_pending_requests) { rand(5) + 1 }
|
|
101
49
|
let(:threads) { rand(4) + 1 }
|
|
102
50
|
let(:logstash_queue) { SizedQueue.new(logstash_queue_size) }
|
|
103
51
|
let(:client_options) { {
|
|
104
|
-
request_timeout
|
|
105
|
-
connect_timeout
|
|
106
|
-
socket_timeout
|
|
52
|
+
"request_timeout" => 0.1,
|
|
53
|
+
"connect_timeout" => 3,
|
|
54
|
+
"socket_timeout" => 0.1
|
|
107
55
|
} }
|
|
108
56
|
|
|
109
57
|
let(:config) { { "port" => port, "threads" => threads, "max_pending_requests" => max_pending_requests } }
|
|
110
58
|
|
|
111
|
-
context "when sending
|
|
112
|
-
it "
|
|
59
|
+
context "when sending more requests than queue slots" do
|
|
60
|
+
it "should block when the queue is full" do
|
|
113
61
|
# these will queue and return 200
|
|
114
62
|
logstash_queue_size.times.each do |i|
|
|
115
63
|
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
@@ -117,28 +65,15 @@ describe LogStash::Inputs::Http do
|
|
|
117
65
|
end
|
|
118
66
|
|
|
119
67
|
# these will block
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
sleep 12 # let that requests go, and ensure it is blocking long enough to be problematic
|
|
68
|
+
(threads + max_pending_requests).times.each do |i|
|
|
69
|
+
expect {
|
|
70
|
+
client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
71
|
+
}.to raise_error(Manticore::SocketTimeout)
|
|
72
|
+
end
|
|
129
73
|
|
|
130
|
-
# by now we should be rejecting with 429
|
|
131
|
-
# for more than 10s.
|
|
74
|
+
# by now we should be rejecting with 429
|
|
132
75
|
response = client.post("http://127.0.0.1:#{port}", :body => '{}').call
|
|
133
76
|
expect(response.code).to eq(429)
|
|
134
|
-
|
|
135
|
-
# ensure that our blocked connections did block
|
|
136
|
-
aggregate_failures do
|
|
137
|
-
blocked_call.value.tap do |blocked|
|
|
138
|
-
expect(blocked[:result]).to be_nil
|
|
139
|
-
expect(blocked[:exception]).to be_a_kind_of Manticore::SocketTimeout
|
|
140
|
-
end
|
|
141
|
-
end
|
|
142
77
|
end
|
|
143
78
|
end
|
|
144
79
|
end
|
|
@@ -212,16 +147,6 @@ describe LogStash::Inputs::Http do
|
|
|
212
147
|
expect(event.get("message_body")).to eq("Hello")
|
|
213
148
|
end
|
|
214
149
|
end
|
|
215
|
-
|
|
216
|
-
context "when receiving a request with content-type specifying charset" do
|
|
217
|
-
context "ISO-8859-1" do
|
|
218
|
-
it_behaves_like "decodes message with charset", "ISO-8859-1"
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
context "UTF-8" do
|
|
222
|
-
it_behaves_like "decodes message with charset", "utf-8"
|
|
223
|
-
end
|
|
224
|
-
end
|
|
225
150
|
end
|
|
226
151
|
|
|
227
152
|
context "with json codec" do
|
|
@@ -301,22 +226,7 @@ describe LogStash::Inputs::Http do
|
|
|
301
226
|
event = logstash_queue.pop
|
|
302
227
|
expect(event.get("message")).to eq("Hello")
|
|
303
228
|
end
|
|
304
|
-
|
|
305
|
-
end
|
|
306
|
-
|
|
307
|
-
context 'enforced TLSv1.3 (deprecated options)' do
|
|
308
|
-
|
|
309
|
-
let(:config) { super().merge 'tls_min_version' => 1.3,
|
|
310
|
-
'cipher_suites' => [ 'TLS_AES_128_GCM_SHA256' ] }
|
|
311
|
-
|
|
312
|
-
it "should parse the json body" do
|
|
313
|
-
expect(response.code).to eq(200)
|
|
314
|
-
event = logstash_queue.pop
|
|
315
|
-
expect(event.get("message")).to eq("Hello")
|
|
316
|
-
end
|
|
317
|
-
|
|
318
229
|
end
|
|
319
|
-
|
|
320
230
|
end if TLS13_ENABLED_BY_DEFAULT
|
|
321
231
|
|
|
322
232
|
end
|
|
@@ -636,16 +546,6 @@ describe LogStash::Inputs::Http do
|
|
|
636
546
|
subject.run(nil)
|
|
637
547
|
end
|
|
638
548
|
end
|
|
639
|
-
|
|
640
|
-
context "and `ssl_` settings provided" do
|
|
641
|
-
let(:ssc) { SelfSignedCertificate.new }
|
|
642
|
-
let(:config) { { "port" => 0, "ssl_enabled" => false, "ssl_certificate" => ssc.certificate.path, "ssl_client_authentication" => "none", "cipher_suites" => ["TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"] } }
|
|
643
|
-
|
|
644
|
-
it "should warn about not using the configs" do
|
|
645
|
-
expect(subject.logger).to receive(:warn).with(/^Configured SSL settings are not used when `ssl_enabled` is set to `false`: \[("ssl_certificate"(,\s)?|"ssl_client_authentication"(,\s)?|"cipher_suites"(,\s)?)*\]$/)
|
|
646
|
-
subject.register
|
|
647
|
-
end
|
|
648
|
-
end
|
|
649
549
|
end
|
|
650
550
|
|
|
651
551
|
context "with :ssl_enabled => true" do
|
|
@@ -703,31 +603,7 @@ describe LogStash::Inputs::Http do
|
|
|
703
603
|
expect { subject.register }.to_not raise_exception
|
|
704
604
|
end
|
|
705
605
|
end
|
|
706
|
-
["ssl_verify_mode", "verify_mode"].each do |config_name|
|
|
707
|
-
["peer", "force_peer"].each do |verify_mode|
|
|
708
|
-
context "with deprecated #{config_name} = #{verify_mode}" do
|
|
709
|
-
subject { LogStash::Inputs::Http.new("port" => port,
|
|
710
|
-
"ssl_enabled" => true,
|
|
711
|
-
"ssl_certificate" => ssl_certificate.path,
|
|
712
|
-
"ssl_certificate_authorities" => ssl_certificate.path,
|
|
713
|
-
"ssl_key" => ssl_key.path,
|
|
714
|
-
config_name => verify_mode
|
|
715
|
-
) }
|
|
716
|
-
it "should not raise exception" do
|
|
717
|
-
expect { subject.register }.to_not raise_exception
|
|
718
|
-
end
|
|
719
|
-
end
|
|
720
|
-
end
|
|
721
|
-
end
|
|
722
|
-
["ssl_verify_mode", "verify_mode"].each do |config_name|
|
|
723
|
-
context "with deprecated #{config_name} = none" do
|
|
724
|
-
subject { LogStash::Inputs::Http.new(config.merge(config_name => "none")) }
|
|
725
606
|
|
|
726
|
-
it "should not raise exception" do
|
|
727
|
-
expect { subject.register }.to_not raise_exception
|
|
728
|
-
end
|
|
729
|
-
end
|
|
730
|
-
end
|
|
731
607
|
context "with invalid ssl certificate" do
|
|
732
608
|
before do
|
|
733
609
|
cert = File.readlines path = config["ssl_certificate"]
|
|
@@ -775,76 +651,6 @@ describe LogStash::Inputs::Http do
|
|
|
775
651
|
end
|
|
776
652
|
end
|
|
777
653
|
|
|
778
|
-
context "with both verify_mode and ssl_verify_mode options set" do
|
|
779
|
-
let(:config) do
|
|
780
|
-
super().merge('verify_mode' => 'none', 'ssl_verify_mode' => 'none')
|
|
781
|
-
end
|
|
782
|
-
|
|
783
|
-
it "should raise a configuration error" do
|
|
784
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_verify_mode`.?/i
|
|
785
|
-
end
|
|
786
|
-
end
|
|
787
|
-
|
|
788
|
-
context "with both ssl_client_authentication and ssl_verify_mode options set" do
|
|
789
|
-
let(:config) do
|
|
790
|
-
super().merge('ssl_client_authentication' => 'optional', 'ssl_verify_mode' => 'none')
|
|
791
|
-
end
|
|
792
|
-
|
|
793
|
-
it "should raise a configuration error" do
|
|
794
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_client_authentication.?/i
|
|
795
|
-
end
|
|
796
|
-
end
|
|
797
|
-
|
|
798
|
-
context "with both ssl_client_authentication and verify_mode options set" do
|
|
799
|
-
let(:config) do
|
|
800
|
-
super().merge('ssl_client_authentication' => 'optional', 'verify_mode' => 'none')
|
|
801
|
-
end
|
|
802
|
-
|
|
803
|
-
it "should raise a configuration error" do
|
|
804
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_client_authentication.?/i
|
|
805
|
-
end
|
|
806
|
-
end
|
|
807
|
-
|
|
808
|
-
context "with ssl_cipher_suites and cipher_suites set" do
|
|
809
|
-
let(:config) do
|
|
810
|
-
super().merge('ssl_cipher_suites' => ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'],
|
|
811
|
-
'cipher_suites' => ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384'])
|
|
812
|
-
end
|
|
813
|
-
|
|
814
|
-
it "should raise a configuration error" do
|
|
815
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_cipher_suites.?/i
|
|
816
|
-
end
|
|
817
|
-
end
|
|
818
|
-
|
|
819
|
-
context "with ssl_supported_protocols and tls_min_version set" do
|
|
820
|
-
let(:config) do
|
|
821
|
-
super().merge('ssl_supported_protocols' => ['TLSv1.2'], 'tls_min_version' => 1.0)
|
|
822
|
-
end
|
|
823
|
-
|
|
824
|
-
it "should raise a configuration error" do
|
|
825
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_supported_protocols.?/i
|
|
826
|
-
end
|
|
827
|
-
end
|
|
828
|
-
|
|
829
|
-
context "with ssl_supported_protocols and tls_max_version set" do
|
|
830
|
-
let(:config) do
|
|
831
|
-
super().merge('ssl_supported_protocols' => ['TLSv1.2'], 'tls_max_version' => 1.2)
|
|
832
|
-
end
|
|
833
|
-
|
|
834
|
-
it "should raise a configuration error" do
|
|
835
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_supported_protocols.?/i
|
|
836
|
-
end
|
|
837
|
-
end
|
|
838
|
-
|
|
839
|
-
context "with both ssl and ssl_enabled set" do
|
|
840
|
-
let(:config) do
|
|
841
|
-
super().merge('ssl' => true, 'ssl_enabled' => true )
|
|
842
|
-
end
|
|
843
|
-
|
|
844
|
-
it "should raise a configuration error" do
|
|
845
|
-
expect { subject.register }.to raise_error LogStash::ConfigurationError, /Use only .?ssl_enabled.?/i
|
|
846
|
-
end
|
|
847
|
-
end
|
|
848
654
|
|
|
849
655
|
context "and with :ssl_keystore_path" do
|
|
850
656
|
let(:config) do
|
|
@@ -857,41 +663,6 @@ describe LogStash::Inputs::Http do
|
|
|
857
663
|
end
|
|
858
664
|
|
|
859
665
|
context "with ssl_client_authentication" do
|
|
860
|
-
context "normalized from ssl_verify_mode 'none'" do
|
|
861
|
-
let(:config) { super().merge("ssl_verify_mode" => "none") }
|
|
862
|
-
|
|
863
|
-
it "should transform the value to 'none'" do
|
|
864
|
-
subject.register
|
|
865
|
-
expect(subject.params).to match hash_including("ssl_client_authentication" => "none")
|
|
866
|
-
expect(subject.instance_variable_get(:@ssl_client_authentication)).to eql("none")
|
|
867
|
-
end
|
|
868
|
-
|
|
869
|
-
context "and ssl_certificate_authorities is set" do
|
|
870
|
-
let(:config) { super().merge("ssl_certificate_authorities" => [certificate_path( 'root.crt')]) }
|
|
871
|
-
it "raise a configuration error" do
|
|
872
|
-
expect { subject.register }.to raise_error(LogStash::ConfigurationError, "The configuration of `ssl_certificate_authorities` requires setting `ssl_verify_mode` to `peer` or 'force_peer'")
|
|
873
|
-
end
|
|
874
|
-
end
|
|
875
|
-
end
|
|
876
|
-
|
|
877
|
-
[%w[peer optional], %w[force_peer required]].each do |ssl_verify_mode, ssl_client_authentication|
|
|
878
|
-
context "normalized from ssl_verify_mode '#{ssl_verify_mode}'" do
|
|
879
|
-
let(:config) { super().merge("ssl_verify_mode" => ssl_verify_mode, "ssl_certificate_authorities" => [certificate_path( 'root.crt')]) }
|
|
880
|
-
|
|
881
|
-
it "should transform the value to '#{ssl_client_authentication}'" do
|
|
882
|
-
subject.register
|
|
883
|
-
expect(subject.params).to match hash_including("ssl_client_authentication" => ssl_client_authentication)
|
|
884
|
-
expect(subject.instance_variable_get(:@ssl_client_authentication)).to eql(ssl_client_authentication)
|
|
885
|
-
end
|
|
886
|
-
|
|
887
|
-
context "with no ssl_certificate_authorities set " do
|
|
888
|
-
let(:config) { super().reject { |key| "ssl_certificate_authorities".eql?(key) } }
|
|
889
|
-
it "raise a configuration error" do
|
|
890
|
-
expect {subject.register}.to raise_error(LogStash::ConfigurationError, "Using `ssl_verify_mode` set to `peer` or `force_peer`, requires the configuration of `ssl_certificate_authorities` or `ssl_truststore_path`")
|
|
891
|
-
end
|
|
892
|
-
end
|
|
893
|
-
end
|
|
894
|
-
end
|
|
895
666
|
|
|
896
667
|
context "configured to 'none'" do
|
|
897
668
|
let(:config) { super().merge("ssl_client_authentication" => "none") }
|
|
@@ -1028,7 +799,26 @@ describe LogStash::Inputs::Http do
|
|
|
1028
799
|
end
|
|
1029
800
|
end
|
|
1030
801
|
end
|
|
802
|
+
end
|
|
1031
803
|
|
|
804
|
+
describe 'handling obsolete settings' do
|
|
805
|
+
[{:name => 'tls_min_version', :replacement => 'ssl_supported_protocols', :sample_value => 1.3},
|
|
806
|
+
{:name => 'tls_max_version', :replacement => 'ssl_supported_protocols', :sample_value => 1.3},
|
|
807
|
+
{:name => 'cipher_suites', :replacement => 'ssl_cipher_suites', :sample_value => ['TLS_AES_128_GCM_SHA256']},
|
|
808
|
+
{:name => 'ssl', :replacement => 'ssl_enabled', :sample_value => true},
|
|
809
|
+
{:name => 'keystore', :replacement => 'ssl_keystore_path', :sample_value => certificate_path( 'server_from_root.p12')},
|
|
810
|
+
{:name => 'keystore_password', :replacement => 'ssl_keystore_password', :sample_value => 'none'},
|
|
811
|
+
{:name => 'ssl_verify_mode', :replacement => 'ssl_client_authentication', :sample_value => 'peer'},
|
|
812
|
+
{:name => 'verify_mode', :replacement => 'ssl_client_authentication', :sample_value => 'peer'}].each do | obsolete_setting|
|
|
813
|
+
context "with obsolete #{obsolete_setting[:name]}" do
|
|
814
|
+
let (:deprecated_config) do
|
|
815
|
+
config.merge({obsolete_setting[:name] => obsolete_setting[:sample_value]})
|
|
816
|
+
end
|
|
817
|
+
it "should raise a config error with the appropriate message" do
|
|
818
|
+
expect { LogStash::Inputs::Http.new(deprecated_config).register }.to raise_error LogStash::ConfigurationError, /The setting `#{obsolete_setting[:name]}` in plugin `http` is obsolete and is no longer available. Set '#{obsolete_setting[:replacement]}' instead/i
|
|
819
|
+
end
|
|
820
|
+
end
|
|
821
|
+
end
|
|
1032
822
|
end
|
|
1033
823
|
end
|
|
1034
824
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/vendor/jar-dependencies/io/netty/netty-handler/4.1.115.Final/netty-handler-4.1.115.Final.jar
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-input-http
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: bin
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
11
|
+
date: 2024-12-18 00:00:00.000000000 Z
|
|
11
12
|
dependencies:
|
|
12
13
|
- !ruby/object:Gem::Dependency
|
|
13
|
-
name: logstash-core-plugin-api
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
@@ -19,6 +19,7 @@ dependencies:
|
|
|
19
19
|
- - "<="
|
|
20
20
|
- !ruby/object:Gem::Version
|
|
21
21
|
version: '2.99'
|
|
22
|
+
name: logstash-core-plugin-api
|
|
22
23
|
type: :runtime
|
|
23
24
|
prerelease: false
|
|
24
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -30,12 +31,12 @@ dependencies:
|
|
|
30
31
|
- !ruby/object:Gem::Version
|
|
31
32
|
version: '2.99'
|
|
32
33
|
- !ruby/object:Gem::Dependency
|
|
33
|
-
name: logstash-codec-plain
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
35
35
|
requirements:
|
|
36
36
|
- - ">="
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
38
|
version: '0'
|
|
39
|
+
name: logstash-codec-plain
|
|
39
40
|
type: :runtime
|
|
40
41
|
prerelease: false
|
|
41
42
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -44,12 +45,12 @@ dependencies:
|
|
|
44
45
|
- !ruby/object:Gem::Version
|
|
45
46
|
version: '0'
|
|
46
47
|
- !ruby/object:Gem::Dependency
|
|
47
|
-
name: logstash-mixin-ecs_compatibility_support
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
49
49
|
requirements:
|
|
50
50
|
- - "~>"
|
|
51
51
|
- !ruby/object:Gem::Version
|
|
52
52
|
version: '1.2'
|
|
53
|
+
name: logstash-mixin-ecs_compatibility_support
|
|
53
54
|
type: :runtime
|
|
54
55
|
prerelease: false
|
|
55
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -58,12 +59,12 @@ dependencies:
|
|
|
58
59
|
- !ruby/object:Gem::Version
|
|
59
60
|
version: '1.2'
|
|
60
61
|
- !ruby/object:Gem::Dependency
|
|
61
|
-
name: logstash-mixin-normalize_config_support
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
66
|
version: '1.0'
|
|
67
|
+
name: logstash-mixin-normalize_config_support
|
|
67
68
|
type: :runtime
|
|
68
69
|
prerelease: false
|
|
69
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -72,12 +73,12 @@ dependencies:
|
|
|
72
73
|
- !ruby/object:Gem::Version
|
|
73
74
|
version: '1.0'
|
|
74
75
|
- !ruby/object:Gem::Dependency
|
|
75
|
-
name: logstash-devutils
|
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
|
77
77
|
requirements:
|
|
78
78
|
- - ">="
|
|
79
79
|
- !ruby/object:Gem::Version
|
|
80
80
|
version: '0'
|
|
81
|
+
name: logstash-devutils
|
|
81
82
|
type: :development
|
|
82
83
|
prerelease: false
|
|
83
84
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -86,12 +87,12 @@ dependencies:
|
|
|
86
87
|
- !ruby/object:Gem::Version
|
|
87
88
|
version: '0'
|
|
88
89
|
- !ruby/object:Gem::Dependency
|
|
89
|
-
name: logstash-codec-json
|
|
90
90
|
requirement: !ruby/object:Gem::Requirement
|
|
91
91
|
requirements:
|
|
92
92
|
- - ">="
|
|
93
93
|
- !ruby/object:Gem::Version
|
|
94
94
|
version: '0'
|
|
95
|
+
name: logstash-codec-json
|
|
95
96
|
type: :development
|
|
96
97
|
prerelease: false
|
|
97
98
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -100,12 +101,12 @@ dependencies:
|
|
|
100
101
|
- !ruby/object:Gem::Version
|
|
101
102
|
version: '0'
|
|
102
103
|
- !ruby/object:Gem::Dependency
|
|
103
|
-
name: logstash-codec-json_lines
|
|
104
104
|
requirement: !ruby/object:Gem::Requirement
|
|
105
105
|
requirements:
|
|
106
106
|
- - ">="
|
|
107
107
|
- !ruby/object:Gem::Version
|
|
108
108
|
version: '0'
|
|
109
|
+
name: logstash-codec-json_lines
|
|
109
110
|
type: :development
|
|
110
111
|
prerelease: false
|
|
111
112
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -114,12 +115,12 @@ dependencies:
|
|
|
114
115
|
- !ruby/object:Gem::Version
|
|
115
116
|
version: '0'
|
|
116
117
|
- !ruby/object:Gem::Dependency
|
|
117
|
-
name: manticore
|
|
118
118
|
requirement: !ruby/object:Gem::Requirement
|
|
119
119
|
requirements:
|
|
120
120
|
- - ">="
|
|
121
121
|
- !ruby/object:Gem::Version
|
|
122
122
|
version: '0'
|
|
123
|
+
name: manticore
|
|
123
124
|
type: :development
|
|
124
125
|
prerelease: false
|
|
125
126
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -168,21 +169,21 @@ files:
|
|
|
168
169
|
- spec/fixtures/certs/openssl.cnf
|
|
169
170
|
- spec/inputs/helpers.rb
|
|
170
171
|
- spec/inputs/http_spec.rb
|
|
171
|
-
- vendor/jar-dependencies/io/netty/netty-buffer/4.1.
|
|
172
|
-
- vendor/jar-dependencies/io/netty/netty-codec-http/4.1.
|
|
173
|
-
- vendor/jar-dependencies/io/netty/netty-codec/4.1.
|
|
174
|
-
- vendor/jar-dependencies/io/netty/netty-common/4.1.
|
|
175
|
-
- vendor/jar-dependencies/io/netty/netty-handler/4.1.
|
|
176
|
-
- vendor/jar-dependencies/io/netty/netty-
|
|
177
|
-
- vendor/jar-dependencies/io/netty/netty-transport
|
|
178
|
-
- vendor/jar-dependencies/
|
|
179
|
-
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/3.11.1/logstash-input-http-3.11.1.jar
|
|
172
|
+
- vendor/jar-dependencies/io/netty/netty-buffer/4.1.115.Final/netty-buffer-4.1.115.Final.jar
|
|
173
|
+
- vendor/jar-dependencies/io/netty/netty-codec-http/4.1.115.Final/netty-codec-http-4.1.115.Final.jar
|
|
174
|
+
- vendor/jar-dependencies/io/netty/netty-codec/4.1.115.Final/netty-codec-4.1.115.Final.jar
|
|
175
|
+
- vendor/jar-dependencies/io/netty/netty-common/4.1.115.Final/netty-common-4.1.115.Final.jar
|
|
176
|
+
- vendor/jar-dependencies/io/netty/netty-handler/4.1.115.Final/netty-handler-4.1.115.Final.jar
|
|
177
|
+
- vendor/jar-dependencies/io/netty/netty-transport-native-unix-common/4.1.115.Final/netty-transport-native-unix-common-4.1.115.Final.jar
|
|
178
|
+
- vendor/jar-dependencies/io/netty/netty-transport/4.1.115.Final/netty-transport-4.1.115.Final.jar
|
|
179
|
+
- vendor/jar-dependencies/org/logstash/plugins/input/http/logstash-input-http/4.0.0/logstash-input-http-4.0.0.jar
|
|
180
180
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
|
181
181
|
licenses:
|
|
182
182
|
- Apache License (2.0)
|
|
183
183
|
metadata:
|
|
184
184
|
logstash_plugin: 'true'
|
|
185
185
|
logstash_group: input
|
|
186
|
+
post_install_message:
|
|
186
187
|
rdoc_options: []
|
|
187
188
|
require_paths:
|
|
188
189
|
- lib
|
|
@@ -198,7 +199,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
198
199
|
- !ruby/object:Gem::Version
|
|
199
200
|
version: '0'
|
|
200
201
|
requirements: []
|
|
201
|
-
rubygems_version: 3.
|
|
202
|
+
rubygems_version: 3.3.26
|
|
203
|
+
signing_key:
|
|
202
204
|
specification_version: 4
|
|
203
205
|
summary: Receives events over HTTP or HTTPS
|
|
204
206
|
test_files:
|
data/vendor/jar-dependencies/io/netty/netty-handler/4.1.137.Final/netty-handler-4.1.137.Final.jar
DELETED
|
Binary file
|