fluent-plugin-syslog-tls 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d451a9db525bf51ce92a8fb6ba314e07ef4fde7
4
- data.tar.gz: 578fa7e673a40b1a469bb7eb70681f0cfe102878
3
+ metadata.gz: 324422e8c80df4ca6f7e9f1ad4cf14d96ad189a1
4
+ data.tar.gz: 69868f4d0613caa60ea5b931991111c1265996c9
5
5
  SHA512:
6
- metadata.gz: e8f97eb7e0028c5a41735c8c474128b0ec6181aaac527e5772c984a22ee9ba4e5e424cd1aceae806bebe5f42b4768e3647d8d3d07a44e4c0db14b630e7660a55
7
- data.tar.gz: d8121c0078122038002ccb99c7888a125656e3728d2a75588408ccbd55e23563d5d5ce1ac6a7945ee68c8933c78549e401af02e2b76d7791360d0bd263123ee9
6
+ metadata.gz: afb23e11616650e54e81c0053aa144549166f1db125abce497f3c4cf2804d382e2a9b210b9175148b87615eccb2019485b470b29da8d35219279bb24c840c292
7
+ data.tar.gz: 7e2956875721d149ead943fce796df6dc5ef277a996f8d16b1632b3c095cae3d54c7eeaf606a8f23a7a657575bc217b0dfd6cf18ab49a6fedffa95ed2da54f31
data/.gitignore CHANGED
@@ -2,7 +2,6 @@
2
2
  *.rbc
3
3
  /.config
4
4
  /coverage/
5
- /Gemfile.lock
6
5
  /InstalledFiles
7
6
  /pkg/
8
7
  /spec/reports/
@@ -30,8 +29,8 @@ build/
30
29
  # for a library or gem, you might want to ignore these files since the code is
31
30
  # intended to run in multiple environments; otherwise, check them in:
32
31
  # Gemfile.lock
33
- # .ruby-version
34
- # .ruby-gemset
32
+ .ruby-version
33
+ .ruby-gemset
35
34
 
36
35
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
37
36
  .rvmrc
@@ -1,3 +1,9 @@
1
+ #### 1.2.0
2
+
3
+ * Improve compliance with Fluentd 0.14 API.
4
+ * Eliminate excess Message#header object creation.
5
+
6
+
1
7
  #### 1.1.0
2
8
 
3
9
  * Renamed `cert` and `key` to `client_cert` and `client_key` respectively.
@@ -11,7 +17,14 @@
11
17
  * Standard fluent formatting plugins are supported. Json output remains the default.
12
18
  * `token` (Structured Data in syslog terms) is now optional, for syslog hosts that don't require it.
13
19
  * Message payload in the syslog packet no longer duplicates Time or includes Tag by default.
20
+ * Requires Fluent 0.14.
21
+
22
+
23
+ #### 0.5.0
24
+
25
+ Comparable to v1.0.0, but compatible with Fluent 0.12.
26
+
14
27
 
28
+ #### < 0.2.0
15
29
 
