logstash-output-elasticsearch 7.3.6-java → 7.3.7-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 +4 -0
- data/docs/index.asciidoc +1 -1
- data/lib/logstash/outputs/elasticsearch/http_client.rb +29 -24
- data/lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb +1 -1
- data/lib/logstash/outputs/elasticsearch/http_client_builder.rb +3 -5
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/fixtures/test_certs/ca/ca.crt +22 -0
- data/spec/fixtures/test_certs/ca/ca.key +27 -0
- data/spec/fixtures/test_certs/test.crt +21 -0
- data/spec/fixtures/test_certs/test.key +27 -0
- data/spec/integration/outputs/index_spec.rb +27 -19
- data/spec/unit/http_client_builder_spec.rb +5 -13
- data/spec/unit/outputs/elasticsearch_spec.rb +3 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f7192d92b49c809e5e75e71954febf19fe49d8e
|
4
|
+
data.tar.gz: d0bfa079c1a5658b1e5bd56ce99fd7d77177782c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8277f8569152e3e874c40631d03b95dbe141368f42faf71a67d4e0b5f35fdf94b58d12b1b6c2fc9cb2a197c00c567820f26539c3b4bbefe2c8a9b3e58b490ddf
|
7
|
+
data.tar.gz: 34c6ae1d82f9284d90c0daf906500f215b3707d65c85e1a6fdb1398e6929f536ccfc000c94aa0772f4f1055236fcd77e12f204168d015e7e8cb335fb642bc24b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
## 7.3.7
|
2
|
+
- Properly support characters needing escaping in users / passwords across multiple SafeURI implementions (pre/post LS 5.5.1)
|
3
|
+
- Logstash 5.5.0 does NOT work with this release as it has a broken SafeURI implementation
|
4
|
+
|
1
5
|
## 7.3.5
|
2
6
|
- Fix incorrect variable reference when DLQing events
|
3
7
|
|
data/docs/index.asciidoc
CHANGED
@@ -286,32 +286,37 @@ module LogStash; module Outputs; class ElasticSearch;
|
|
286
286
|
end
|
287
287
|
|
288
288
|
def host_to_url(h)
|
289
|
-
#
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
289
|
+
# Never override the calculated scheme
|
290
|
+
raw_scheme = @url_template[:scheme] || 'http'
|
291
|
+
|
292
|
+
raw_user = h.user || @url_template[:user]
|
293
|
+
raw_password = h.password || @url_template[:password]
|
294
|
+
postfixed_userinfo = raw_user && raw_password ? "#{raw_user}:#{raw_password}@" : nil
|
295
|
+
|
296
|
+
raw_host = h.host # Always replace this!
|
297
|
+
raw_port = h.port || @url_template[:port]
|
298
|
+
|
299
|
+
raw_path = !h.path.nil? && !h.path.empty? && h.path != "/" ? h.path : @url_template[:path]
|
300
|
+
prefixed_raw_path = raw_path && !raw_path.empty? ? raw_path : "/"
|
301
|
+
|
301
302
|
parameters = client_settings[:parameters]
|
302
|
-
if parameters && !parameters.empty?
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
303
|
+
raw_query = if parameters && !parameters.empty?
|
304
|
+
combined = h.query ?
|
305
|
+
Hash[URI::decode_www_form(h.query)].merge(parameters) :
|
306
|
+
parameters
|
307
|
+
query_str = combined.flat_map {|k,v|
|
308
|
+
values = Array(v)
|
309
|
+
values.map {|av| "#{k}=#{av}"}
|
310
|
+
}.join("&")
|
311
|
+
query_str
|
312
|
+
else
|
313
|
+
h.query
|
314
|
+
end
|
315
|
+
prefixed_raw_query = raw_query && !raw_query.empty? ? "?#{raw_query}" : nil
|
316
|
+
|
317
|
+
raw_url = "#{raw_scheme}://#{postfixed_userinfo}#{raw_host}:#{raw_port}#{prefixed_raw_path}#{prefixed_raw_query}"
|
313
318
|
|
314
|
-
::LogStash::Util::SafeURI.new(
|
319
|
+
::LogStash::Util::SafeURI.new(raw_url)
|
315
320
|
end
|
316
321
|
|
317
322
|
def template_exists?(name)
|
@@ -56,7 +56,7 @@ module LogStash; module Outputs; class ElasticSearch; class HttpClient;
|
|
56
56
|
|
57
57
|
if url.user
|
58
58
|
params[:auth] = {
|
59
|
-
:user => url.user,
|
59
|
+
:user => CGI.unescape(url.user),
|
60
60
|
# We have to unescape the password here since manticore won't do it
|
61
61
|
# for us unless its part of the URL
|
62
62
|
:password => CGI.unescape(url.password),
|
@@ -140,14 +140,12 @@ module LogStash; module Outputs; class ElasticSearch;
|
|
140
140
|
|
141
141
|
def self.setup_basic_auth(logger, params)
|
142
142
|
user, password = params["user"], params["password"]
|
143
|
-
unsafe_password = password && password.value
|
144
|
-
unsafe_escaped_password = unsafe_password ? CGI.escape(unsafe_password) : nil
|
145
143
|
|
146
|
-
return {} unless user &&
|
144
|
+
return {} unless user && password && password.value
|
147
145
|
|
148
146
|
{
|
149
|
-
:user => user,
|
150
|
-
:password =>
|
147
|
+
:user => CGI.escape(user),
|
148
|
+
:password => CGI.escape(password.value)
|
151
149
|
}
|
152
150
|
end
|
153
151
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-output-elasticsearch'
|
3
|
-
s.version = '7.3.
|
3
|
+
s.version = '7.3.7'
|
4
4
|
s.licenses = ['apache-2.0']
|
5
5
|
s.summary = "Logstash Output to Elasticsearch"
|
6
6
|
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"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDmzCCAoOgAwIBAgIUJ3zg8MPyVvlLtNfv27YwTmy8sKAwDQYJKoZIhvcNAQEL
|
3
|
+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
4
|
+
cmF0ZWQgQ0EwHhcNMTcwNzExMjA0ODM3WhcNMjAwNzEwMjA0ODM3WjA0MTIwMAYD
|
5
|
+
VQQDEylFbGFzdGljIENlcnRpZmljYXRlIFRvb2wgQXV0b2dlbmVyYXRlZCBDQTCC
|
6
|
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAIH11HENfB27hsxlPIIZJvBV
|
7
|
+
gyDRo8T29HEm/mm9hlg4c76xsdXlPoKZ0ENzcEMg+AyKjQxD5cZIACvsd3lbJnca
|
8
|
+
+8CUcfqKDu1rDq6T5YMX75Gw21ZeJoGy3voCXGvTIoH1aNdRt/8EcWq9P81Mew7A
|
9
|
+
jh1qhv8WR8Ajxt29OSyWH8VC2WHrihkD/s+3eHCNNpW3CCFtA3uc3sbENVB04A7d
|
10
|
+
0HzZRD5EfZcZVlcfd5o4ZPuH5PnR4LkZAR2TEgQ8qpruF3m3YMmPvnHaRx5/Bivv
|
11
|
+
0IuBOAQhkL1w5MzSZVOg3N0u91Krss2tUGLf8c5qnxveqdSKShgVxwI/6P0CaccC
|
12
|
+
AwEAAaOBpDCBoTAdBgNVHQ4EFgQUba74O4k4WAzgVH9WqCLvypyTj1swbwYDVR0j
|
13
|
+
BGgwZoAUba74O4k4WAzgVH9WqCLvypyTj1uhOKQ2MDQxMjAwBgNVBAMTKUVsYXN0
|
14
|
+
aWMgQ2VydGlmaWNhdGUgVG9vbCBBdXRvZ2VuZXJhdGVkIENBghQnfODww/JW+Uu0
|
15
|
+
1+/btjBObLywoDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAf
|
16
|
+
jVC71jdUu649ZWketKEqlmAL5K4RmBghKS49Coso1eACngbzVfnh0vfKxF1giIvw
|
17
|
+
154ZmcAD0bmArO538j+uEvr9kj3ZX8qmvNLRNQ2IcUQaR7N+8Iu8WIqtTIfI07hp
|
18
|
+
cXHv0jIcq7sFp4BpWDnWGlipFN+ldFRBvaUarrK1QcDAeWyPaUqryY7egecV9PpV
|
19
|
+
Ebh28RblD5QlA9+sLc5u+zg1vlWg7fLsiGQqNR29dXWmavcamKfo5TOAuzXFlU78
|
20
|
+
it8DhTCvTnmCIi0NIxJY9rHLHgz/3aDRsBDzCZMQFJ2KfssI6YHZ9LpZ+3iVObr6
|
21
|
+
jGjKiXeVb9DcAnYR+Ihy
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEpAIBAAKCAQEAgfXUcQ18HbuGzGU8ghkm8FWDINGjxPb0cSb+ab2GWDhzvrGx
|
3
|
+
1eU+gpnQQ3NwQyD4DIqNDEPlxkgAK+x3eVsmdxr7wJRx+ooO7WsOrpPlgxfvkbDb
|
4
|
+
Vl4mgbLe+gJca9MigfVo11G3/wRxar0/zUx7DsCOHWqG/xZHwCPG3b05LJYfxULZ
|
5
|
+
YeuKGQP+z7d4cI02lbcIIW0De5zexsQ1UHTgDt3QfNlEPkR9lxlWVx93mjhk+4fk
|
6
|
+
+dHguRkBHZMSBDyqmu4XebdgyY++cdpHHn8GK+/Qi4E4BCGQvXDkzNJlU6Dc3S73
|
7
|
+
Uquyza1QYt/xzmqfG96p1IpKGBXHAj/o/QJpxwIDAQABAoIBADvKJGWqpYpsRvTs
|
8
|
+
Mm1MMwzo2n4T1Lt+PjF8lhmBtzgJKL73s3BLmnmtWBJgHqrTlSr35zJYXnLdly6e
|
9
|
+
CM1NMSIkyOPtp45zS7DQyx1oL3QjY/VsH0zZ3e9Xopv00B5PMZYGmKhPEU6C9cb8
|
10
|
+
sEi8QfUkg31nEBp1Xqc4DnrfXllzQiZIVrhHleRcBVtpYVkR3dN5wg+YTwF5n8ru
|
11
|
+
2Z/N8yuBMrKWqozlUY+x7iDCVXIbp+t3zePfOOhzSdIt4qx372PX6L0HmrI4ZAzw
|
12
|
+
HkpCQbnlWL55G2CPcnvJF3evbDWoiX8vCYDAQmzFA6X8lAMF9jjKfWlo2Qa1AciN
|
13
|
+
yqwePKECgYEA0wR9CT51h5PuvGUmKPAfImTNyqQIksibe+AOkU01ldHmBVRfX16f
|
14
|
+
SKMDKMry4tzXGinVjITonxTdT7jXO5z3754CBoEItdASruikay63DF90hVvP18Zl
|
15
|
+
OcH/UIBkyvtSjJLEm2/jdfwI+qIOSfhwi5mymXUGVRyEb5i8FORWidcCgYEAnanv
|
16
|
+
9dk3cx034vG/p36RmI57I1gh6UsEBk53uPZAcecBigDJut2o3vO7/gc/+vROCzk3
|
17
|
+
Y+EY7tgRDQUh0b9ex+Dq6BkjkZkAKWVCf+u8KDCpW7Xlgm1YDpS2B0EwASgql6Xl
|
18
|
+
qXu1VgTNc44g0D74yJbs853GWYg5AnV/sRCfgZECgYAklw6nX7E5hSlMea2YQ6ri
|
19
|
+
Z+BXVwI1kZuEa2GbSGwWQoNEQVEYVGwCSGHv3OEo/Wo/GynwZ8t+ajvF6yNHLvy/
|
20
|
+
DAMF5bIA9MeIlMaN31fWSWcHCNiNbdV3onAHIXxYxiOWRIza9xfWCZH1A8y+ftnl
|
21
|
+
Gw2hFm22rG86ep2CceWfmQKBgQCXe8fK90GHoPMpYg066SkK4xr9ApjShfj/9jSh
|
22
|
+
yjhxN/sKlWc92+t9C8H8eQrIHCNANWE63fQOyBrZ36x20uBGO5x4FG9QXSkCnQAf
|
23
|
+
2GeYVeji7QnvHxAUMl4S6lctRWJnAkZ/aRT56PNdq5lrfJWcZSaVi2oga/oamrpt
|
24
|
+
bgNTgQKBgQCGUheUb+51c6hoi7kjuv1uJNyGzirkYA+pNUest2EXVMwMpsLP9hSl
|
25
|
+
fN11QvMVqRsBnwl2pRnwGilJHl5OO9Z3GBTHsG15EPXhjgUX8r49+GB/HNPP57Ev
|
26
|
+
lA775+tliHVv6Pl0E3RjhUlSuJIwZZ2ImV+RDryElBKCet4kI/KrIw==
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -0,0 +1,21 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDjDCCAnSgAwIBAgIULhSohxna+aUn+a7UIQmNPLb11p8wDQYJKoZIhvcNAQEL
|
3
|
+
BQAwNDEyMDAGA1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5l
|
4
|
+
cmF0ZWQgQ0EwHhcNMTcwNzExMjA0OTEwWhcNMjAwNzEwMjA0OTEwWjAPMQ0wCwYD
|
5
|
+
VQQDEwR0ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnNOuaiad
|
6
|
+
YCotO/bSTVJwlR4f1Kdt3gMZeD1i3QKX8QSXACpVeNaTn/6Vflbf/jlWk8i6Mbsv
|
7
|
+
HeZgdxMe3/CMs8U9fRx2tt4hF5tVivnkRfXbvC5lhYsjg4k2DorkigP/4D4XDonv
|
8
|
+
pFwB7qKeChnYbe9ADh8DMymKj2Z0LXxSEjuP5VH1O+5jLyddL4gRpCRa5G79vq9m
|
9
|
+
7rdnq7HTfZ6m3t15AIY4XWZ0VW2epMsflQcbNChcYNMMDhBZzPkhRs7KEEHUV9ye
|
10
|
+
sGTxGRUBLWNd7rNLY0T0biiUlaWfgbGfUmDKZKofowoo+M9w5rREEnXqrGkc3QmT
|
11
|
+
zx9XRHqfeEC/ZQIDAQABo4G6MIG3MB0GA1UdDgQWBBS++BZR6DYwjv7jlkS2mVdJ
|
12
|
+
NtpILDBvBgNVHSMEaDBmgBRtrvg7iThYDOBUf1aoIu/KnJOPW6E4pDYwNDEyMDAG
|
13
|
+
A1UEAxMpRWxhc3RpYyBDZXJ0aWZpY2F0ZSBUb29sIEF1dG9nZW5lcmF0ZWQgQ0GC
|
14
|
+
FCd84PDD8lb5S7TX79u2ME5svLCgMBoGA1UdEQQTMBGCCWxvY2FsaG9zdIcEfwAA
|
15
|
+
ATAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBugjYG5LK91A1awDYTsrrT
|
16
|
+
Bmi8TiOeHa69Qia4SrFpwua648TpC5esaIC4uAJlTVP5MwcMB/5+lZOcUjVgFIss
|
17
|
+
Z4mdRgExXMAoDiI5OOqXcCiGYWv/jGJzKj4EZ65UZADVrGDFmZPW99g4XDInc27W
|
18
|
+
lmZETkjriueku7gH4eEOdfSX9jv6M+mYhRJlllWlzk77zzENtFn4uCQmd9bzFDQM
|
19
|
+
hOxi+tif9SrGEAoJoSP204vunLIDNve2KycVXuQkhZO+Q5JYmN38DqFrjC/U5JbC
|
20
|
+
IIdTES3+iydEHevB3biI251NrQkg1eOOTG376viFZVmZB9e75waf8JLKKswNmubU
|
21
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,27 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIIEowIBAAKCAQEAnNOuaiadYCotO/bSTVJwlR4f1Kdt3gMZeD1i3QKX8QSXACpV
|
3
|
+
eNaTn/6Vflbf/jlWk8i6MbsvHeZgdxMe3/CMs8U9fRx2tt4hF5tVivnkRfXbvC5l
|
4
|
+
hYsjg4k2DorkigP/4D4XDonvpFwB7qKeChnYbe9ADh8DMymKj2Z0LXxSEjuP5VH1
|
5
|
+
O+5jLyddL4gRpCRa5G79vq9m7rdnq7HTfZ6m3t15AIY4XWZ0VW2epMsflQcbNChc
|
6
|
+
YNMMDhBZzPkhRs7KEEHUV9yesGTxGRUBLWNd7rNLY0T0biiUlaWfgbGfUmDKZKof
|
7
|
+
owoo+M9w5rREEnXqrGkc3QmTzx9XRHqfeEC/ZQIDAQABAoIBAAm4XREbP5ncQ116
|
8
|
+
GOLN/0hey55EmlyuWH/JXj1QkdZQcIOEHDQXKKM8BkwEWnHJYAJc6J14ep0h0EzR
|
9
|
+
FJLQuAfUa9E7WGhRMD/kUtMAVhO3/1yUi5pRW2wlrwILvcqIIO3nK0qtZfsL8Nq3
|
10
|
+
nZAGthFqSNAXP/2Fz56/vOes0vFqQpHC9y+xzQVm9Kr/bZeB0gWH1Eq32Dz2Q8pW
|
11
|
+
E1BNgy48az20AcH8KiJCy5JjByDkcBjBPm8S074Hab9VPvLEnKrpApNZT3V/cLVd
|
12
|
+
t0UmGT937g1DuqwYBl6eLB+FgOZhNjONtF7llHDYWtx0r9XaKplGtmMeW1rDRLp4
|
13
|
+
XkDeKqkCgYEA54xm+Uc1SLGgnzPQb88Sk+H6ffFy4fkzS2FTeEm7NlKpFLtPVNx+
|
14
|
+
wZys0GobYn7XFq0lGODWhuFJbN8vm8aGZ2xgKv3213yKWOjn/UBP8D8JyC3HQs5f
|
15
|
+
atf6a15z7bp+Vrab+tn0dOi4Jz6FhNxmhwFVS3n+e7fZo7gUxAAOxTcCgYEArWNI
|
16
|
+
c2f+Qf44lskqrN2NNNY44/lYEDB5WWKT8q+9Z/4MuFXmYQvQHrdvI1yuYfXSLUqN
|
17
|
+
VeH4j7V25nQXBbB1zCvHmjP2/t00EwhRh1Z9iNA74eukRJrzvMvgugSioVc3PpDx
|
18
|
+
yb3+7kT68iE3LHWWW0If0ENb3CX6/OyAiJRG7kMCgYEA0//0+B9+ZcRcb+cc3IIX
|
19
|
+
XFb25gD/Um67zDScG/JF+oLMVDL7e5M2a0Zr45aC5DeF7zkwUgrp4Cy88XWXPWUT
|
20
|
+
AfZ0RmiobLuWX7k/TtxnVGwjJKjlXAFf049TtKKSOgMaUYJ4ZcDQ1YmNskDINtEk
|
21
|
+
/k72LVjQ6611EzUjriDvZRkCgYAmtAPHJw59Yqb1GaB6B9ZuVedLFCyRKJDd4ABQ
|
22
|
+
auQno3DpcNtFDGL/iEi5pwWR/lJVI9AavJ9ETOhmlsFQ1svksF0U0cavq2blXLT+
|
23
|
+
NdM9x+WmD3iSi9gea5AVVdWLmDFPuQEP3GZcf29YvwtW1ESkyETbsz19DclRzeT/
|
24
|
+
F8IhiwKBgCrTlgDzZrvMKzD2VHNPLkr2ixJwEolTQFwhklAFeFvlUkI0XwBHkfwS
|
25
|
+
hQ+EQosZaPIQ5pupn8UFmpfGpv7f4vyTSVtbkay7eBIgFY8jPZFkM1zqtgwRerN1
|
26
|
+
5HNArAuzAH9LiauuZrAhFolwPfEdSWxvJhvfPE/aM5OpbQRUyQb4
|
27
|
+
-----END RSA PRIVATE KEY-----
|
@@ -44,11 +44,11 @@ describe "TARGET_BULK_BYTES", :integration => true do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
describe "indexing"
|
47
|
+
describe "indexing" do
|
48
48
|
let(:event) { LogStash::Event.new("message" => "Hello World!", "type" => type) }
|
49
49
|
let(:index) { 10.times.collect { rand(10).to_s }.join("") }
|
50
50
|
let(:type) { 10.times.collect { rand(10).to_s }.join("") }
|
51
|
-
let(:event_count) {
|
51
|
+
let(:event_count) { 1 + rand(2) }
|
52
52
|
let(:config) { "not implemented" }
|
53
53
|
let(:events) { event_count.times.map { event }.to_a }
|
54
54
|
subject { LogStash::Outputs::ElasticSearch.new(config) }
|
@@ -64,7 +64,7 @@ describe "indexing", :integration => true do
|
|
64
64
|
subject.register
|
65
65
|
end
|
66
66
|
|
67
|
-
shared_examples "an indexer" do
|
67
|
+
shared_examples "an indexer" do |secure|
|
68
68
|
it "ships events" do
|
69
69
|
subject.multi_receive(events)
|
70
70
|
|
@@ -84,8 +84,20 @@ describe "indexing", :integration => true do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
it "sets the correct content-type header" do
|
87
|
+
expected_manticore_opts = {:headers => {"Content-Type" => "application/json"}, :body => anything}
|
88
|
+
if secure
|
89
|
+
expected_manticore_opts = {
|
90
|
+
:headers => {"Content-Type" => "application/json"},
|
91
|
+
:body => anything,
|
92
|
+
:auth => {
|
93
|
+
:user => user,
|
94
|
+
:password => password,
|
95
|
+
:eager => true
|
96
|
+
}}
|
97
|
+
end
|
98
|
+
|
87
99
|
expect(subject.client.pool.adapter.client).to receive(:send).
|
88
|
-
with(anything, anything,
|
100
|
+
with(anything, anything, expected_manticore_opts).
|
89
101
|
and_call_original
|
90
102
|
subject.multi_receive(events)
|
91
103
|
end
|
@@ -115,15 +127,15 @@ describe "indexing", :integration => true do
|
|
115
127
|
describe "a secured indexer", :secure_integration => true do
|
116
128
|
let(:user) { "simpleuser" }
|
117
129
|
let(:password) { "abc123" }
|
118
|
-
let(:cacert) { "spec/fixtures/
|
119
|
-
let(:es_url) {"https://localhost:
|
130
|
+
let(:cacert) { "spec/fixtures/test_certs/test.crt" }
|
131
|
+
let(:es_url) {"https://localhost:9200"}
|
120
132
|
let(:config) do
|
121
133
|
{
|
122
|
-
"hosts" => ["localhost:
|
134
|
+
"hosts" => ["localhost:9200"],
|
123
135
|
"user" => user,
|
124
136
|
"password" => password,
|
125
137
|
"ssl" => true,
|
126
|
-
"cacert" => "spec/fixtures/
|
138
|
+
"cacert" => "spec/fixtures/test_certs/test.crt",
|
127
139
|
"index" => index
|
128
140
|
}
|
129
141
|
end
|
@@ -139,30 +151,26 @@ describe "indexing", :integration => true do
|
|
139
151
|
}
|
140
152
|
}
|
141
153
|
end
|
142
|
-
it_behaves_like("an indexer")
|
154
|
+
it_behaves_like("an indexer", true)
|
143
155
|
|
144
156
|
describe "with a password requiring escaping" do
|
145
|
-
let(:user) { "
|
157
|
+
let(:user) { "f@ncyuser" }
|
146
158
|
let(:password) { "ab%12#" }
|
147
159
|
|
148
|
-
include_examples("an indexer")
|
160
|
+
include_examples("an indexer", true)
|
149
161
|
end
|
150
162
|
|
151
|
-
describe "with a password requiring escaping in the URL" do
|
163
|
+
describe "with a user/password requiring escaping in the URL" do
|
152
164
|
let(:config) do
|
153
165
|
{
|
154
|
-
"hosts" => ["https://#{user}:#{CGI.escape(password)}@localhost:
|
166
|
+
"hosts" => ["https://#{CGI.escape(user)}:#{CGI.escape(password)}@localhost:9200"],
|
155
167
|
"ssl" => true,
|
156
|
-
"cacert" => "spec/fixtures/
|
168
|
+
"cacert" => "spec/fixtures/test_certs/test.crt",
|
157
169
|
"index" => index
|
158
170
|
}
|
159
171
|
end
|
160
172
|
|
161
|
-
|
162
|
-
include_examples("an indexer")
|
163
|
-
rescue => e
|
164
|
-
require 'pry'; binding.pry
|
165
|
-
end
|
173
|
+
include_examples("an indexer", true)
|
166
174
|
end
|
167
175
|
end
|
168
176
|
end
|
@@ -7,7 +7,7 @@ describe LogStash::Outputs::ElasticSearch::HttpClientBuilder do
|
|
7
7
|
describe "auth setup with url encodable passwords" do
|
8
8
|
let(:klass) { LogStash::Outputs::ElasticSearch::HttpClientBuilder }
|
9
9
|
let(:user) { "foo@bar"}
|
10
|
-
let(:password) {"
|
10
|
+
let(:password) {"baz@blah" }
|
11
11
|
let(:password_secured) do
|
12
12
|
secured = double("password")
|
13
13
|
allow(secured).to receive(:value).and_return(password)
|
@@ -17,20 +17,12 @@ describe LogStash::Outputs::ElasticSearch::HttpClientBuilder do
|
|
17
17
|
let(:logger) { mock("logger") }
|
18
18
|
let(:auth_setup) { klass.setup_basic_auth(double("logger"), {"user" => user, "password" => password_secured}) }
|
19
19
|
|
20
|
-
it "should return the user
|
21
|
-
expect(auth_setup[:user]).to eql(user)
|
20
|
+
it "should return the user escaped" do
|
21
|
+
expect(auth_setup[:user]).to eql(CGI.escape(user))
|
22
22
|
end
|
23
23
|
|
24
|
-
it "should return the password
|
25
|
-
expect(auth_setup[:password]).to eql(password)
|
26
|
-
end
|
27
|
-
|
28
|
-
context "passwords that need escaping" do
|
29
|
-
let(:password) { "foo@bar#" }
|
30
|
-
|
31
|
-
it "should escape the password" do
|
32
|
-
expect(auth_setup[:password]).to eql("foo%40bar%23")
|
33
|
-
end
|
24
|
+
it "should return the password escaped" do
|
25
|
+
expect(auth_setup[:password]).to eql(CGI.escape(password))
|
34
26
|
end
|
35
27
|
end
|
36
28
|
|
@@ -171,13 +171,15 @@ describe "outputs/elasticsearch" do
|
|
171
171
|
end
|
172
172
|
|
173
173
|
describe "without a port specified" do
|
174
|
+
let(:options) { super.merge('hosts' => 'localhost') }
|
174
175
|
it "should properly set the default port (9200) on the HTTP client" do
|
175
176
|
expect(manticore_url.port).to eql(9200)
|
176
177
|
end
|
177
178
|
end
|
178
179
|
describe "with a port other than 9200 specified" do
|
180
|
+
let(:options) { super.merge('hosts' => 'localhost:9202') }
|
179
181
|
it "should properly set the specified port on the HTTP client" do
|
180
|
-
expect(
|
182
|
+
expect(manticore_url.port).to eql(9202)
|
181
183
|
end
|
182
184
|
end
|
183
185
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-output-elasticsearch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.3.
|
4
|
+
version: 7.3.7
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -230,6 +230,10 @@ files:
|
|
230
230
|
- spec/fixtures/scripts/painless/scripted_update.painless
|
231
231
|
- spec/fixtures/scripts/painless/scripted_update_nested.painless
|
232
232
|
- spec/fixtures/scripts/painless/scripted_upsert.painless
|
233
|
+
- spec/fixtures/test_certs/ca/ca.crt
|
234
|
+
- spec/fixtures/test_certs/ca/ca.key
|
235
|
+
- spec/fixtures/test_certs/test.crt
|
236
|
+
- spec/fixtures/test_certs/test.key
|
233
237
|
- spec/integration/outputs/compressed_indexing_spec.rb
|
234
238
|
- spec/integration/outputs/create_spec.rb
|
235
239
|
- spec/integration/outputs/delete_spec.rb
|
@@ -290,6 +294,10 @@ test_files:
|
|
290
294
|
- spec/fixtures/scripts/painless/scripted_update.painless
|
291
295
|
- spec/fixtures/scripts/painless/scripted_update_nested.painless
|
292
296
|
- spec/fixtures/scripts/painless/scripted_upsert.painless
|
297
|
+
- spec/fixtures/test_certs/ca/ca.crt
|
298
|
+
- spec/fixtures/test_certs/ca/ca.key
|
299
|
+
- spec/fixtures/test_certs/test.crt
|
300
|
+
- spec/fixtures/test_certs/test.key
|
293
301
|
- spec/integration/outputs/compressed_indexing_spec.rb
|
294
302
|
- spec/integration/outputs/create_spec.rb
|
295
303
|
- spec/integration/outputs/delete_spec.rb
|