fluent-plugin-secure-forward 0.2.0 → 0.2.1
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/fluent-plugin-secure-forward.gemspec +1 -1
- data/lib/fluent/plugin/out_secure_forward.rb +19 -23
- data/lib/fluent/plugin/output_node.rb +21 -5
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b0eb8491c4513104e1db78902eac9cfa5a4c28e
|
4
|
+
data.tar.gz: 903b7d2ca23e3ed23a6843475a2f0de546e59656
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27b2fb512c94a613c12300befce152fb4511ffcea9970ef8d32c33327b34923fbed585d43b3e2fad5322f2262a4af1833180815daeece2e0507c75fd6e828a99
|
7
|
+
data.tar.gz: 58dab1197ea8bf022d1f0dcce7858a0574d55781bac15ec8186c7f95e88950733160cd679c4ec928898104b32e2ab78c118df224f111857e618aeb5623e65706
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |gem|
|
3
3
|
gem.name = "fluent-plugin-secure-forward"
|
4
|
-
gem.version = "0.2.
|
4
|
+
gem.version = "0.2.1"
|
5
5
|
gem.authors = ["TAGOMORI Satoshi"]
|
6
6
|
gem.email = ["tagomoris@gmail.com"]
|
7
7
|
gem.summary = %q{Fluentd input/output plugin to forward over SSL with authentications}
|
@@ -129,17 +129,19 @@ module Fluent
|
|
129
129
|
node.start
|
130
130
|
end
|
131
131
|
@nodewatcher = Thread.new(&method(:node_watcher))
|
132
|
+
@nodewatcher.abort_on_exception = true
|
132
133
|
end
|
133
134
|
|
134
135
|
def node_watcher
|
135
136
|
reconnectings = Array.new(@nodes.size)
|
137
|
+
nodes_size = @nodes.size
|
136
138
|
|
137
139
|
loop do
|
138
140
|
sleep @reconnect_interval
|
139
141
|
|
140
142
|
log.trace "in node health watcher"
|
141
143
|
|
142
|
-
(0...
|
144
|
+
(0...nodes_size).each do |i|
|
143
145
|
log.trace "node health watcher for #{@nodes[i].host}"
|
144
146
|
|
145
147
|
next if @nodes[i].established? && ! @nodes[i].expired?
|
@@ -152,26 +154,24 @@ module Fluent
|
|
152
154
|
log.debug "reconnecting to node", :host => node.host, :port => node.port, :expire => node.expire, :expired => node.expired?
|
153
155
|
|
154
156
|
renewed = node.dup
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
rescue => e
|
160
|
-
log.debug "Some error occured on start of renewed connection", :error_class => e2.class, :error => e2, :host => renewed.host, :port => renewed.port
|
161
|
-
end
|
157
|
+
renewed.start
|
158
|
+
|
159
|
+
Thread.pass # to connection thread
|
160
|
+
reconnectings[i] = { :conn => renewed, :at => Time.now }
|
162
161
|
end
|
163
162
|
|
164
|
-
(0...
|
163
|
+
(0...nodes_size).each do |i|
|
165
164
|
next unless reconnectings[i]
|
166
165
|
|
166
|
+
log.trace "checking reconnecting node #{reconnectings[i][:conn].host}"
|
167
|
+
|
167
168
|
if reconnectings[i][:conn].established?
|
169
|
+
log.debug "connection established for reconnecting node"
|
168
170
|
oldconn = @nodes[i]
|
169
171
|
@nodes[i] = reconnectings[i][:conn]
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
log.debug "Some error occured on shutdown of expired connection", :error_class => e.class, :error => e, :host => renewed.host, :port => renewed.port
|
174
|
-
end
|
172
|
+
log.trace "old connection shutting down"
|
173
|
+
oldconn.shutdown if oldconn # connection object doesn't raise any exceptions
|
174
|
+
log.trace "old connection shutted down"
|
175
175
|
|
176
176
|
reconnectings[i] = nil
|
177
177
|
next
|
@@ -179,17 +179,13 @@ module Fluent
|
|
179
179
|
|
180
180
|
# not connected yet
|
181
181
|
|
182
|
-
next if reconnectings[i][:at]
|
182
|
+
next if reconnectings[i][:at] + @established_timeout > Time.now
|
183
183
|
|
184
184
|
# not connected yet, and timeout
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
timeout_conn.shutdown
|
190
|
-
rescue => e
|
191
|
-
log.debug "Some error occured on shutdown of timeout re-connection", :error_class => e.class, :error => e
|
192
|
-
end
|
185
|
+
timeout_conn = reconnectings[i][:conn]
|
186
|
+
log.debug "SSL connection is not established until timemout", :host => timeout_conn.host, :port => timeout_conn.port, :timeout => @established_timeout
|
187
|
+
reconnectings[i] = nil
|
188
|
+
timeout_conn.shutdown if timeout_conn # connection object doesn't raise any exceptions
|
193
189
|
end
|
194
190
|
end
|
195
191
|
end
|
@@ -59,6 +59,8 @@ class Fluent::SecureForwardOutput::Node
|
|
59
59
|
|
60
60
|
def start
|
61
61
|
@thread = Thread.new(&method(:connect))
|
62
|
+
## If you want to check code bug, turn this line enable
|
63
|
+
# @thread.abort_on_exception = true
|
62
64
|
end
|
63
65
|
|
64
66
|
def shutdown
|
@@ -189,7 +191,13 @@ class Fluent::SecureForwardOutput::Node
|
|
189
191
|
|
190
192
|
addr = @sender.hostname_resolver.getaddress(@host)
|
191
193
|
log.debug "create tcp socket to node", :host => @host, :address => addr, :port => @port
|
192
|
-
|
194
|
+
begin
|
195
|
+
sock = TCPSocket.new(addr, @port)
|
196
|
+
rescue => e
|
197
|
+
log.warn "failed to connect for secure-forward", :error_class => e.class, :error => e, :host => @host, :address => addr, :port => @port
|
198
|
+
@state = :failed
|
199
|
+
return
|
200
|
+
end
|
193
201
|
|
194
202
|
log.trace "changing socket options"
|
195
203
|
opt = [1, @sender.send_timeout.to_i].pack('I!I!') # { int l_onoff; int l_linger; }
|
@@ -204,10 +212,18 @@ class Fluent::SecureForwardOutput::Node
|
|
204
212
|
# TODO: context.ca_file = (ca_file_path)
|
205
213
|
# TODO: context.ciphers = (SSL Shared key chiper protocols)
|
206
214
|
|
207
|
-
log.debug "trying to connect ssl session", :host => @host, :
|
208
|
-
|
209
|
-
|
210
|
-
|
215
|
+
log.debug "trying to connect ssl session", :host => @host, :address => addr, :port => @port
|
216
|
+
begin
|
217
|
+
sslsession = OpenSSL::SSL::SSLSocket.new(sock, context)
|
218
|
+
rescue => e
|
219
|
+
log.warn "failed to establish SSL connection", :host => @host, :address => addr, :port => @port
|
220
|
+
end
|
221
|
+
|
222
|
+
unless sslsession.connect
|
223
|
+
log.debug "failed to connect", :host => @host, :address => addr, :port => @port
|
224
|
+
@state = :failed
|
225
|
+
return
|
226
|
+
end
|
211
227
|
log.debug "ssl session connected", :host => @host, :port => @port
|
212
228
|
|
213
229
|
begin
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-secure-forward
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TAGOMORI Satoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -126,4 +126,3 @@ test_files:
|
|
126
126
|
- test/plugin/test_in_secure_forward.rb
|
127
127
|
- test/plugin/test_input_session.rb
|
128
128
|
- test/plugin/test_out_secure_forward.rb
|
129
|
-
has_rdoc:
|