logstash-input-elasticsearch 4.8.1 → 4.9.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/CONTRIBUTORS +1 -0
- data/README.md +1 -1
- data/docs/index.asciidoc +34 -12
- data/lib/logstash/inputs/elasticsearch.rb +18 -8
- data/lib/logstash/inputs/{patch.rb → elasticsearch/patches/_elasticsearch_transport_connections_selector.rb} +9 -6
- data/lib/logstash/inputs/elasticsearch/patches/_elasticsearch_transport_http_manticore.rb +33 -0
- data/logstash-input-elasticsearch.gemspec +5 -6
- data/spec/es_helper.rb +17 -16
- data/spec/fixtures/test_certs/ca.crt +20 -0
- data/spec/fixtures/test_certs/ca.key +27 -0
- data/spec/fixtures/test_certs/es.crt +20 -0
- data/spec/fixtures/test_certs/es.key +27 -0
- data/spec/inputs/elasticsearch_spec.rb +99 -65
- data/spec/inputs/integration/elasticsearch_spec.rb +24 -12
- metadata +34 -34
- data/spec/fixtures/test_certs/ca/ca.crt +0 -32
- data/spec/fixtures/test_certs/ca/ca.key +0 -51
- data/spec/fixtures/test_certs/test.crt +0 -36
- data/spec/fixtures/test_certs/test.key +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc71917516d5297b151b09c3b26324272ee472fa8ae987fad6b30fa99492d382
|
4
|
+
data.tar.gz: cd72359f663375ad910dbf02a70d151160e449311bff81c0f77d062c7625c597
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea7bca9aa226958479061efab4172224039d10a93579ef482418ad6955c493c00a45b1372ce6bd61aaba07e6c89bc2e96d1236cfd4be2e326193b52805ca448f
|
7
|
+
data.tar.gz: 0f08585317a26f8a647be73e4e70b9a421025f1c81bcfa8518c1188cb60a0efea49f131a1e80645bd920c0806bb8c54542da07ab1cab44b540313a062b8b351d
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,24 @@
|
|
1
|
+
## 4.9.3
|
2
|
+
- Fixed SSL handshake hang indefinitely with proxy setup [#156](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/156)
|
3
|
+
|
4
|
+
## 4.9.2
|
5
|
+
- Fix: a regression (in LS 7.14.0) where due the elasticsearch client update (from 5.0.5 to 7.5.0) the `Authorization`
|
6
|
+
header isn't passed, this leads to the plugin not being able to leverage `user`/`password` credentials set by the user.
|
7
|
+
[#153](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/153)
|
8
|
+
|
9
|
+
## 4.9.1
|
10
|
+
- [DOC] Replaced hard-coded links with shared attributes [#143](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/143)
|
11
|
+
- [DOC] Added missing quote to docinfo_fields example [#145](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/145)
|
12
|
+
|
13
|
+
## 4.9.0
|
14
|
+
- Added `target` option, allowing the hit's source to target a specific field instead of being expanded at the root of the event. This allows the input to play nicer with the Elastic Common Schema when the input does not follow the schema. [#117](https://github.com/logstash-plugins/logstash-input-elasticsearch/issues/117)
|
15
|
+
|
16
|
+
## 4.8.3
|
17
|
+
- [DOC] Fixed links to restructured Logstash-to-cloud docs [#139](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/139)
|
18
|
+
|
19
|
+
## 4.8.2
|
20
|
+
- [DOC] Document the permissions required in secured clusters [#137](https://github.com/logstash-plugins/logstash-input-elasticsearch/pull/137)
|
21
|
+
|
1
22
|
## 4.8.1
|
2
23
|
- Fixed connection error when using multiple `slices`. [#133](https://github.com/logstash-plugins/logstash-input-elasticsearch/issues/133)
|
3
24
|
|
data/CONTRIBUTORS
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# Logstash Plugin
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/logstash-input-elasticsearch.svg)](https://badge.fury.io/rb/logstash-input-elasticsearch)
|
4
|
-
[![Travis Build Status](https://travis-ci.
|
4
|
+
[![Travis Build Status](https://travis-ci.com/logstash-plugins/logstash-input-elasticsearch.svg)](https://travis-ci.com/logstash-plugins/logstash-input-elasticsearch)
|
5
5
|
|
6
6
|
This is a plugin for [Logstash](https://github.com/elastic/logstash).
|
7
7
|
|
data/docs/index.asciidoc
CHANGED
@@ -77,6 +77,11 @@ Authentication to a secure Elasticsearch cluster is possible using _one_ of the
|
|
77
77
|
* <<plugins-{type}s-{plugin}-cloud_auth>>
|
78
78
|
* <<plugins-{type}s-{plugin}-api_key>>
|
79
79
|
|
80
|
+
[id="plugins-{type}s-{plugin}-autz"]
|
81
|
+
==== Authorization
|
82
|
+
|
83
|
+
Authorization to a secure Elasticsearch cluster requires `read` permission at index level and `monitoring` permissions at cluster level.
|
84
|
+
The `monitoring` permission at cluster level is necessary to perform periodic connectivity checks.
|
80
85
|
|
81
86
|
[id="plugins-{type}s-{plugin}-options"]
|
82
87
|
==== Elasticsearch Input Configuration Options
|
@@ -106,6 +111,7 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
106
111
|
| <<plugins-{type}s-{plugin}-slices>> |<<number,number>>|No
|
107
112
|
| <<plugins-{type}s-{plugin}-ssl>> |<<boolean,boolean>>|No
|
108
113
|
| <<plugins-{type}s-{plugin}-socket_timeout_seconds>> | <<number,number>>|No
|
114
|
+
| <<plugins-{type}s-{plugin}-target>> | {logstash-ref}/field-references-deepdive.html[field reference] | No
|
109
115
|
| <<plugins-{type}s-{plugin}-user>> |<<string,string>>|No
|
110
116
|
|=======================================================================
|
111
117
|
|
@@ -122,7 +128,10 @@ input plugins.
|
|
122
128
|
|
123
129
|
Authenticate using Elasticsearch API key. Note that this option also requires enabling the `ssl` option.
|
124
130
|
|
125
|
-
Format is `id:api_key` where `id` and `api_key` are as returned by the
|
131
|
+
Format is `id:api_key` where `id` and `api_key` are as returned by the
|
132
|
+
Elasticsearch
|
133
|
+
{ref}/security-api-create-api-key.html[Create
|
134
|
+
API key API].
|
126
135
|
|
127
136
|
[id="plugins-{type}s-{plugin}-ca_file"]
|
128
137
|
===== `ca_file`
|
@@ -140,7 +149,8 @@ SSL Certificate Authority file in PEM encoded format, must also include any chai
|
|
140
149
|
|
141
150
|
Cloud authentication string ("<username>:<password>" format) is an alternative for the `user`/`password` pair.
|
142
151
|
|
143
|
-
For more info, check out the
|
152
|
+
For more info, check out the
|
153
|
+
{logstash-ref}/connecting-to-cloud.html[Logstash-to-Cloud documentation].
|
144
154
|
|
145
155
|
[id="plugins-{type}s-{plugin}-cloud_id"]
|
146
156
|
===== `cloud_id`
|
@@ -150,7 +160,8 @@ For more info, check out the https://www.elastic.co/guide/en/logstash/current/co
|
|
150
160
|
|
151
161
|
Cloud ID, from the Elastic Cloud web console. If set `hosts` should not be used.
|
152
162
|
|
153
|
-
For more info, check out the
|
163
|
+
For more info, check out the
|
164
|
+
{logstash-ref}/connecting-to-cloud.html[Logstash-to-Cloud documentation].
|
154
165
|
|
155
166
|
[id="plugins-{type}s-{plugin}-connect_timeout_seconds"]
|
156
167
|
===== `connect_timeout_seconds`
|
@@ -204,7 +215,7 @@ Example
|
|
204
215
|
elasticsearch {
|
205
216
|
docinfo => true
|
206
217
|
add_field => {
|
207
|
-
identifier => %{[@metadata][_index]}:%{[@metadata][_type]}:%{[@metadata][_id]}"
|
218
|
+
identifier => "%{[@metadata][_index]}:%{[@metadata][_type]}:%{[@metadata][_id]}"
|
208
219
|
}
|
209
220
|
}
|
210
221
|
}
|
@@ -247,10 +258,9 @@ can be either IP, HOST, IP:port, or HOST:port. The port defaults to
|
|
247
258
|
* Value type is <<string,string>>
|
248
259
|
* Default value is `"logstash-*"`
|
249
260
|
|
250
|
-
The index or alias to search. See
|
251
|
-
|
252
|
-
|
253
|
-
multiple indices.
|
261
|
+
The index or alias to search. See {ref}/multi-index.html[Multi Indices
|
262
|
+
documentation] in the Elasticsearch documentation for more information on how to
|
263
|
+
reference multiple indices.
|
254
264
|
|
255
265
|
|
256
266
|
[id="plugins-{type}s-{plugin}-password"]
|
@@ -279,9 +289,8 @@ environment variables e.g. `proxy => '${LS_PROXY:}'`.
|
|
279
289
|
* Value type is <<string,string>>
|
280
290
|
* Default value is `'{ "sort": [ "_doc" ] }'`
|
281
291
|
|
282
|
-
The query to be executed. Read the
|
283
|
-
|
284
|
-
for more information.
|
292
|
+
The query to be executed. Read the {ref}/query-dsl.html[Elasticsearch query DSL
|
293
|
+
documentation] for more information.
|
285
294
|
|
286
295
|
[id="plugins-{type}s-{plugin}-request_timeout_seconds"]
|
287
296
|
===== `request_timeout_seconds`
|
@@ -332,7 +341,7 @@ This allows you to set the maximum number of hits returned per scroll.
|
|
332
341
|
|
333
342
|
In some cases, it is possible to improve overall throughput by consuming multiple
|
334
343
|
distinct slices of a query simultaneously using
|
335
|
-
|
344
|
+
{ref}/paginate-search-results.html#slice-scroll[sliced scrolls],
|
336
345
|
especially if the pipeline is spending significant time waiting on Elasticsearch
|
337
346
|
to provide results.
|
338
347
|
|
@@ -365,6 +374,19 @@ server (i.e. HTTPS will be used instead of plain HTTP).
|
|
365
374
|
The maximum amount of time, in seconds, to wait on an incomplete response from Elasticsearch while no additional data has been appended.
|
366
375
|
Socket timeouts usually occur while waiting for the first byte of a response, such as when executing a particularly complex query.
|
367
376
|
|
377
|
+
|
378
|
+
[id="plugins-{type}s-{plugin}-target"]
|
379
|
+
===== `target`
|
380
|
+
|
381
|
+
* Value type is {logstash-ref}/field-references-deepdive.html[field reference]
|
382
|
+
* There is no default value for this setting.
|
383
|
+
|
384
|
+
Without a `target`, events are created from each hit's `_source` at the root level.
|
385
|
+
When the `target` is set to a field reference, the `_source` of the hit is placed in the target field instead.
|
386
|
+
|
387
|
+
This option can be useful to avoid populating unknown fields when a downstream schema such as ECS is enforced.
|
388
|
+
It is also possible to target an entry in the event's metadata, which will be available during event processing but not exported to your outputs (e.g., `target \=> "[@metadata][_source]"`).
|
389
|
+
|
368
390
|
[id="plugins-{type}s-{plugin}-user"]
|
369
391
|
===== `user`
|
370
392
|
|
@@ -3,9 +3,13 @@ require "logstash/inputs/base"
|
|
3
3
|
require "logstash/namespace"
|
4
4
|
require "logstash/json"
|
5
5
|
require "logstash/util/safe_uri"
|
6
|
+
require 'logstash/plugin_mixins/validator_support/field_reference_validation_adapter'
|
6
7
|
require "base64"
|
7
|
-
require_relative "patch"
|
8
8
|
|
9
|
+
require "elasticsearch"
|
10
|
+
require "elasticsearch/transport/transport/http/manticore"
|
11
|
+
require_relative "elasticsearch/patches/_elasticsearch_transport_http_manticore"
|
12
|
+
require_relative "elasticsearch/patches/_elasticsearch_transport_connections_selector"
|
9
13
|
|
10
14
|
# .Compatibility Note
|
11
15
|
# [NOTE]
|
@@ -62,6 +66,8 @@ require_relative "patch"
|
|
62
66
|
#
|
63
67
|
#
|
64
68
|
class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
69
|
+
extend LogStash::PluginMixins::ValidatorSupport::FieldReferenceValidationAdapter
|
70
|
+
|
65
71
|
config_name "elasticsearch"
|
66
72
|
|
67
73
|
default :codec, "json"
|
@@ -175,10 +181,11 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
175
181
|
# exactly once.
|
176
182
|
config :schedule, :validate => :string
|
177
183
|
|
184
|
+
# If set, the _source of each hit will be added nested under the target instead of at the top-level
|
185
|
+
config :target, :validate => :field_reference
|
186
|
+
|
178
187
|
def register
|
179
|
-
require "elasticsearch"
|
180
188
|
require "rufus/scheduler"
|
181
|
-
require "elasticsearch/transport/transport/http/manticore"
|
182
189
|
|
183
190
|
@options = {
|
184
191
|
:index => @index,
|
@@ -219,7 +226,6 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
219
226
|
end
|
220
227
|
|
221
228
|
|
222
|
-
|
223
229
|
def run(output_queue)
|
224
230
|
if @schedule
|
225
231
|
@scheduler = Rufus::Scheduler.new(:max_work_threads => 1)
|
@@ -261,7 +267,6 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
261
267
|
|
262
268
|
logger.info("Slice starting", slice_id: slice_id, slices: @slices) unless slice_id.nil?
|
263
269
|
|
264
|
-
scroll_id = nil
|
265
270
|
begin
|
266
271
|
r = search_request(slice_options)
|
267
272
|
|
@@ -298,7 +303,12 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
298
303
|
end
|
299
304
|
|
300
305
|
def push_hit(hit, output_queue)
|
301
|
-
|
306
|
+
if @target.nil?
|
307
|
+
event = LogStash::Event.new(hit['_source'])
|
308
|
+
else
|
309
|
+
event = LogStash::Event.new
|
310
|
+
event.set(@target, hit['_source'])
|
311
|
+
end
|
302
312
|
|
303
313
|
if @docinfo
|
304
314
|
# do not assume event[@docinfo_target] to be in-place updatable. first get it, update it, then at the end set it in the event.
|
@@ -377,14 +387,14 @@ class LogStash::Inputs::Elasticsearch < LogStash::Inputs::Base
|
|
377
387
|
return {} unless user && password && password.value
|
378
388
|
|
379
389
|
token = ::Base64.strict_encode64("#{user}:#{password.value}")
|
380
|
-
{ Authorization
|
390
|
+
{ 'Authorization' => "Basic #{token}" }
|
381
391
|
end
|
382
392
|
|
383
393
|
def setup_api_key(api_key)
|
384
394
|
return {} unless (api_key && api_key.value)
|
385
395
|
|
386
396
|
token = ::Base64.strict_encode64(api_key.value)
|
387
|
-
{ Authorization
|
397
|
+
{ 'Authorization' => "ApiKey #{token}" }
|
388
398
|
end
|
389
399
|
|
390
400
|
def fill_user_password_from_cloud_auth
|
@@ -1,10 +1,13 @@
|
|
1
|
-
|
1
|
+
require 'elasticsearch'
|
2
|
+
require 'elasticsearch/transport/transport/connections/selector'
|
3
|
+
|
4
|
+
if Gem.loaded_specs['elasticsearch-transport'].version < Gem::Version.new("7.2.0")
|
2
5
|
# elasticsearch-transport versions prior to 7.2.0 suffered of a race condition on accessing
|
3
|
-
# the connection pool. This issue was fixed
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
6
|
+
# the connection pool. This issue was fixed (in 7.2.0) with
|
7
|
+
# https://github.com/elastic/elasticsearch-ruby/commit/15f9d78591a6e8823948494d94b15b0ca38819d1
|
8
|
+
#
|
9
|
+
# This plugin, at the moment, is using elasticsearch >= 5.0.5
|
10
|
+
# When this requirement ceases, this patch could be removed.
|
8
11
|
module Elasticsearch
|
9
12
|
module Transport
|
10
13
|
module Transport
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "elasticsearch"
|
3
|
+
require "elasticsearch/transport/transport/http/manticore"
|
4
|
+
|
5
|
+
es_client_version = Gem.loaded_specs['elasticsearch-transport'].version
|
6
|
+
if es_client_version >= Gem::Version.new('7.2') && es_client_version < Gem::Version.new('7.16')
|
7
|
+
# elasticsearch-transport 7.2.0 - 7.14.0 had a bug where setting http headers
|
8
|
+
# ES::Client.new ..., transport_options: { headers: { 'Authorization' => ... } }
|
9
|
+
# would be lost https://github.com/elastic/elasticsearch-ruby/issues/1428
|
10
|
+
#
|
11
|
+
# NOTE: needs to be idempotent as filter ES plugin might apply the same patch!
|
12
|
+
#
|
13
|
+
# @private
|
14
|
+
module Elasticsearch
|
15
|
+
module Transport
|
16
|
+
module Transport
|
17
|
+
module HTTP
|
18
|
+
class Manticore
|
19
|
+
|
20
|
+
def apply_headers(request_options, options)
|
21
|
+
headers = (options && options[:headers]) || {}
|
22
|
+
headers[CONTENT_TYPE_STR] = find_value(headers, CONTENT_TYPE_REGEX) || DEFAULT_CONTENT_TYPE
|
23
|
+
headers[USER_AGENT_STR] = find_value(headers, USER_AGENT_REGEX) || user_agent_header
|
24
|
+
headers[ACCEPT_ENCODING] = GZIP if use_compression?
|
25
|
+
(request_options[:headers] ||= {}).merge!(headers) # this line was changed
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
|
3
3
|
s.name = 'logstash-input-elasticsearch'
|
4
|
-
s.version = '4.
|
4
|
+
s.version = '4.9.3'
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
6
6
|
s.summary = "Reads query results from an Elasticsearch cluster"
|
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"
|
@@ -20,19 +20,18 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "input" }
|
21
21
|
|
22
22
|
# Gem dependencies
|
23
|
+
s.add_runtime_dependency "logstash-mixin-validator_support", '~> 1.0'
|
23
24
|
s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
|
24
25
|
|
25
|
-
s.add_runtime_dependency 'elasticsearch', '>= 5.0.
|
26
|
+
s.add_runtime_dependency 'elasticsearch', '>= 5.0.5' # LS >= 6.7 and < 7.14 all used version 5.0.5
|
26
27
|
|
27
28
|
s.add_runtime_dependency 'logstash-codec-json'
|
28
|
-
s.add_runtime_dependency 'logstash-codec-plain'
|
29
29
|
s.add_runtime_dependency 'sequel'
|
30
30
|
s.add_runtime_dependency 'tzinfo'
|
31
31
|
s.add_runtime_dependency 'tzinfo-data'
|
32
32
|
s.add_runtime_dependency 'rufus-scheduler'
|
33
|
-
s.add_runtime_dependency 'manticore', "
|
34
|
-
s.
|
35
|
-
|
33
|
+
s.add_runtime_dependency 'manticore', ">= 0.7.1"
|
34
|
+
s.add_development_dependency 'faraday', "~> 0.15.4"
|
36
35
|
s.add_development_dependency 'logstash-devutils'
|
37
36
|
s.add_development_dependency 'timecop'
|
38
37
|
end
|
data/spec/es_helper.rb
CHANGED
@@ -1,30 +1,31 @@
|
|
1
1
|
module ESHelper
|
2
2
|
def self.get_host_port
|
3
|
-
|
4
|
-
|
3
|
+
if ENV["INTEGRATION"] == "true" || ENV["SECURE_INTEGRATION"] == "true"
|
4
|
+
"elasticsearch:9200"
|
5
|
+
else
|
6
|
+
"localhost:9200" # for local running integration specs outside docker
|
7
|
+
end
|
5
8
|
end
|
6
9
|
|
7
|
-
def self.get_client(options
|
8
|
-
|
9
|
-
|
10
|
+
def self.get_client(options)
|
11
|
+
require 'elasticsearch/transport/transport/http/faraday' # supports user/password options
|
12
|
+
host, port = get_host_port.split(':')
|
13
|
+
host_opts = { host: host, port: port, scheme: 'http' }
|
14
|
+
ssl_opts = {}
|
10
15
|
|
11
16
|
if options[:ca_file]
|
12
|
-
|
13
|
-
|
14
|
-
host, port = h.split(":")
|
15
|
-
{ :host => host, :scheme => 'https', :port => port }
|
16
|
-
end
|
17
|
+
ssl_opts = { ca_file: options[:ca_file], version: 'TLSv1.2', verify: false }
|
18
|
+
host_opts[:scheme] = 'https'
|
17
19
|
end
|
18
20
|
|
19
|
-
transport_options = {}
|
20
|
-
|
21
21
|
if options[:user] && options[:password]
|
22
|
-
|
23
|
-
|
22
|
+
host_opts[:user] = options[:user]
|
23
|
+
host_opts[:password] = options[:password]
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
26
|
+
Elasticsearch::Client.new(hosts: [host_opts],
|
27
|
+
transport_options: { ssl: ssl_opts },
|
28
|
+
transport_class: Elasticsearch::Transport::Transport::HTTP::Faraday)
|
28
29
|
end
|
29
30
|
|
30
31
|
def self.doc_type
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDSTCCAjGgAwIBAgIUUcAg9c8B8jiliCkOEJyqoAHrmccwDQYJKoZIhvcNAQEL
|
3
|
+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
4
|
+
cmF0ZWQgQ0EwHhcNMjEwODEyMDUxNDU1WhcNMjQwODExMDUxNDU1WjA0MTIwMAYD
|
5
|
+
VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
|
6
|
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK1HuusRuGNsztd4EQvqwcMr
|
7
|
+
8XvnNNaalerpMOorCGySEFrNf0HxDIVMGMCrOv1F8SvlcGq3XANs2MJ4F2xhhLZr
|
8
|
+
PpqVHx+QnSZ66lu5R89QVSuMh/dCMxhNBlOA/dDlvy+EJBl9H791UGy/ChhSgaBd
|
9
|
+
OKVyGkhjErRTeMIq7rR7UG6GL/fV+JGy41UiLrm1KQP7/XVD9UzZfGq/hylFkTPe
|
10
|
+
oox5BUxdxUdDZ2creOID+agtIYuJVIkelKPQ+ljBY3kWBRexqJQsvyNUs1gZpjpz
|
11
|
+
YUCzuVcXDRuJXYQXGqWXhsBPfJv+ZcSyMIBUfWT/G13cWU1iwufPy0NjajowPZsC
|
12
|
+
AwEAAaNTMFEwHQYDVR0OBBYEFMgkye5+2l+TE0I6RsXRHjGBwpBGMB8GA1UdIwQY
|
13
|
+
MBaAFMgkye5+2l+TE0I6RsXRHjGBwpBGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
|
14
|
+
hvcNAQELBQADggEBAIgtJW8sy5lBpzPRHkmWSS/SCZIPsABW+cHqQ3e0udrI3CLB
|
15
|
+
G9n7yqAPWOBTbdqC2GM8dvAS/Twx4Bub/lWr84dFCu+t0mQq4l5kpJMVRS0KKXPL
|
16
|
+
DwJbUN3oPNYy4uPn5Xi+XY3BYFce5vwJUsqIxeAbIOxVTNx++k5DFnB0ESAM23QL
|
17
|
+
sgUZl7xl3/DkdO4oHj30gmTRW9bjCJ6umnHIiO3JoJatrprurUIt80vHC4Ndft36
|
18
|
+
NBQ9mZpequ4RYjpSZNLcVsxyFAYwEY4g8MvH0MoMo2RRLfehmMCzXnI/Wh2qEyYz
|
19
|
+
emHprBii/5y1HieKXlX9CZRb5qEPHckDVXW3znw=
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEArUe66xG4Y2zO13gRC+rBwyvxe+c01pqV6ukw6isIbJIQWs1/
|
3
|
+
QfEMhUwYwKs6/UXxK+VwardcA2zYwngXbGGEtms+mpUfH5CdJnrqW7lHz1BVK4yH
|
4
|
+
90IzGE0GU4D90OW/L4QkGX0fv3VQbL8KGFKBoF04pXIaSGMStFN4wirutHtQboYv
|
5
|
+
99X4kbLjVSIuubUpA/v9dUP1TNl8ar+HKUWRM96ijHkFTF3FR0NnZyt44gP5qC0h
|
6
|
+
i4lUiR6Uo9D6WMFjeRYFF7GolCy/I1SzWBmmOnNhQLO5VxcNG4ldhBcapZeGwE98
|
7
|
+
m/5lxLIwgFR9ZP8bXdxZTWLC58/LQ2NqOjA9mwIDAQABAoIBABmBC0P6Ebegljkk
|
8
|
+
lO26GdbOKvbfqulDS3mN5QMyXkUMopea03YzMnKUJriE+2O33a1mUcuDPWnLpYPK
|
9
|
+
BTiQieYHlulNtY0Bzf+R69igRq9+1WpZftGnzrlu7NVxkOokRqWJv3546ilV7QZ0
|
10
|
+
f9ngmu+tiN7hEnlBC8m613VMuGGb3czwbCizEVZxlZX0Dk2GExbH7Yf3NNs/aOP/
|
11
|
+
8x6CqgL+rhrtOQ80xwRrOlEF8oSSjXCzypa3nFv21YO3J2lVo4BoIwnHgOzyz46A
|
12
|
+
b37gekqXXajIYQ0HAB+NDgVoCRFFJ7Xe16mgB3DpyUpUJzwiMedJkeQ0TprIownQ
|
13
|
+
+1mPe9ECgYEA/K4jc0trr3sk8KtcZjOYdpvwrhEqSSGEPeGfFujZaKOb8PZ8PX6j
|
14
|
+
MbCTV12nEgm8FEhZQ3azxLnO17gbJ2A+Ksm/IIwnTWlqvvMZD5qTQ7L3qZuCtbWQ
|
15
|
+
+EGC/H1SDjhiwvjHcXP61/tYL/peApBSoj0L4kC+U/VaNyvicudKk08CgYEAr46J
|
16
|
+
4VJBJfZ4ZaUBRy53+fy+mknOfaj2wo8MnD3u+/x4YWTapqvDOPN2nJVtKlIsxbS4
|
17
|
+
qCO+fzUV17YHlsQmGULNbtFuXWJkP/RcLVbe8VYg/6tmk0dJwNAe90flagX2KJov
|
18
|
+
8eDX129nNpuUqrNNWsfeLmPmH6vUzpKlga+1zfUCgYBrbUHHJ96dmbZn2AMNtIvy
|
19
|
+
iXP3HXcj5msJwB3aKJ8eHMkU1kaWAnwxiQfrkfaQ9bCP0v6YbyQY1IJ7NlvdDs7/
|
20
|
+
dAydMtkW0WW/zyztdGN92d3vrx0QUiRTV87vt/wl7ZUXnZt1wcB5CPRCWaiUYHWx
|
21
|
+
YlDmHW6N1XdIk5DQF0OegwKBgEt7S8k3Zo9+A5IgegYy8p7njsQjy8a3qTFJ9DAR
|
22
|
+
aPmrOc8WX/SdkVihRXRZwxAZOOrgoyyYAcYL+xI+T9EBESh3UoC9R2ibb2MYG7Ha
|
23
|
+
0gyN7a4/8eCNHCbs1QOZRAhr+8TFVqv28pbMbWJLToZ+hVns6Zikl0MyzFLtNoAm
|
24
|
+
HlMpAoGBAIOkqnwwuRKhWprL59sdcJfWY26os9nvuDV4LoKFNEFLJhj2AA2/3UlV
|
25
|
+
v85gqNSxnMNlHLZC9l2HZ3mKv/mfx1aikmFvyhJAnk5u0f9KkexmCPLjQzS5q3ba
|
26
|
+
yFuxK2DXwN4x46RgQPFlLjOTCX0BG6rkEu4JdonF8ETSjoCtGEU8
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDNjCCAh6gAwIBAgIUF9wE+oqGSbm4UVn1y9gEjzyaJFswDQYJKoZIhvcNAQEL
|
3
|
+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
4
|
+
cmF0ZWQgQ0EwHhcNMjEwODEyMDUxNTI3WhcNMjQwODExMDUxNTI3WjANMQswCQYD
|
5
|
+
VQQDEwJlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK2S2by0lgyu
|
6
|
+
1JfgGgZ41PNXbH2qMPMzowguVVdtZ16WM0CaEG7lnLxmMcC+2Q7NnGuFnPAVQo9T
|
7
|
+
Q3bh7j+1PkCJVHUKZfJIeWtGc9+qXBcO1MhedfwM1osSa4bfwM85G+XKWbRNtmSt
|
8
|
+
CoUuKArIyZkzdBAAQLBoQyPf3DIza1Au4j9Hb3zrswD6e7n2PN4ffIyil1GFduLJ
|
9
|
+
2275qqFiOhkEDUhv7BKNftVBh/89O/5lSqAQGuQ1aDRr8TdHwhO71u4ZIU/Pn6yX
|
10
|
+
LGBWrQG53+qpdCsxGvJTfbtIEYUDTN83CirIxDKJgc1QXOEldylztHf4xnQ7ZarJ
|
11
|
+
tqF6pUzHbRsCAwEAAaNnMGUwHQYDVR0OBBYEFFQUK+6Cg2kExRj1xSDzEi4kkgKX
|
12
|
+
MB8GA1UdIwQYMBaAFMgkye5+2l+TE0I6RsXRHjGBwpBGMBgGA1UdEQQRMA+CDWVs
|
13
|
+
YXN0aWNzZWFyY2gwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAinaknZIc
|
14
|
+
7xtQNwUwa+kdET+I4lMz+TJw9vTjGKPJqe082n81ycKU5b+a/OndG90z+dTwhShW
|
15
|
+
f0oZdIe/1rDCdiRU4ceCZA4ybKrFDIbW8gOKZOx9rsgEx9XNELj4ocZTBqxjQmNE
|
16
|
+
Ho91fli5aEm0EL2vJgejh4hcfDeElQ6go9gtvAHQ57XEADQSenvt69jOICOupnS+
|
17
|
+
LSjDVhv/VLi3CAip0B+lD5fX/DVQdrJ62eRGuQYxoouE3saCO58qUUrKB39yD9KA
|
18
|
+
qRA/sVxyLogxaU+5dLfc0NJdOqSzStxQ2vdMvAWo9tZZ2UBGFrk5SdwCQe7Yv5mX
|
19
|
+
qi02i4q6meHGcw==
|
20
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEArZLZvLSWDK7Ul+AaBnjU81dsfaow8zOjCC5VV21nXpYzQJoQ
|
3
|
+
buWcvGYxwL7ZDs2ca4Wc8BVCj1NDduHuP7U+QIlUdQpl8kh5a0Zz36pcFw7UyF51
|
4
|
+
/AzWixJrht/Azzkb5cpZtE22ZK0KhS4oCsjJmTN0EABAsGhDI9/cMjNrUC7iP0dv
|
5
|
+
fOuzAPp7ufY83h98jKKXUYV24snbbvmqoWI6GQQNSG/sEo1+1UGH/z07/mVKoBAa
|
6
|
+
5DVoNGvxN0fCE7vW7hkhT8+frJcsYFatAbnf6ql0KzEa8lN9u0gRhQNM3zcKKsjE
|
7
|
+
MomBzVBc4SV3KXO0d/jGdDtlqsm2oXqlTMdtGwIDAQABAoIBAQCm/VBDz41ImG7p
|
8
|
+
yu3e6iMeFi7HW5SKdlRUS5dJbHT1uBWJAm/q8TbwvnUBVdsn9cKWY06QYDPQBjAy
|
9
|
+
0LxRSIKivjyl+aIJDZbbEUXrmk/M0zT9rHtgSc2isM8ITH6IHw5q7lmNMPLYOu6T
|
10
|
+
IMvfTDtADBOOTV/vF+/4NKf5GCUXVt1XTzLBFMK0p/ZoI7Fsw7fhH6FR12vk0xA4
|
11
|
+
BEC4pwRbGfHo7P31ii0by8epkve93tF4IZuFmN92A84bN1z7Kc4TYaSbua2rgguz
|
12
|
+
FzMyWpsTxr363HzCK1xOJb6JyJOiXbq4+j2oqtne3GIvyozJeiyKRgjLIMoe/LV7
|
13
|
+
fPPc5wlhAoGBAOD3z0JH2eyR/1RHILFsWInH2nDbKHHuCjhFIL2XloeXsJkiJZ95
|
14
|
+
BpdjExMZCqD44tPNRW/GgWKwoVwltm6zB0aq0aW/OfOzw6fhKt1W+go47L7Tpwap
|
15
|
+
VQgy6BFXSueUKfQDlZEWV4E2gakf8vOl0/VRQExae/CeKf1suEedQaErAoGBAMWE
|
16
|
+
LOmNDEU2NFqghfNBAFYyFJst3YnBmSmlL7W22+OsfSK/PhxnJbuNHxMgxpg9rieW
|
17
|
+
tVyjuZRo/i7WLVm3uG+dK1RJ9t8Y6kpYkCRKpi9G8DBOj3PSulOybBr+fdRfW9mf
|
18
|
+
8UmqOjOkrhxXPkchc9TY4EM7/1XeKvEidlIp0gvRAoGAAurz4zYvW2QhXaR2hhaT
|
19
|
+
p2XSLXiKM8AUndo3rH3U0/lhrvrEZicZsMj2LF88xg20U27sIaD/eJo13Y4XqaPk
|
20
|
+
ykPY6D9srv574SeIeMpx/8PxPiBcoDd+BNc0L1VkgVBoouORAwq5I9HjKKBjdEmI
|
21
|
+
UDw3i0X5KYvDm6fXVAZ0HXUCgYBWc4To8KiXPqNpq2sVzrSkBaWJSmj2G7u7Q6b/
|
22
|
+
RTs3is72v3gjHG6iiaE5URY7mnu4rjlRhAP9Vnsy6uHMrCJZEBTf/sPEYHZj9iGZ
|
23
|
+
EOduOAF3U1tsmaaebbDtm8hdhSOBvITy9kQlSIZAt1r17Ulytz5pj0AySFzJUIkz
|
24
|
+
a0SZkQKBgCWixtUxiK8PAdWhyS++90WJeJn8eqjuSAz+VMtFQFRRWDUbkiHvGMRu
|
25
|
+
o/Hhk6zS46gSF2Evb1d26uUEenXnJlIp6YWzb0DLPrfy5P53kPA6YEvYq5MSAg3l
|
26
|
+
DZOJUF+ko7cWXSZkeTIBH/jrGOdP4tTALZt6DNt+Gz7xwPO5tGgV
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -40,57 +40,91 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
|
-
config
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
43
|
+
context 'creating events from Elasticsearch' do
|
44
|
+
let(:config) do
|
45
|
+
%q[
|
46
|
+
input {
|
47
|
+
elasticsearch {
|
48
|
+
hosts => ["localhost"]
|
49
|
+
query => '{ "query": { "match": { "city_name": "Okinawa" } }, "fields": ["message"] }'
|
50
|
+
}
|
49
51
|
}
|
52
|
+
]
|
53
|
+
end
|
54
|
+
|
55
|
+
let(:mock_response) do
|
56
|
+
{
|
57
|
+
"_scroll_id" => "cXVlcnlUaGVuRmV0Y2g",
|
58
|
+
"took" => 27,
|
59
|
+
"timed_out" => false,
|
60
|
+
"_shards" => {
|
61
|
+
"total" => 169,
|
62
|
+
"successful" => 169,
|
63
|
+
"failed" => 0
|
64
|
+
},
|
65
|
+
"hits" => {
|
66
|
+
"total" => 1,
|
67
|
+
"max_score" => 1.0,
|
68
|
+
"hits" => [ {
|
69
|
+
"_index" => "logstash-2014.10.12",
|
70
|
+
"_type" => "logs",
|
71
|
+
"_id" => "C5b2xLQwTZa76jBmHIbwHQ",
|
72
|
+
"_score" => 1.0,
|
73
|
+
"_source" => { "message" => ["ohayo"] }
|
74
|
+
} ]
|
75
|
+
}
|
50
76
|
}
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
"_shards" => {
|
58
|
-
"total" => 169,
|
59
|
-
"successful" => 169,
|
60
|
-
"failed" => 0
|
61
|
-
},
|
62
|
-
"hits" => {
|
63
|
-
"total" => 1,
|
64
|
-
"max_score" => 1.0,
|
65
|
-
"hits" => [ {
|
66
|
-
"_index" => "logstash-2014.10.12",
|
67
|
-
"_type" => "logs",
|
68
|
-
"_id" => "C5b2xLQwTZa76jBmHIbwHQ",
|
69
|
-
"_score" => 1.0,
|
70
|
-
"_source" => { "message" => ["ohayo"] }
|
71
|
-
} ]
|
77
|
+
end
|
78
|
+
|
79
|
+
let(:mock_scroll_response) do
|
80
|
+
{
|
81
|
+
"_scroll_id" => "r453Wc1jh0caLJhSDg",
|
82
|
+
"hits" => { "hits" => [] }
|
72
83
|
}
|
73
|
-
|
84
|
+
end
|
74
85
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
86
|
+
before(:each) do
|
87
|
+
client = Elasticsearch::Client.new
|
88
|
+
expect(Elasticsearch::Client).to receive(:new).with(any_args).and_return(client)
|
89
|
+
expect(client).to receive(:search).with(any_args).and_return(mock_response)
|
90
|
+
expect(client).to receive(:scroll).with({ :body => { :scroll_id => "cXVlcnlUaGVuRmV0Y2g" }, :scroll=> "1m" }).and_return(mock_scroll_response)
|
91
|
+
expect(client).to receive(:clear_scroll).and_return(nil)
|
92
|
+
end
|
79
93
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
expect(client).to receive(:clear_scroll).and_return(nil)
|
94
|
+
it 'creates the events from the hits' do
|
95
|
+
event = input(config) do |pipeline, queue|
|
96
|
+
queue.pop
|
97
|
+
end
|
85
98
|
|
86
|
-
|
87
|
-
|
99
|
+
expect(event).to be_a(LogStash::Event)
|
100
|
+
puts event.to_hash_with_metadata
|
101
|
+
expect(event.get("message")).to eql [ "ohayo" ]
|
88
102
|
end
|
89
103
|
|
90
|
-
|
91
|
-
|
92
|
-
|
104
|
+
context 'when a target is set' do
|
105
|
+
let(:config) do
|
106
|
+
%q[
|
107
|
+
input {
|
108
|
+
elasticsearch {
|
109
|
+
hosts => ["localhost"]
|
110
|
+
query => '{ "query": { "match": { "city_name": "Okinawa" } }, "fields": ["message"] }'
|
111
|
+
target => "[@metadata][_source]"
|
112
|
+
}
|
113
|
+
}
|
114
|
+
]
|
115
|
+
end
|
93
116
|
|
117
|
+
it 'creates the event using the target' do
|
118
|
+
event = input(config) do |pipeline, queue|
|
119
|
+
queue.pop
|
120
|
+
end
|
121
|
+
|
122
|
+
expect(event).to be_a(LogStash::Event)
|
123
|
+
puts event.to_hash_with_metadata
|
124
|
+
expect(event.get("[@metadata][_source][message]")).to eql [ "ohayo" ]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
94
128
|
|
95
129
|
# This spec is an adapter-spec, ensuring that we send the right sequence of messages to our Elasticsearch Client
|
96
130
|
# to support sliced scrolling. The underlying implementation will spawn its own threads to consume, so we must be
|
@@ -132,7 +166,7 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
132
166
|
end
|
133
167
|
|
134
168
|
context 'without slices directive' do
|
135
|
-
let(:config) { super.tap { |h| h.delete('slices') } }
|
169
|
+
let(:config) { super().tap { |h| h.delete('slices') } }
|
136
170
|
it 'runs just one slice' do
|
137
171
|
expect(plugin).to receive(:do_run_slice).with(duck_type(:<<))
|
138
172
|
expect(Thread).to_not receive(:new)
|
@@ -529,22 +563,22 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
529
563
|
'sample:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJGFjMzFlYmI5MDI0MTc3MzE1NzA0M2MzNGZkMjZmZDQ2OjkyNDMkYTRjMDYyMzBlNDhjOGZjZTdiZTg4YTA3NGEzYmIzZTA6OTI0NA=='
|
530
564
|
end
|
531
565
|
|
532
|
-
let(:config) { super.merge({ 'cloud_id' => valid_cloud_id }) }
|
566
|
+
let(:config) { super().merge({ 'cloud_id' => valid_cloud_id }) }
|
533
567
|
|
534
568
|
it "should set host(s)" do
|
535
569
|
plugin.register
|
536
570
|
client = plugin.send(:client)
|
537
|
-
expect( client.transport.hosts ).to eql [{
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
571
|
+
expect( client.transport.instance_variable_get(:@hosts) ).to eql [{
|
572
|
+
:scheme => "https",
|
573
|
+
:host => "ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io",
|
574
|
+
:port => 9243,
|
575
|
+
:path => "",
|
576
|
+
:protocol => "https"
|
577
|
+
}]
|
544
578
|
end
|
545
579
|
|
546
580
|
context 'invalid' do
|
547
|
-
let(:config) { super.merge({ 'cloud_id' => 'invalid:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlv' }) }
|
581
|
+
let(:config) { super().merge({ 'cloud_id' => 'invalid:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlv' }) }
|
548
582
|
|
549
583
|
it "should fail" do
|
550
584
|
expect { plugin.register }.to raise_error LogStash::ConfigurationError, /cloud_id.*? is invalid/
|
@@ -552,7 +586,7 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
552
586
|
end
|
553
587
|
|
554
588
|
context 'hosts also set' do
|
555
|
-
let(:config) { super.merge({ 'cloud_id' => valid_cloud_id, 'hosts' => [ 'localhost:9200' ] }) }
|
589
|
+
let(:config) { super().merge({ 'cloud_id' => valid_cloud_id, 'hosts' => [ 'localhost:9200' ] }) }
|
556
590
|
|
557
591
|
it "should fail" do
|
558
592
|
expect { plugin.register }.to raise_error LogStash::ConfigurationError, /cloud_id and hosts/
|
@@ -561,18 +595,18 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
561
595
|
end if LOGSTASH_VERSION > '6.0'
|
562
596
|
|
563
597
|
describe "cloud.auth" do
|
564
|
-
let(:config) { super.merge({ 'cloud_auth' => LogStash::Util::Password.new('elastic:my-passwd-00') }) }
|
598
|
+
let(:config) { super().merge({ 'cloud_auth' => LogStash::Util::Password.new('elastic:my-passwd-00') }) }
|
565
599
|
|
566
600
|
it "should set authorization" do
|
567
601
|
plugin.register
|
568
602
|
client = plugin.send(:client)
|
569
|
-
auth_header = client.transport.options[:transport_options][:headers][
|
603
|
+
auth_header = client.transport.instance_variable_get(:@options)[:transport_options][:headers]['Authorization']
|
570
604
|
|
571
605
|
expect( auth_header ).to eql "Basic #{Base64.encode64('elastic:my-passwd-00').rstrip}"
|
572
606
|
end
|
573
607
|
|
574
608
|
context 'invalid' do
|
575
|
-
let(:config) { super.merge({ 'cloud_auth' => 'invalid-format' }) }
|
609
|
+
let(:config) { super().merge({ 'cloud_auth' => 'invalid-format' }) }
|
576
610
|
|
577
611
|
it "should fail" do
|
578
612
|
expect { plugin.register }.to raise_error LogStash::ConfigurationError, /cloud_auth.*? format/
|
@@ -580,7 +614,7 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
580
614
|
end
|
581
615
|
|
582
616
|
context 'user also set' do
|
583
|
-
let(:config) { super.merge({ 'cloud_auth' => 'elastic:my-passwd-00', 'user' => 'another' }) }
|
617
|
+
let(:config) { super().merge({ 'cloud_auth' => 'elastic:my-passwd-00', 'user' => 'another' }) }
|
584
618
|
|
585
619
|
it "should fail" do
|
586
620
|
expect { plugin.register }.to raise_error LogStash::ConfigurationError, /Multiple authentication options are specified/
|
@@ -590,7 +624,7 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
590
624
|
|
591
625
|
describe "api_key" do
|
592
626
|
context "without ssl" do
|
593
|
-
let(:config) { super.merge({ 'api_key' => LogStash::Util::Password.new('foo:bar') }) }
|
627
|
+
let(:config) { super().merge({ 'api_key' => LogStash::Util::Password.new('foo:bar') }) }
|
594
628
|
|
595
629
|
it "should fail" do
|
596
630
|
expect { plugin.register }.to raise_error LogStash::ConfigurationError, /api_key authentication requires SSL\/TLS/
|
@@ -598,18 +632,18 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
598
632
|
end
|
599
633
|
|
600
634
|
context "with ssl" do
|
601
|
-
let(:config) { super.merge({ 'api_key' => LogStash::Util::Password.new('foo:bar'), "ssl" => true }) }
|
635
|
+
let(:config) { super().merge({ 'api_key' => LogStash::Util::Password.new('foo:bar'), "ssl" => true }) }
|
602
636
|
|
603
637
|
it "should set authorization" do
|
604
638
|
plugin.register
|
605
639
|
client = plugin.send(:client)
|
606
|
-
auth_header = client.transport.options[:transport_options][:headers][
|
640
|
+
auth_header = client.transport.instance_variable_get(:@options)[:transport_options][:headers]['Authorization']
|
607
641
|
|
608
642
|
expect( auth_header ).to eql "ApiKey #{Base64.strict_encode64('foo:bar')}"
|
609
643
|
end
|
610
644
|
|
611
645
|
context 'user also set' do
|
612
|
-
let(:config) { super.merge({ 'api_key' => 'foo:bar', 'user' => 'another' }) }
|
646
|
+
let(:config) { super().merge({ 'api_key' => 'foo:bar', 'user' => 'another' }) }
|
613
647
|
|
614
648
|
it "should fail" do
|
615
649
|
expect { plugin.register }.to raise_error LogStash::ConfigurationError, /Multiple authentication options are specified/
|
@@ -619,24 +653,24 @@ describe LogStash::Inputs::TestableElasticsearch do
|
|
619
653
|
end if LOGSTASH_VERSION > '6.0'
|
620
654
|
|
621
655
|
describe "proxy" do
|
622
|
-
let(:config) { super.merge({ 'proxy' => 'http://localhost:1234' }) }
|
656
|
+
let(:config) { super().merge({ 'proxy' => 'http://localhost:1234' }) }
|
623
657
|
|
624
658
|
it "should set proxy" do
|
625
659
|
plugin.register
|
626
660
|
client = plugin.send(:client)
|
627
|
-
proxy = client.transport.options[:transport_options][:proxy]
|
661
|
+
proxy = client.transport.instance_variable_get(:@options)[:transport_options][:proxy]
|
628
662
|
|
629
663
|
expect( proxy ).to eql "http://localhost:1234"
|
630
664
|
end
|
631
665
|
|
632
666
|
context 'invalid' do
|
633
|
-
let(:config) { super.merge({ 'proxy' => '${A_MISSING_ENV_VAR:}' }) }
|
667
|
+
let(:config) { super().merge({ 'proxy' => '${A_MISSING_ENV_VAR:}' }) }
|
634
668
|
|
635
669
|
it "should not set proxy" do
|
636
670
|
plugin.register
|
637
671
|
client = plugin.send(:client)
|
638
672
|
|
639
|
-
expect( client.transport.options[:transport_options] ).to_not include(:proxy)
|
673
|
+
expect( client.transport.instance_variable_get(:@options)[:transport_options] ).to_not include(:proxy)
|
640
674
|
end
|
641
675
|
end
|
642
676
|
end
|
@@ -11,7 +11,7 @@ describe LogStash::Inputs::Elasticsearch do
|
|
11
11
|
'query' => '{ "query": { "match": { "message": "Not found"} }}' } }
|
12
12
|
let(:plugin) { described_class.new(config) }
|
13
13
|
let(:event) { LogStash::Event.new({}) }
|
14
|
-
let(:client_options) {
|
14
|
+
let(:client_options) { Hash.new }
|
15
15
|
|
16
16
|
before(:each) do
|
17
17
|
@es = ESHelper.get_client(client_options)
|
@@ -47,17 +47,29 @@ describe LogStash::Inputs::Elasticsearch do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
describe 'against a secured elasticsearch', :secure_integration => true do
|
50
|
-
let(:user) { 'simpleuser' }
|
51
|
-
let(:password) { 'abc123' }
|
52
|
-
let(:ca_file) { "spec/fixtures/test_certs/
|
53
|
-
|
54
|
-
let(:
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
'ca_file' => ca_file })
|
59
|
-
}
|
50
|
+
let(:user) { ENV['ELASTIC_USER'] || 'simpleuser' }
|
51
|
+
let(:password) { ENV['ELASTIC_PASSWORD'] || 'abc123' }
|
52
|
+
let(:ca_file) { "spec/fixtures/test_certs/ca.crt" }
|
53
|
+
|
54
|
+
let(:client_options) { { :ca_file => ca_file, :user => user, :password => password } }
|
55
|
+
|
56
|
+
let(:config) { super().merge('user' => user, 'password' => password, 'ssl' => true, 'ca_file' => ca_file) }
|
57
|
+
|
60
58
|
it_behaves_like 'an elasticsearch index plugin'
|
59
|
+
|
60
|
+
context "incorrect auth credentials" do
|
61
|
+
|
62
|
+
let(:config) do
|
63
|
+
super().merge('user' => 'archer', 'password' => 'b0gus!')
|
64
|
+
end
|
65
|
+
|
66
|
+
let(:queue) { [] }
|
67
|
+
|
68
|
+
it "fails to run the plugin" do
|
69
|
+
plugin.register
|
70
|
+
expect { plugin.run queue }.to raise_error Elasticsearch::Transport::Transport::Errors::Unauthorized
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
61
74
|
end
|
62
75
|
end
|
63
|
-
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-08-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '1.0'
|
19
|
+
name: logstash-mixin-validator_support
|
20
|
+
prerelease: false
|
21
|
+
type: :runtime
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
requirement: !ruby/object:Gem::Requirement
|
15
29
|
requirements:
|
@@ -35,7 +49,7 @@ dependencies:
|
|
35
49
|
requirements:
|
36
50
|
- - ">="
|
37
51
|
- !ruby/object:Gem::Version
|
38
|
-
version: 5.0.
|
52
|
+
version: 5.0.5
|
39
53
|
name: elasticsearch
|
40
54
|
prerelease: false
|
41
55
|
type: :runtime
|
@@ -43,7 +57,7 @@ dependencies:
|
|
43
57
|
requirements:
|
44
58
|
- - ">="
|
45
59
|
- !ruby/object:Gem::Version
|
46
|
-
version: 5.0.
|
60
|
+
version: 5.0.5
|
47
61
|
- !ruby/object:Gem::Dependency
|
48
62
|
requirement: !ruby/object:Gem::Requirement
|
49
63
|
requirements:
|
@@ -58,20 +72,6 @@ dependencies:
|
|
58
72
|
- - ">="
|
59
73
|
- !ruby/object:Gem::Version
|
60
74
|
version: '0'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
requirement: !ruby/object:Gem::Requirement
|
63
|
-
requirements:
|
64
|
-
- - ">="
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
67
|
-
name: logstash-codec-plain
|
68
|
-
prerelease: false
|
69
|
-
type: :runtime
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '0'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
@@ -131,17 +131,17 @@ dependencies:
|
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
requirement: !ruby/object:Gem::Requirement
|
133
133
|
requirements:
|
134
|
-
- - "
|
134
|
+
- - ">="
|
135
135
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
136
|
+
version: 0.7.1
|
137
137
|
name: manticore
|
138
138
|
prerelease: false
|
139
139
|
type: :runtime
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - "
|
142
|
+
- - ">="
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version:
|
144
|
+
version: 0.7.1
|
145
145
|
- !ruby/object:Gem::Dependency
|
146
146
|
requirement: !ruby/object:Gem::Requirement
|
147
147
|
requirements:
|
@@ -150,7 +150,7 @@ dependencies:
|
|
150
150
|
version: 0.15.4
|
151
151
|
name: faraday
|
152
152
|
prerelease: false
|
153
|
-
type: :
|
153
|
+
type: :development
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
@@ -200,13 +200,14 @@ files:
|
|
200
200
|
- README.md
|
201
201
|
- docs/index.asciidoc
|
202
202
|
- lib/logstash/inputs/elasticsearch.rb
|
203
|
-
- lib/logstash/inputs/
|
203
|
+
- lib/logstash/inputs/elasticsearch/patches/_elasticsearch_transport_connections_selector.rb
|
204
|
+
- lib/logstash/inputs/elasticsearch/patches/_elasticsearch_transport_http_manticore.rb
|
204
205
|
- logstash-input-elasticsearch.gemspec
|
205
206
|
- spec/es_helper.rb
|
206
|
-
- spec/fixtures/test_certs/ca
|
207
|
-
- spec/fixtures/test_certs/ca
|
208
|
-
- spec/fixtures/test_certs/
|
209
|
-
- spec/fixtures/test_certs/
|
207
|
+
- spec/fixtures/test_certs/ca.crt
|
208
|
+
- spec/fixtures/test_certs/ca.key
|
209
|
+
- spec/fixtures/test_certs/es.crt
|
210
|
+
- spec/fixtures/test_certs/es.key
|
210
211
|
- spec/inputs/elasticsearch_spec.rb
|
211
212
|
- spec/inputs/integration/elasticsearch_spec.rb
|
212
213
|
homepage: http://www.elastic.co/guide/en/logstash/current/index.html
|
@@ -230,16 +231,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
230
231
|
- !ruby/object:Gem::Version
|
231
232
|
version: '0'
|
232
233
|
requirements: []
|
233
|
-
|
234
|
-
rubygems_version: 2.6.13
|
234
|
+
rubygems_version: 3.1.6
|
235
235
|
signing_key:
|
236
236
|
specification_version: 4
|
237
237
|
summary: Reads query results from an Elasticsearch cluster
|
238
238
|
test_files:
|
239
239
|
- spec/es_helper.rb
|
240
|
-
- spec/fixtures/test_certs/ca
|
241
|
-
- spec/fixtures/test_certs/ca
|
242
|
-
- spec/fixtures/test_certs/
|
243
|
-
- spec/fixtures/test_certs/
|
240
|
+
- spec/fixtures/test_certs/ca.crt
|
241
|
+
- spec/fixtures/test_certs/ca.key
|
242
|
+
- spec/fixtures/test_certs/es.crt
|
243
|
+
- spec/fixtures/test_certs/es.key
|
244
244
|
- spec/inputs/elasticsearch_spec.rb
|
245
245
|
- spec/inputs/integration/elasticsearch_spec.rb
|
@@ -1,32 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
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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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
-
6L4sMiy8FzQ55TMpoM35cWuvoAMxvSQqGZ4pYYKnfNSGhzHvssfNS1xu/Lwb7Vju
|
11
|
-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
-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
-
9dMjTQ+MXzJDt0JvX8SIJPmbBng78MSaCUhpOZiii1l2mBfPWejx20I/SMCUNmzb
|
14
|
-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
-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
-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
-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
-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
-
dIrvKNs/KzAfBgNVHSMEGDAWgBShWnSceOrqYn9Qa4WGdIrvKNs/KzAPBgNVHRMB
|
20
|
-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
-
UOzvpCoawSXH1FP2ycA+P1bP8H8htjwvV334ZADlQrDQRu0hqa1T+DxwhLxNOxgE
|
22
|
-
1XCthN3TTyd3O1mT4NmT6mcn2wYSn/JC6fPwFcloX8BcUvxl+xwmOgL/pzgf1ekK
|
23
|
-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
-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
-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
-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
-
lWOMLI4gQibV7R1Opt2feA8MwWxouP/yni8IX6sPePVQ+fLEk1C+Kg+x6k1yQHEM
|
28
|
-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
-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
-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
|
31
|
-
nIg9fQPvVw+fIHACZQ==
|
32
|
-
-----END CERTIFICATE-----
|
@@ -1,51 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
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
-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
-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
-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
-
COIe3EOxj+z3cApr+8uS1cpQrmcDeOMk6EBtFNWds4CDEW3Rhtf3zFb9pSqxyAFR
|
7
|
-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
-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
-
X+itbWl1j3E8vS4piboAOwMLQHywaA0wFd4HpouiNjX8hPCaZ+l+T1z/JY98Luy0
|
10
|
-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
-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
-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
-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
-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
-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
-
I1e47XGF/69dVatCDvZBpJKMn2vMlvR3sYw4fP8zMiFtLPb4mq1OKerEX6Fz7zTl
|
17
|
-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
-
WogqaHjTyu+wUm7omqA6VuGDLZqh1r0xYR+EXVMAudLjy7/NtAaE4MVOqVRs4WVd
|
19
|
-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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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
-
K1qEFyK1PCfR8GeVHXWkJ3udHJRIZlEtNNLkHzU4nCRRYTvQ4l67rD9Tj7CoLbH1
|
28
|
-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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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
-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
-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
-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
-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
-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
-
CNepxQDoVTXYEecPjc0LL4Kb+urmJL7HEP9BteIkc+7l8b9USDhNlJeCXICoJKBu
|
48
|
-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
-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
-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
|
51
|
-
-----END RSA PRIVATE KEY-----
|
@@ -1,36 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
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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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
-
hiJw1R5yrITXnjZY0rObITwyt/e6Sc3YnoQfsSGaLJEG0aDc0RALAhgzj+RY8086
|
17
|
-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
-
6JXXAgMBAAGjggEmMIIBIjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIGQDAz
|
19
|
-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
-
YXRlMB0GA1UdDgQWBBRvvz0yGw6Tz2UxbBLAGyzVMtcMUDCBiAYDVR0jBIGAMH6A
|
21
|
-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
-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
-
BlJvb3RDQYIUU+VHJ91JsLLA1GJYC+UchNfw3hEwDgYDVR0PAQH/BAQDAgWgMBMG
|
24
|
-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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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
|
35
|
-
FKbYFqzgpWksa+zZ2RYYplUAxq0wYw==
|
36
|
-
-----END CERTIFICATE-----
|
@@ -1,51 +0,0 @@
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
2
|
-
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
-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
-
NKNXLDbyKIJvz/rr0sxOnmUWVEpqOPXWOUikibej44epTNjBxI7DyiCnQDee8BDf
|
5
|
-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
-
CJUHd0T18xH+lUmI7a/QI6da4b79utdatAgeTQC4PykdzojD2Jk4ORwCjncHjWpu
|
7
|
-
+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
-
K1BkX5r6Zzkffcb0eI8/eNkTYmOtaU5rL6PoibKUyCNxmYcCBpR7cRPUZ+dJVkHA
|
9
|
-
7gwx3zm1oc2+K0ueQRESMA1Kg9S4AkXdIpEcT0ryNQDOHJd+W+A02gy3JzOhDn8v
|
10
|
-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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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
-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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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
-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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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
|
51
|
-
-----END RSA PRIVATE KEY-----
|