logstash-input-tcp 3.0.6 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -6
- data/Gemfile +3 -1
- data/lib/logstash/inputs/tcp.rb +14 -8
- data/logstash-input-tcp.gemspec +5 -2
- data/spec/inputs/tcp_spec.rb +17 -17
- metadata +28 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa0f656c6f22603752ced42c300389f6cb23370e
|
4
|
+
data.tar.gz: 6dfceac238b13dd4d9eeaf00dbb2960aacf2f28b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a5d0e142600f59ff10a4c83f579bcede1cc8197f19ded98c12ed115ec9a13dc6dc3a4d9ac9f334bb82ca074d4acf5d52a7c6fdf3f9120207e7f5f4b5c768951
|
7
|
+
data.tar.gz: cfcbaf32298b674747fff0f2b3ce8a5abccc38ccb31c7cec3d358ee2946b7946ca03c58bcc47592a08e78f7e0a7b659270fec1d828de6b456145b9786a5ec82f
|
data/CHANGELOG.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
##
|
2
|
-
|
1
|
+
## 4.0.0
|
2
|
+
- Update the plugin to the version 2.0 of the plugin api, this change is required for Logstash 5.0 compatibility. See https://github.com/elastic/logstash/issues/5141
|
3
3
|
# 3.0.5
|
4
4
|
- Fixed a bug where using a certificate with a passphrase wouldn't work.
|
5
5
|
# 3.0.4
|
6
|
-
|
6
|
+
- Depend on logstash-core-plugin-api instead of logstash-core, removing the need to mass update plugins on major releases of logstash
|
7
7
|
# 3.0.3
|
8
|
-
|
8
|
+
- New dependency requirements for logstash-core for the 5.0 release
|
9
9
|
## 3.0.2
|
10
|
-
|
11
|
-
|
10
|
+
- Fixed a bug where previous connection would accidentally be closed when accepting new socket connection
|
11
|
+
- Fixed an issue with log message which used a closed socket's peer address
|
12
12
|
|
13
13
|
## 3.0.1
|
14
14
|
- properly convert sslsubject to string before assigning to event field, added specs, see https://github.com/logstash-plugins/logstash-input-tcp/pull/38
|
data/Gemfile
CHANGED
data/lib/logstash/inputs/tcp.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# encoding: utf-8
|
1
|
+
# encoding: utf-8
|
2
2
|
require "logstash/inputs/base"
|
3
3
|
require "logstash/util/socket_peer"
|
4
4
|
|
@@ -53,6 +53,10 @@ class LogStash::Inputs::Tcp < LogStash::Inputs::Base
|
|
53
53
|
# Useful when the CA chain is not necessary in the system store.
|
54
54
|
config :ssl_extra_chain_certs, :validate => :array, :default => []
|
55
55
|
|
56
|
+
HOST_FIELD = "host".freeze
|
57
|
+
PORT_FIELD = "port".freeze
|
58
|
+
SSLSUBJECT_FIELD = "sslsubject".freeze
|
59
|
+
|
56
60
|
def initialize(*args)
|
57
61
|
super(*args)
|
58
62
|
|
@@ -114,7 +118,7 @@ class LogStash::Inputs::Tcp < LogStash::Inputs::Base
|
|
114
118
|
server_connection_thread(output_queue, socket)
|
115
119
|
rescue OpenSSL::SSL::SSLError => e
|
116
120
|
# log error, close socket, accept next connection
|
117
|
-
@logger.
|
121
|
+
@logger.error("SSL Error", :exception => e, :backtrace => e.backtrace)
|
118
122
|
rescue => e
|
119
123
|
# if this exception occured while the plugin is stopping
|
120
124
|
# just ignore and exit
|
@@ -151,9 +155,10 @@ class LogStash::Inputs::Tcp < LogStash::Inputs::Base
|
|
151
155
|
peer = "#{client_address}:#{client_port}"
|
152
156
|
while !stop?
|
153
157
|
codec.decode(read(socket)) do |event|
|
154
|
-
event
|
155
|
-
event
|
156
|
-
event
|
158
|
+
event.set(HOST_FIELD, client_address) unless event.get(HOST_FIELD)
|
159
|
+
event.set(PORT_FIELD, client_port) unless event.get(PORT_FIELD)
|
160
|
+
event.set(SSLSUBJECT_FIELD, socket.peer_cert.subject.to_s) if @ssl_enable && @ssl_verify && event.get(SSLSUBJECT_FIELD).nil?
|
161
|
+
|
157
162
|
decorate(event)
|
158
163
|
output_queue << event
|
159
164
|
end
|
@@ -174,9 +179,10 @@ class LogStash::Inputs::Tcp < LogStash::Inputs::Base
|
|
174
179
|
socket.close rescue nil
|
175
180
|
|
176
181
|
codec.respond_to?(:flush) && codec.flush do |event|
|
177
|
-
event
|
178
|
-
event
|
179
|
-
event
|
182
|
+
event.set(HOST_FIELD, client_address) unless event.get(HOST_FIELD)
|
183
|
+
event.set(PORT_FIELD, client_port) unless event.get(PORT_FIELD)
|
184
|
+
event.set(SSLSUBJECT_FIELD, socket.peer_cert.subject.to_s) if @ssl_enable && @ssl_verify && event.get(SSLSUBJECT_FIELD).nil?
|
185
|
+
|
180
186
|
decorate(event)
|
181
187
|
output_queue << event
|
182
188
|
end
|
data/logstash-input-tcp.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-tcp'
|
3
|
-
s.version = '
|
3
|
+
s.version = '4.0.0'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "Read events over a TCP socket."
|
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"
|
@@ -19,8 +19,11 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "input" }
|
20
20
|
|
21
21
|
# Gem dependencies
|
22
|
-
s.add_runtime_dependency "logstash-core-plugin-api", "~>
|
22
|
+
s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
|
23
23
|
|
24
|
+
# line vs streaming codecs required for fix_streaming_codecs
|
25
|
+
# TODO: fix_streaming_codecs should be refactored to not
|
26
|
+
# require the codecs to be installed.
|
24
27
|
s.add_runtime_dependency 'logstash-codec-plain'
|
25
28
|
s.add_runtime_dependency 'logstash-codec-line'
|
26
29
|
s.add_runtime_dependency 'logstash-codec-json'
|
data/spec/inputs/tcp_spec.rb
CHANGED
@@ -59,7 +59,7 @@ describe LogStash::Inputs::Tcp do
|
|
59
59
|
|
60
60
|
insist { events.length } == event_count
|
61
61
|
event_count.times do |i|
|
62
|
-
insist { events[i]
|
62
|
+
insist { events[i].get("message") } == "#{i} ☹"
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -86,9 +86,9 @@ describe LogStash::Inputs::Tcp do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
# Make sure the 0xA3 latin-1 code converts correctly to UTF-8.
|
89
|
-
insist { event
|
90
|
-
insist { event
|
91
|
-
insist { event
|
89
|
+
insist { event.get("message").size } == 1
|
90
|
+
insist { event.get("message").bytesize } == 2
|
91
|
+
insist { event.get("message") } == "£"
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should read events with json codec" do
|
@@ -117,13 +117,13 @@ describe LogStash::Inputs::Tcp do
|
|
117
117
|
queue.pop
|
118
118
|
end
|
119
119
|
|
120
|
-
insist { event
|
121
|
-
insist { event
|
122
|
-
insist { event
|
120
|
+
insist { event.get("hello") } == data["hello"]
|
121
|
+
insist { event.get("foo").to_a } == data["foo"] # to_a to cast Java ArrayList produced by JrJackson
|
122
|
+
insist { event.get("baz") } == data["baz"]
|
123
123
|
|
124
124
|
# Make sure the tcp input, w/ json codec, uses the event's 'host' value,
|
125
125
|
# if present, instead of providing its own
|
126
|
-
insist { event
|
126
|
+
insist { event.get("host") } == data["host"]
|
127
127
|
end
|
128
128
|
|
129
129
|
it "should read events with json codec (testing 'host' handling)" do
|
@@ -149,7 +149,7 @@ describe LogStash::Inputs::Tcp do
|
|
149
149
|
queue.pop
|
150
150
|
end
|
151
151
|
|
152
|
-
insist { event
|
152
|
+
insist { event.get("hello") } == data["hello"]
|
153
153
|
insist { event }.include?("host")
|
154
154
|
end
|
155
155
|
|
@@ -184,10 +184,10 @@ describe LogStash::Inputs::Tcp do
|
|
184
184
|
end
|
185
185
|
|
186
186
|
events.each_with_index do |event, idx|
|
187
|
-
insist { event
|
188
|
-
insist { event
|
189
|
-
insist { event
|
190
|
-
insist { event
|
187
|
+
insist { event.get("hello") } == data["hello"]
|
188
|
+
insist { event.get("foo").to_a } == data["foo"] # to_a to cast Java ArrayList produced by JrJackson
|
189
|
+
insist { event.get("baz") } == data["baz"]
|
190
|
+
insist { event.get("idx") } == idx + 1
|
191
191
|
end # do
|
192
192
|
end # describe
|
193
193
|
|
@@ -211,11 +211,11 @@ describe LogStash::Inputs::Tcp do
|
|
211
211
|
end
|
212
212
|
|
213
213
|
# since each message is sent on its own tcp connection & thread, exact receiving order cannot be garanteed
|
214
|
-
event_count.times.collect{queue.pop}.sort_by{|event| event
|
214
|
+
event_count.times.collect{queue.pop}.sort_by{|event| event.get("message")}
|
215
215
|
end
|
216
216
|
|
217
217
|
event_count.times do |i|
|
218
|
-
insist { events[i]
|
218
|
+
insist { events[i].get("message") } == "#{i}"
|
219
219
|
end
|
220
220
|
end
|
221
221
|
|
@@ -252,8 +252,8 @@ describe LogStash::Inputs::Tcp do
|
|
252
252
|
|
253
253
|
context "when ssl_enable is true" do
|
254
254
|
let(:pki) { Flores::PKI.generate }
|
255
|
-
let(:certificate) { pki[0] }
|
256
|
-
let(:key) { pki[1] }
|
255
|
+
let(:certificate) { pki[0] }
|
256
|
+
let(:key) { pki[1] }
|
257
257
|
let(:certificate_file) { Stud::Temporary.file }
|
258
258
|
let(:key_file) { Stud::Temporary.file }
|
259
259
|
let(:queue) { Queue.new }
|
metadata
CHANGED
@@ -1,128 +1,130 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-tcp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Elastic
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06
|
11
|
+
date: 2016-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
+
name: logstash-core-plugin-api
|
14
15
|
requirement: !ruby/object:Gem::Requirement
|
15
16
|
requirements:
|
16
17
|
- - "~>"
|
17
18
|
- !ruby/object:Gem::Version
|
18
|
-
version: '
|
19
|
-
name: logstash-core-plugin-api
|
20
|
-
prerelease: false
|
19
|
+
version: '2.0'
|
21
20
|
type: :runtime
|
21
|
+
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
+
name: logstash-codec-plain
|
28
29
|
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
31
|
- - ">="
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
|
-
name: logstash-codec-plain
|
34
|
-
prerelease: false
|
35
34
|
type: :runtime
|
35
|
+
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
+
name: logstash-codec-line
|
42
43
|
requirement: !ruby/object:Gem::Requirement
|
43
44
|
requirements:
|
44
45
|
- - ">="
|
45
46
|
- !ruby/object:Gem::Version
|
46
47
|
version: '0'
|
47
|
-
name: logstash-codec-line
|
48
|
-
prerelease: false
|
49
48
|
type: :runtime
|
49
|
+
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
+
name: logstash-codec-json
|
56
57
|
requirement: !ruby/object:Gem::Requirement
|
57
58
|
requirements:
|
58
59
|
- - ">="
|
59
60
|
- !ruby/object:Gem::Version
|
60
61
|
version: '0'
|
61
|
-
name: logstash-codec-json
|
62
|
-
prerelease: false
|
63
62
|
type: :runtime
|
63
|
+
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
name: logstash-codec-json_lines
|
70
71
|
requirement: !ruby/object:Gem::Requirement
|
71
72
|
requirements:
|
72
73
|
- - ">="
|
73
74
|
- !ruby/object:Gem::Version
|
74
75
|
version: '0'
|
75
|
-
name: logstash-codec-json_lines
|
76
|
-
prerelease: false
|
77
76
|
type: :runtime
|
77
|
+
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
+
name: logstash-devutils
|
84
85
|
requirement: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
87
|
- - ">="
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: '0'
|
89
|
-
name: logstash-devutils
|
90
|
-
prerelease: false
|
91
90
|
type: :development
|
91
|
+
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
+
name: flores
|
98
99
|
requirement: !ruby/object:Gem::Requirement
|
99
100
|
requirements:
|
100
101
|
- - "~>"
|
101
102
|
- !ruby/object:Gem::Version
|
102
103
|
version: 0.0.6
|
103
|
-
name: flores
|
104
|
-
prerelease: false
|
105
104
|
type: :development
|
105
|
+
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: 0.0.6
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
+
name: stud
|
112
113
|
requirement: !ruby/object:Gem::Requirement
|
113
114
|
requirements:
|
114
115
|
- - "~>"
|
115
116
|
- !ruby/object:Gem::Version
|
116
117
|
version: 0.0.22
|
117
|
-
name: stud
|
118
|
-
prerelease: false
|
119
118
|
type: :development
|
119
|
+
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.0.22
|
125
|
-
description: This gem is a Logstash plugin required to be installed on top of the
|
125
|
+
description: This gem is a Logstash plugin required to be installed on top of the
|
126
|
+
Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This
|
127
|
+
gem is not a stand-alone program
|
126
128
|
email: info@elastic.co
|
127
129
|
executables: []
|
128
130
|
extensions: []
|
@@ -144,7 +146,7 @@ licenses:
|
|
144
146
|
metadata:
|
145
147
|
logstash_plugin: 'true'
|
146
148
|
logstash_group: input
|
147
|
-
post_install_message:
|
149
|
+
post_install_message:
|
148
150
|
rdoc_options: []
|
149
151
|
require_paths:
|
150
152
|
- lib
|
@@ -159,9 +161,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
161
|
- !ruby/object:Gem::Version
|
160
162
|
version: '0'
|
161
163
|
requirements: []
|
162
|
-
rubyforge_project:
|
163
|
-
rubygems_version: 2.
|
164
|
-
signing_key:
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 2.5.1
|
166
|
+
signing_key:
|
165
167
|
specification_version: 4
|
166
168
|
summary: Read events over a TCP socket.
|
167
169
|
test_files:
|