fluent-plugin-filter-list 0.6.2 → 0.7.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
2
  SHA256:
3
- metadata.gz: 1f1beff88a018e08d4bc91c64df9c4366fae068b2a1b52943a97dbf7da3db5f7
4
- data.tar.gz: 700de6cd91d914d1e24fcd5f00935478d57d60749983d9f2c961f03adcaca97d
3
+ metadata.gz: 38d4d2dffb112f1d1848a5b19b65012a8b58a98dfd109b2a8aebfc6778ef581d
4
+ data.tar.gz: 0ea84ac0818d740133cec309afca9a7e6dcc3fa51e9d4374dda61759da3530ae
5
5
  SHA512:
6
- metadata.gz: 878771c4a28216d0c69c2f2f71235a73dd9bc9031fde4ef32a42b8c3fdac51aae9a81f73e22f6435955adf0011da4d6647bd218efe526c3bb63a437c88c0c6af
7
- data.tar.gz: 8a8f76921f0b739c1ca396c4f7ddfafdecd396c6e44dc4cf1f0101c4ffad9996f2479d194a21eb81c1ed5d604824d84ccdb157ad0202fc8fa7cfcd86800359cc
6
+ metadata.gz: 900364d81be98c75bee9dec18ba8d30521e05931ba692c977e7e849570df4e295e49bb0194a8718219a6037a1990835836ca7e3da28d1bfc3e2e9f99081f1f1a
7
+ data.tar.gz: 80c826720b8cdb2797c291d6f962d42cea8cd80d42ba5451bad75ee13f7a4e9a01d17d2debf20e77f8aeac02e37a165b7e1bd82add57745064b2135f8d0d1d36
@@ -1,6 +1,9 @@
1
- Naming/UncommunicativeMethodParamName:
1
+ AllCops:
2
+ TargetRubyVersion: 2.6
3
+
4
+ Naming/MethodParameterName:
2
5
  Enabled: false
3
- Metrics/LineLength:
6
+ Layout/LineLength:
4
7
  Max: 160
5
8
  Style/FormatString:
6
9
  EnforcedStyle: sprintf
@@ -45,9 +48,7 @@ Style/TernaryParentheses:
45
48
  Enabled: false
46
49
  Style/BlockDelimiters:
47
50
  AutoCorrect: false
48
- Style/BlockDelimiters:
49
- AutoCorrect: false
50
51
  Style/BracesAroundHashParameters:
51
52
  Enabled: false
52
- Layout/IndentFirstHashElement:
53
+ Layout/FirstHashElementIndentation:
53
54
  EnforcedStyle: consistent
@@ -6,7 +6,6 @@ rvm:
6
6
  - 2.6
7
7
  before_install:
8
8
  - gem update --remote bundler
9
- - gem update --system
10
9
  - gem install rubocop bundler
11
10
  script:
12
11
  - bundle exec rake
data/Gemfile CHANGED
@@ -4,4 +4,4 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  # Added at 2017-08-14 19:47:59 +0900 by 5hun:
7
- gem 'rubocop', '~> 0.72.0', require: false, group: [:development]
7
+ gem 'rubocop', '~> 0.78.0', require: false, group: [:development]
data/README.md CHANGED
@@ -29,6 +29,9 @@ This repository contains two plugins: _Filter_ and _Output_, and expects two mai
29
29
  Use the `filter_list` filter. Configure fluentd as follows.
30
30
 
31
31
  #### ACMatcher
32
+
33
+ _ACMatcher_ is a matcher using [Aho–Corasick algorithm](https://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_algorithm) to enable faster multiple-pattern matching.
34
+
32
35
  ```
33
36
  <filter pattern>
34
37
  @type filter_list
@@ -66,7 +69,7 @@ While the following message is passed through as the target field specified in t
66
69
  }
67
70
  ```
68
71
 
69
- Additionally, the following message is also omitted since `filter_empty` is `true`. The value is determined to be empty when the trimed value is empty.
72
+ Additionally, the following message is also omitted since `filter_empty` is `true`. The value is determined to be empty when the trimmed value is empty.
70
73
 
71
74
  ```json
72
75
  {
@@ -75,6 +78,19 @@ Additionally, the following message is also omitted since `filter_empty` is `tru
75
78
  }
76
79
  ```
77
80
 
81
+ All these examples are _blacklisting_. That is, a text matched to a pattern will be determined to be filtered. The plugin provides the other type of filtering: _whitelisting_. With the type you can filter records that don't match any pattern. You can enable _whitelisting_ by specifying the `action` (the default value is _blacklist_) explicitly as follows.
82
+
83
+ ```
84
+ <filter>
85
+ @type filter_list
86
+
87
+ filter AC
88
+ key_to_filter foo
89
+ pattern_file_paths blacklist.txt
90
+ action whitelist
91
+ </filter>
92
+ ```
93
+
78
94
  #### IPMatcher
79
95
  ```
80
96
  <filter pattern>
@@ -132,6 +148,7 @@ The other use case is to filter messages likewise, but process the filtered mess
132
148
  key_to_filter field_name_you_want_to_filter
