fluent-plugin-filter-list 0.6.2 → 0.7.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
  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