fluent-plugin-remote_syslog 1.0.0 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5b7602139f0aea954fe6d7fbfe8ea83aedc6a218
4
- data.tar.gz: 041633a7947a2d028a91a91cc4b8fb60d1255990
2
+ SHA256:
3
+ metadata.gz: 34d4b7218edc54b5340ea9d168603f72d50ed038cc6b262b22a5a2045c00aa50
4
+ data.tar.gz: 3f2340c1507f45567d45e6b57c2129978ee2e01809567a68dc8438ce6fc1eec0
5
5
  SHA512:
6
- metadata.gz: e6582e74ecb339c7d39a862ca5122b935271940d8c8322ec214aada1adcb2d13f79a9a11ef8571fa87e9028d27b1c5f3c0f88d74d21dcdc2076fac1323eabb74
7
- data.tar.gz: 443286f184920a6f0a35bab20e58fa6b1c837ee2246d044ff66f2c3ad93e31d62741ab8a145535e77badbfa13c7d7bffab1c65c8e000f74ea4b248876255292b
6
+ metadata.gz: f6fca5b050b67064465bdf08bdb53e650d5aa73f53b9d8cfc847717fdda4c2bf18f6ba9ad67a835430b8a1e88eedbcf138f77c85132d11813f109dd7aa5412e0
7
+ data.tar.gz: fbaf7442c5e3bc25618678250bad84d2099dc7216c21938f5c5d083b4788f9e9446fdaa2a027ddd76376d0d1d93509f4bdd6983b43fe0176122b443c6b91d4d6
@@ -0,0 +1,26 @@
1
+ on:
2
+ - push
3
+ - pull_request
4
+ name: Unit test
5
+ jobs:
6
+ test:
7
+ runs-on: ${{ matrix.os }}
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ ruby: [ '2.7', '3.1' ]
12
+ os:
13
+ - windows-latest
14
+ - ubuntu-latest
15
+ - macos-latest
16
+ name: Test on ${{ matrix.os }} with Ruby ${{ matrix.ruby }}
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ ruby-version: ${{ matrix.ruby }}
23
+ - name: Install dependencies
24
+ run: bundle
25
+ - name: Run tests
26
+ run: bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 1.1.0
2
+
3
+ * Up rake dependency version for CVE-2020-8130
4
+ * Support "warning" Severity in addition to "warn" [#51](https://github.com/fluent-plugins-nursery/fluent-plugin-remote_syslog/pull/51)
5
+ * Make `packet_size` option valid to UDP [#46](https://github.com/fluent-plugins-nursery/fluent-plugin-remote_syslog/pull/46)
6
+
1
7
  ## 1.0.0
2
8
 
3
9
  * Support fluentd-0.14 or later features [#24](https://github.com/dlackty/fluent-plugin-remote_syslog/pull/24)
data/Gemfile CHANGED
@@ -1,6 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'remote_syslog_sender', github: "reproio/remote_syslog_logger"
4
-
5
3
  # Specify your gem's dependencies in fluent-plugin-remote_syslog.gemspec
6
4
  gemspec
data/README.md CHANGED
@@ -13,8 +13,16 @@
13
13
 
14
14
  ## Installation
15
15
 
16
+ * Fluentd
17
+
18
+ ```bash
19
+ $ fluent-gem install fluent-plugin-remote_syslog
20
+ ```
21
+
22
+ * td-agent
23
+
16
24
  ```bash
17
- fluent-gem install fluent-plugin-remote_syslog
25
+ $ td-agent-gem install fluent-plugin-remote_syslog
18
26
  ```
19
27
 
20
28
  ## Usage
@@ -33,7 +41,7 @@
33
41
 
34
42
  <format>
35
43
  @type single_value
36
- message_key msg
44
+ message_key message
37
45
  </format>
38
46
  </match>
39
47
  ```
@@ -80,4 +88,7 @@
80
88
 
81
89
  ## License
82
90
 
83
- Copyright (c) 2014-2017 Richard Lee. See LICENSE for details.
91
+ Copyright (c) 2014-2017 Richard Lee.
92
+ Copyright (c) 2022 Daijiro Fukuda.
93
+
94
+ See LICENSE for details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
@@ -5,8 +5,8 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fluent-plugin-remote_syslog"
7
7
  spec.version = File.read("VERSION").strip
8
- spec.authors = ["Richard Lee"]
9
- spec.email = ["dlackty@gmail.com"]
8
+ spec.authors = ["Richard Lee", "Daijiro Fukuda"]
9
+ spec.email = ["dlackty@gmail.com", "fukuda@clear-code.com"]
10
10
  spec.summary = %q{Fluentd output plugin for remote syslog}
11
11
  spec.description = spec.description
12
12
  spec.homepage = "https://github.com/dlackty/fluent-plugin-remote_syslog"
@@ -16,7 +16,8 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_development_dependency "rake", "~> 10.0"
19
+ spec.add_development_dependency "bundler", '~> 2.0'
20
+ spec.add_development_dependency "rake", "~> 13.0"
20
21
  spec.add_development_dependency "test-unit"
21
22
  spec.add_development_dependency "test-unit-rr"
22
23
 
@@ -96,6 +96,8 @@ module Fluent
96
96
  program = extract_placeholders(@program, chunk.metadata)
97
97
  hostname = extract_placeholders(@hostname, chunk.metadata)
98
98
 
99
+ severity = SeverityMapper.map(severity)
100
+
99
101
  packet_options = {facility: facility, severity: severity, program: program}
100
102
  packet_options[:hostname] = hostname unless hostname.empty?
101
103
 
@@ -144,11 +146,28 @@ module Fluent
144
146
  port,
145
147
  whinyerrors: true,
146
148
  program: @program,
149
+ packet_size: @packet_size,
147
150
  )
148
151
  end
149
152
  @senders << sender
150
153
  sender
151
154
  end
155
+
156
+ # Convert some Severity values that is not supported in `syslog_protocol` library:
157
+ # https://github.com/eric/syslog_protocol
158
+ # We want to fix `syslog_protocol` itself, but it seems to be not maintained for a while.
159
+ # If the following PR is merged, we can remove this implementaion.
160
+ # https://github.com/eric/syslog_protocol/pull/9
161
+ module SeverityMapper
162
+ DICT = {
163
+ # "warning" is not supported, but we should use it since "warn" is deprecated.
164
+ "warning" => "warn",
165
+ }
166
+
167
+ def self.map(severity)
168
+ DICT[severity] || severity
169
+ end
170
+ end
152
171
  end
153
172
  end
154
173
  end
@@ -1,17 +1,23 @@
1
1
  require "test_helper"
2
2
  require "fluent/plugin/out_remote_syslog"
3
+ require "fluent/plugin/in_syslog"
4
+ require 'fluent/test/driver/input'
3
5
 
4
6
  class RemoteSyslogOutputTest < Test::Unit::TestCase
5
7
  def setup
6
8
  Fluent::Test.setup
7
9
  end
8
10
 
9
- def create_driver(conf = CONFIG)
11
+ def create_driver_out_syslog(conf)
10
12
  Fluent::Test::Driver::Output.new(Fluent::Plugin::RemoteSyslogOutput).configure(conf)
11
13
  end
12
14
 
15
+ def create_driver_in_syslog(conf)
16
+ Fluent::Test::Driver::Input.new(Fluent::Plugin::SyslogInput).configure(conf)
17
+ end
18
+
13
19
  def test_configure
14
- d = create_driver %[
20
+ d = create_driver_out_syslog %[
15
21
  @type remote_syslog
16
22
  hostname foo.com
17
23
  host example.com
@@ -28,13 +34,16 @@ class RemoteSyslogOutputTest < Test::Unit::TestCase
28
34
  assert_equal "debug", d.instance.instance_variable_get(:@severity)
29
35
  end
30
36
 
31
- def test_write
32
- d = create_driver %[
37
+ data("debug", {severity: "debug"})
38
+ data("warn", {severity: "warn"})
39
+ data("warning", {severity: "warning", expected_severity: "warn"})
40
+ def test_write_udp(data)
41
+ out_driver = create_driver_out_syslog %[
33
42
  @type remote_syslog
34
43
  hostname foo.com
35
- host example.com
44
+ host localhost
36
45
  port 5566
37
- severity debug
46
+ severity #{data[:severity]}
38
47
  program minitest
39
48
 
40
49
  <format>
@@ -43,22 +52,41 @@ class RemoteSyslogOutputTest < Test::Unit::TestCase
43
52
  </format>
44
53
  ]
45
54
 
46
- mock.proxy(RemoteSyslogSender::UdpSender).new("example.com", 5566, whinyerrors: true, program: "minitest") do |sender|
47
- mock.proxy(sender).transmit("foo", facility: "user", severity: "debug", program: "minitest", hostname: "foo.com")
48
- end
55
+ in_driver = create_driver_in_syslog %[
56
+ @type syslog
57
+ tag tag
58
+ port 5566
59
+ bind 127.0.0.1
60
+ ]
49
61
 
50
- d.run do
51
- d.feed("tag", Fluent::EventTime.now, {"message" => "foo"})
62
+ in_driver.run(expect_records: 1, timeout: 5) do
63
+ out_driver.run do
64
+ out_driver.feed("tag", Fluent::EventTime.now, {"message" => "This is a test message."})
65
+ end
52
66
  end
67
+
68
+ assert_equal 1, in_driver.events.length
69
+
70
+ tag, _, msg = in_driver.events[0]
71
+
72
+ expected_facility = "user"
73
+ expected_severity = data[:expected_severity] || data[:severity]
74
+ assert_equal("tag.#{expected_facility}.#{expected_severity}", tag)
75
+ assert_equal("foo.com", msg["host"])
76
+ assert_equal("minitest", msg["ident"])
77
+ assert_equal("This is a test message.", msg["message"])
53
78
  end
54
79
 
55
- def test_write_tcp
56
- d = create_driver %[
80
+ data("debug", {severity: "debug"})
81
+ data("warn", {severity: "warn"})
82
+ data("warning", {severity: "warning", expected_severity: "warn"})
83
+ def test_write_tcp(data)
84
+ out_driver = create_driver_out_syslog %[
57
85
  @type remote_syslog
58
86
  hostname foo.com
59
- host example.com
87
+ host localhost
60
88
  port 5566
61
- severity debug
89
+ severity #{data[:severity]}
62
90
  program minitest
63
91
 
64
92
  protocol tcp
@@ -69,16 +97,44 @@ class RemoteSyslogOutputTest < Test::Unit::TestCase
69
97
  </format>
70
98
  ]
71
99
 
72
- any_instance_of(RemoteSyslogSender::TcpSender) do |klass|
73
- mock(klass).connect
74
- end
100
+ in_driver = create_driver_in_syslog %[
101
+ @type syslog
102
+ tag tag
103
+ port 5566
104
+ bind 127.0.0.1
105
+ protocol_type tcp
106
+ ]
75
107
 
76
- mock.proxy(RemoteSyslogSender::TcpSender).new("example.com", 5566, whinyerrors: true, program: "minitest", tls: false, packet_size: 1024, timeout: nil, timeout_exception: false, keep_alive: false, keep_alive_cnt: nil, keep_alive_idle: nil, keep_alive_intvl: nil) do |sender|
77
- mock(sender).transmit("foo", facility: "user", severity: "debug", program: "minitest", hostname: "foo.com")
108
+ in_driver.run(expect_records: 1, timeout: 5) do
109
+ out_driver.run do
110
+ out_driver.feed("tag", Fluent::EventTime.now, {"message" => "This is a test message."})
111
+ end
78
112
  end
79
113
 
80
- d.run do
81
- d.feed("tag", Fluent::EventTime.now, {"message" => "foo"})
82
- end
114
+ assert_equal 1, in_driver.events.length
115
+
116
+ tag, _, msg = in_driver.events[0]
117
+
118
+ expected_facility = "user"
119
+ expected_severity = data[:expected_severity] || data[:severity]
120
+ assert_equal("tag.#{expected_facility}.#{expected_severity}", tag)
121
+ assert_equal("foo.com", msg["host"])
122
+ assert_equal("minitest", msg["ident"])
123
+ assert_equal("This is a test message.", msg["message"])
124
+ end
125
+
126
+ data("emerg", {in: "emerg", out: "emerg"})
127
+ data("alert", {in: "alert", out: "alert"})
128
+ data("crit", {in: "crit", out: "crit"})
129
+ data("err", {in: "err", out: "err"})
130
+ data("warn", {in: "warn", out: "warn"})
131
+ data("warning", {in: "warning", out: "warn"})
132
+ data("notice", {in: "notice", out: "notice"})
133
+ data("info", {in: "info", out: "info"})
134
+ data("debug", {in: "debug", out: "debug"})
135
+ data("wrong", {in: "wrong", out: "wrong"})
136
+ def test_severity_mapper(data)
137
+ out = Fluent::Plugin::RemoteSyslogOutput::SeverityMapper.map(data[:in])
138
+ assert_equal(data[:out], out)
83
139
  end
84
140
  end
metadata CHANGED
@@ -1,29 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-remote_syslog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Lee
8
+ - Daijiro Fukuda
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2017-12-22 00:00:00.000000000 Z
12
+ date: 2022-09-29 00:00:00.000000000 Z
12
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '2.0'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '2.0'
13
28
  - !ruby/object:Gem::Dependency
14
29
  name: rake
15
30
  requirement: !ruby/object:Gem::Requirement
16
31
  requirements:
17
32
  - - "~>"
18
33
  - !ruby/object:Gem::Version
19
- version: '10.0'
34
+ version: '13.0'
20
35
  type: :development
21
36
  prerelease: false
22
37
  version_requirements: !ruby/object:Gem::Requirement
23
38
  requirements:
24
39
  - - "~>"
25
40
  - !ruby/object:Gem::Version
26
- version: '10.0'
41
+ version: '13.0'
27
42
  - !ruby/object:Gem::Dependency
28
43
  name: test-unit
29
44
  requirement: !ruby/object:Gem::Requirement
@@ -83,10 +98,12 @@ dependencies:
83
98
  description: ''
84
99
  email:
85
100
  - dlackty@gmail.com
101
+ - fukuda@clear-code.com
86
102
  executables: []
87
103
  extensions: []
88
104
  extra_rdoc_files: []
89
105
  files:
106
+ - ".github/workflows/test.yaml"
90
107
  - ".gitignore"
91
108
  - ".travis.yml"
92
109
  - CHANGELOG.md
@@ -118,8 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
135
  - !ruby/object:Gem::Version
119
136
  version: '0'
120
137
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.6.13
138
+ rubygems_version: 3.1.6
123
139
  signing_key:
124
140
  specification_version: 4
125
141
  summary: Fluentd output plugin for remote syslog