16
- #### < 1.0.0
17
30
  From [Fluent::Plugin::SumologicCloudSyslog](https://github.com/acquia/fluent-plugin-sumologic-cloud-syslog)
@@ -0,0 +1,84 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fluent-plugin-syslog-tls (1.2.0)
5
+ fluentd (~> 0.14.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ addressable (2.5.2)
11
+ public_suffix (>= 2.0.2, < 4.0)
12
+ cool.io (1.5.3)
13
+ coveralls (0.8.21)
14
+ json (>= 1.8, < 3)
15
+ simplecov (~> 0.14.1)
16
+ term-ansicolor (~> 1.3)
17
+ thor (~> 0.19.4)
18
+ tins (~> 1.6)
19
+ crack (0.4.3)
20
+ safe_yaml (~> 1.0.0)
21
+ docile (1.1.5)
22
+ fluentd (0.14.24)
23
+ cool.io (>= 1.4.5, < 2.0.0)
24
+ http_parser.rb (>= 0.5.1, < 0.7.0)
25
+ msgpack (>= 0.7.0, < 2.0.0)
26
+ ruby_dig (~> 0.0.2)
27
+ serverengine (>= 2.0.4, < 3.0.0)
28
+ sigdump (~> 0.2.2)
29
+ strptime (~> 0.1.7)
30
+ tzinfo (~> 1.0)
31
+ tzinfo-data (~> 1.0)
32
+ yajl-ruby (~> 1.0)
33
+ hashdiff (0.3.7)
34
+ http_parser.rb (0.6.0)
35
+ json (2.1.0)
36
+ minitest (5.10.3)
37
+ minitest-stub_any_instance (1.0.1)
38
+ msgpack (1.1.0)
39
+ power_assert (1.1.1)
40
+ public_suffix (3.0.1)
41
+ rake (12.3.0)
42
+ ruby_dig (0.0.2)
43
+ safe_yaml (1.0.4)
44
+ serverengine (2.0.5)
45
+ sigdump (~> 0.2.2)
46
+ sigdump (0.2.4)
47
+ simplecov (0.14.1)
48
+ docile (~> 1.1.0)
49
+ json (>= 1.8, < 3)
50
+ simplecov-html (~> 0.10.0)
51
+ simplecov-html (0.10.2)
52
+ strptime (0.1.9)
53
+ term-ansicolor (1.6.0)
54
+ tins (~> 1.0)
55
+ test-unit (3.2.6)
56
+ power_assert
57
+ thor (0.19.4)
58
+ thread_safe (0.3.6)
59
+ tins (1.16.0)
60
+ tzinfo (1.2.4)
61
+ thread_safe (~> 0.1)
62
+ tzinfo-data (1.2017.3)
63
+ tzinfo (>= 1.0.0)
64
+ webmock (2.3.2)
65
+ addressable (>= 2.3.6)
66
+ crack (>= 0.3.2)
67
+ hashdiff
68
+ yajl-ruby (1.3.1)
69
+
70
+ PLATFORMS
71
+ ruby
72
+
73
+ DEPENDENCIES
74
+ coveralls
75
+ fluent-plugin-syslog-tls!
76
+ minitest (~> 5.8)
77
+ minitest-stub_any_instance (~> 1.0.0)
78
+ rake
79
+ simplecov (~> 0.11)
80
+ test-unit (~> 3.1)
81
+ webmock (~> 2.0)
82
+
83
+ BUNDLED WITH
84
+ 1.15.4
data/README.md CHANGED
@@ -8,7 +8,7 @@ Tested with [Papertrail](https://papertrailapp.com) and should also work with [S
8
8
 
9
9
 
10
10
  ## Installation
11
- ---
11
+
12
12
  ```sh
13
13
  $ gem install fluent-plugin-syslog-tls
14
14
  ```
@@ -17,11 +17,11 @@ or
17
17
  $ td-agent-gem install fluent-plugin-syslog-tls
18
18
  ```
19
19
 
20
- Note: `fluent-plugin-syslog-tls` is compatible with Fluent 0.14.
20
+ Note: `fluent-plugin-syslog-tls` is compatible with Fluent 0.14. For Fluent 0.12, see the `fluent-0.12` branch.
21
21
 
22
22
 
23
23
  ## Configuration
24
- ---
24
+
25
25
  In your Fluentd configuration, use `@type syslog_tls`. Examples:
26
26
 
27
27
  Sumologic:
@@ -54,7 +54,7 @@ This plugin is derived from [Fluent::Plugin::SumologicCloudSyslog](https://githu
54
54
 
55
55
 
56
56
  ## License
57
- ---
57
+
58
58
  Except as otherwise noted this software is licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
59
59
 
60
60
  Licensed under the Apache License, Version 2.0 (the "License");
@@ -33,11 +33,10 @@ Gem::Specification.new do |s|
33
33
  s.required_ruby_version = '>= 2.3.0'
34
34
 
35
35
  s.add_runtime_dependency 'fluentd', '~> 0.14.0'
36
- s.add_runtime_dependency 'fluent-mixin-config-placeholders', '~> 0.3'
37
36
 
38
37
  s.add_development_dependency 'minitest', '~> 5.8'
39
38
  s.add_development_dependency 'minitest-stub_any_instance', '~> 1.0.0'
40
- s.add_development_dependency 'rake', '~> 10.5'
39
+ s.add_development_dependency 'rake'
41
40
  s.add_development_dependency 'test-unit', '~> 3.1'
42
41
  s.add_development_dependency 'webmock', '~> 2.0'
43
42
  s.add_development_dependency 'simplecov', '~> 0.11'
@@ -13,16 +13,14 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- require 'fluent/mixin/config_placeholders'
17
16
  require 'socket'
17
+ require 'syslog_tls/logger'
18
+ require 'fluent/plugin/output'
18
19
 
19
- module Fluent
20
- class SyslogTlsOutput < Fluent::Output
20
+ module Fluent::Plugin
21
+ class SyslogTlsOutput < Output
21
22
  Fluent::Plugin.register_output('syslog_tls', self)
22
23
 
23
- include Fluent::Mixin::ConfigPlaceholders
24
- include Fluent::HandleTagNameMixin
25
-
26
24
  helpers :inject, :formatter, :compat_parameters
27
25
 
28
26
  DEFAULT_FORMAT_TYPE = 'json'
@@ -55,13 +53,12 @@ module Fluent
55
53
 
56
54
  def initialize
57
55
  super
58
- require 'syslog_tls/logger'
59
56
  @loggers = {}
60
57
  end
61
58
 
62
59
  def shutdown
63
- super
64
60
  @loggers.values.each(&:close)
61
+ super
65
62
  end
66
63
 
67
64
  # This method is called before starting.
@@ -114,8 +111,7 @@ module Fluent
114
111
  @formatter.format(tag, time, record)
115
112
  end
116
113
 
117
- def emit(tag, es, chain)
118
- chain.next
114
+ def process(tag, es)
119
115
  es.each do |time, record|
120
116
  record.each_pair do |_, v|
121
117
  v.force_encoding('utf-8') if v.is_a?(String)
@@ -25,7 +25,8 @@ module SyslogTls
25
25
 
26
26
  # All headers by specification wrapped in single object
27
27
  class Header
28
- attr_accessor :facility, :severity, :version, :timestamp, :hostname, :app_name, :procid, :msgid
28
+ attr_accessor :version, :hostname, :app_name, :procid, :msgid
29
+ attr_reader :facility, :severity, :timestamp
29
30
 
30
31
  FACILITIES = {}
31
32
  SEVERITIES = {}
@@ -110,12 +111,16 @@ module SyslogTls
110
111
 
111
112
  # Message represents full message that can be sent to syslog
112
113
  class Message
113
- attr_accessor :header, :structured_data, :msg
114
+ attr_accessor :structured_data, :msg
115
+ attr_writer :header
114
116
 
115
117
  def initialize
116
118
  @msg = ''
117
119
  @structured_data = []
118
- @header = Header.new
120
+ end
121
+
122
+ def header
123
+ @header ||= Header.new
119
124
  end
120
125
 
121
126
  def assemble
@@ -161,7 +161,7 @@ module SyslogTls
161
161
  end
162
162
 
163
163
  def select_with_timeout(tcp, type)
164
- o = case type
164
+ case type
165
165
  when :connect_read
166
166
  args = [[tcp], nil, nil, CONNECT_TIMEOUT]
167
167
  when :connect_write
@@ -14,5 +14,5 @@
14
14
  # limitations under the License.
15
15
 
16
16
  module SyslogTls
17
- VERSION = '1.1.0'
17
+ VERSION = '1.2.0'
18
18
  end
@@ -18,6 +18,7 @@ require 'ssl'
18
18
  require 'date'
19
19
  require 'minitest/mock'
20
20
  require 'fluent/plugin/out_syslog_tls'
21
+ require 'fluent/test/driver/output'
21
22
 
22
23
  class SyslogTlsOutputTest < Test::Unit::TestCase
23
24
  include SSLTestHelper
@@ -27,8 +28,8 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
27
28
  @driver = nil
28
29
  end
29
30
 
30
- def driver(tag='test', conf='')
31
- @driver ||= Fluent::Test::OutputTestDriver.new(Fluent::SyslogTlsOutput, tag).configure(conf)
31
+ def driver(conf='')
32
+ @driver ||= Fluent::Test::Driver::Output.new(Fluent::Plugin::SyslogTlsOutput).configure(conf)
32
33
  end
33
34
 
34
35
  def sample_record
@@ -45,7 +46,7 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
45
46
  def mock_logger(token='TOKEN')
46
47
  io = StringIO.new
47
48
  io.set_encoding('utf-8')
48
- logger = ::SyslogTls::Logger.new(io, token)
49
+ ::SyslogTls::Logger.new(io, token)
49
50
  end
50
51
 
51
52
  def test_configure
@@ -56,7 +57,7 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
56
57
  client_key
57
58
  token 1234567890
58
59
  }
59
- instance = driver('test', config).instance
60
+ instance = driver(config).instance
60
61
 
61
62
  assert_equal 'syslog.collection.us1.sumologic.com', instance.host
62
63
  assert_equal '6514', instance.port
@@ -72,16 +73,14 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
72
73
  client_cert
73
74
  client_key
74
75
  }
75
- instance = driver('test', config).instance
76
+ instance = driver(config).instance
76
77
 
77
78
  time = Time.now
78
79
  record = sample_record
79
80
  logger = mock_logger(instance.token)
80
81
 
81
82
  instance.stub(:new_logger, logger) do
82
- chain = Minitest::Mock.new
83
- chain.expect(:next, nil)
84
- instance.emit('test', {time.to_i => record}, chain)
83
+ instance.process('test', {time.to_i => record})
85
84
  end
86
85
 
87
86
  assert_equal "<134>1 #{time.to_datetime.rfc3339} - - - - - #{record.to_json.to_s}\n\n", logger.transport.string
@@ -99,16 +98,14 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
99
98
  app_name_key app_name
100
99
  msgid_key msgid
101
100
  }
102
- instance = driver('test', config).instance
101
+ instance = driver(config).instance
103
102
 
104
103
  time = Time.now
105
104
  record = sample_record
106
105
  logger = mock_logger
107
106
 
108
107
  instance.stub(:new_logger, logger) do
109
- chain = Minitest::Mock.new
110
- chain.expect(:next, nil)
111
- instance.emit('test', {time.to_i => record}, chain)
108
+ instance.process('test', {time.to_i => record})
112
109
  end
113
110
 
114
111
  assert_true logger.transport.string.start_with?("<134>1 #{time.to_datetime.rfc3339} host app #{$$} 1000 [TOKEN]")
@@ -123,16 +120,14 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
123
120
  token 1234567890
124
121
  severity_key severity
125
122
  }
126
- instance = driver('test', config).instance
123
+ instance = driver(config).instance
127
124
 
128
125
  time = Time.now
129
126
  record = sample_record
130
127
  logger = mock_logger
131
128
 
132
129
  instance.stub(:new_logger, logger) do
133
- chain = Minitest::Mock.new
134
- chain.expect(:next, nil)
135
- instance.emit('test', {time.to_i => record}, chain)
130
+ instance.process('test', {time.to_i => record})
136
131
  end
137
132
 
138
133
  assert_true logger.transport.string.start_with?("<128>1")
@@ -148,16 +143,14 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
148
143
  format out_file
149
144
  localtime false
150
145
  }
151
- instance = driver('test', config).instance
146
+ instance = driver(config).instance
152
147
 
153
148
  time = Time.now
154
149
  record = sample_record
155
150
  logger = mock_logger
156
151
 
157
152
  instance.stub(:new_logger, logger) do
158
- chain = Minitest::Mock.new
159
- chain.expect(:next, nil)
160
- instance.emit('test', {time.to_i => record}, chain)
153
+ instance.process('test', {time.to_i => record})
161
154
  end
162
155
 
163
156
  formatted_time = time.dup.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
@@ -186,13 +179,10 @@ class SyslogTlsOutputTest < Test::Unit::TestCase
186
179
  app_name_key app_name
187
180
  msgid_key msgid
188
181
  }
189
- instance = driver('test', config).instance
190
-
191
- chain = Minitest::Mock.new
192
- chain.expect(:next, nil)
182
+ instance = driver(config).instance
193
183
 
194
184
  SyslogTls::SSLTransport.stub_any_instance(:get_ssl_connection, ssl_client) do
195
- instance.emit('test', {time.to_i => record}, chain)
185
+ instance.process('test', {time.to_i => record})
196
186
  end
197
187
 
198
188
  st.join
@@ -19,12 +19,6 @@ SimpleCov.start
19
19
 
20
20
  Coveralls.wear! if ENV['TRAVIS']
21
21
 
22
- # Fluentd sets default encoding to ASCII-8BIT, but coverall can load git data which can contain UTF-8 characters
23
- at_exit do
24
- Encoding.default_internal = 'UTF-8' if defined?(Encoding) && Encoding.respond_to?(:default_internal)
25
- Encoding.default_external = 'UTF-8' if defined?(Encoding) && Encoding.respond_to?(:default_external)
26
- end
27
-
28
22
  require 'test/unit'
29
23
  require 'fluent/test'
30
24
  require 'minitest/pride'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-syslog-tls
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thomas morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-25 00:00:00.000000000 Z
11
+ date: 2017-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.14.0
27
- - !ruby/object:Gem::Dependency
28
- name: fluent-mixin-config-placeholders
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.3'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.3'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: minitest
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +56,16 @@ dependencies:
70
56
  name: rake
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - "~>"
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: '10.5'
61
+ version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - "~>"
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: '10.5'
68
+ version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: test-unit
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -134,6 +120,7 @@ files:
134
120
  - ".travis.yml"
135
121
  - CHANGELOG.md
136
122
  - Gemfile
123
+ - Gemfile.lock
137
124
  - LICENSE
138
125
  - README.md
139
126
  - Rakefile
@@ -173,7 +160,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
173
160
  version: '0'
174
161
  requirements: []
175
162
  rubyforge_project:
176
- rubygems_version: 2.5.2
163
+ rubygems_version: 2.6.13
177
164
  signing_key:
178
165
  specification_version: 4
179
166
  summary: Fluent Syslog TLS output plugin