133
149
  pattern_file_paths ["file_including_patterns_separated_by_new_line"]
134
150
  filter_empty true
151
+ action blacklist
135
152
 
136
153
  <retag>
137
154
  add_prefix x # retag non-filtered messages whose tag will be "x.your_tag"
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ['lib']
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 2.0'
25
- spec.add_development_dependency 'minitest', '~> 5.11'
26
- spec.add_development_dependency 'rake', '~> 12.3'
27
- spec.add_development_dependency 'test-unit', '~> 3.2'
24
+ spec.add_development_dependency 'bundler', '~> 2.1'
25
+ spec.add_development_dependency 'minitest', '~> 5.13'
26
+ spec.add_development_dependency 'rake', '~> 13.0'
27
+ spec.add_development_dependency 'test-unit', '~> 3.3'
28
28
  spec.add_runtime_dependency 'fluentd', '>= 0.14.0', '< 2.0.0'
29
29
  end
@@ -0,0 +1,8 @@
1
+ module BaseFilter
2
+ def should_filter?(target)
3
+ return false if target.nil?
4
+ return true if @filter_empty && target.strip.empty?
5
+
6
+ @action == (@matcher.matches?(target) ? :blacklist : :whitelist)
7
+ end
8
+ end
@@ -2,12 +2,14 @@ require 'fluent/plugin/out_filter_list/version'
2
2
  require 'matcher'
3
3
  require 'fluent/plugin/filter'
4
4
  require 'ip'
5
+ require 'base'
5
6
 
6
7
  module Fluent
7
8
  module Plugin
8
9
  class FilterListFilter < Filter
9
10
  include Matchers
10
11
  include IP
12
+ include BaseFilter
11
13
 
12
14
  Plugin.register_filter('filter_list', self)
13
15
 
@@ -15,6 +17,7 @@ module Fluent
15
17
  config_param :key_to_filter, :string, default: nil
16
18
  config_param :pattern_file_paths, :array, default: [], value_type: :string
17
19
  config_param :filter_empty, :bool, default: false
20
+ config_param :action, :enum, list: %i[blacklist whitelist], default: :blacklist
18
21
 
19
22
  def configure(conf)
20
23
  super
@@ -24,7 +27,8 @@ module Fluent
24
27
 
25
28
  def filter(_tag, _time, record)
26
29
  target = record[@key_to_filter]
27
- return nil if target && (@matcher.matches?(target) || (@filter_empty && target.strip.empty?))
30
+
31
+ return nil if should_filter?(target)
28
32
 
29
33
  record
30
34
  end
@@ -2,12 +2,14 @@ require 'fluent/plugin/output'
2
2
  require 'fluent/plugin/out_filter_list/version'
3
3
  require 'matcher'
4
4
  require 'ip'
5
+ require 'base'
5
6
 
6
7
  module Fluent
7
8
  module Plugin
8
9
  class FilterListOutput < Output
9
10
  include Matchers
10
11
  include IP
12
+ include BaseFilter
11
13
 
12
14
  Plugin.register_output('filter_list', self)
13
15
 
@@ -17,6 +19,7 @@ module Fluent
17
19
  config_param :key_to_filter, :string, default: nil
18
20
  config_param :pattern_file_paths, :array, default: [], value_type: :string
19
21
  config_param :filter_empty, :bool, default: false
22
+ config_param :action, :enum, list: %i[blacklist whitelist], default: :blacklist
20
23
 
21
24
  config_section :retag, required: true, multi: false do
22
25
  config_param :tag, :string, default: nil
@@ -72,7 +75,7 @@ module Fluent
72
75
  target = record[@key_to_filter]
73
76
  log.debug "target: #{target}"
74
77
  # Do filter
75
- if target && (@matcher.matches?(target) || (@filter_empty && target.strip.empty?))
78
+ if should_filter?(target)
76
79
  if @retag_for_filtered
77
80
  t = @retag_for_filtered.tag || ((tag && !tag.empty?) ? @prefix_for_filtered_tag + tag : @retag_for_filtered.add_prefix)
78
81
  log.debug "re-emit with the tag: '#{t}', originally: '#{tag}'"
@@ -1,7 +1,7 @@
1
1
  module Fluent
2
2
  module Plugin
3
3
  module FilterList
4
- VERSION = "0.6.2"
4
+ VERSION = "0.7.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-filter-list
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shun Yanaura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-11 00:00:00.000000000 Z
11
+ date: 2020-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,56 +16,56 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '5.11'
33
+ version: '5.13'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '5.11'
40
+ version: '5.13'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '12.3'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '12.3'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: test-unit
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.2'
61
+ version: '3.3'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.2'
68
+ version: '3.3'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: fluentd
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -106,6 +106,7 @@ files:
106
106
  - bin/console
107
107
  - bin/setup
108
108
  - fluent-plugin-out_filter_list.gemspec
109
+ - lib/base.rb
109
110
  - lib/fluent/plugin/filter_filter_list.rb
110
111
  - lib/fluent/plugin/out_filter_list.rb
111
112
  - lib/fluent/plugin/out_filter_list/version.rb