fluent-plugin-filter-list 0.5.0 → 0.6.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 +4 -4
- data/.rubocop.yml +4 -1
- data/.travis.yml +5 -5
- data/Gemfile +1 -1
- data/README.md +3 -3
- data/fluent-plugin-out_filter_list.gemspec +1 -1
- data/lib/fluent/plugin/filter_filter_list.rb +3 -2
- data/lib/fluent/plugin/out_filter_list.rb +2 -2
- data/lib/fluent/plugin/out_filter_list/version.rb +1 -1
- data/lib/matcher.rb +3 -0
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6ecc0716888d8def1ffa0bdc4906c27aa610b6892c12d81e04fbf5f6dacd49d
|
4
|
+
data.tar.gz: 682c3cc3a8b27a86bb0f4cf40cc2e994444e9369d49470c611d0e47cef057425
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c52e32c0fbf6c82410adab0de450957aa7fd2567d6d69e167c8e047c3e4f64ed464b8090134dc07c9e29e81c89cd1917db18039574d6d2e5e0453962d2ed2e1e
|
7
|
+
data.tar.gz: 82bea7aa160a072d49356ce8e4840345d27bd547b2993d49efcae588acc4042dd24097bb43787f05a3ac93e5a9e0f04e1c6f5b02b06dfb45e91047636717355e
|
data/.rubocop.yml
CHANGED
@@ -35,7 +35,10 @@ Metrics/PerceivedComplexity:
|
|
35
35
|
Style/GlobalVars:
|
36
36
|
Exclude:
|
37
37
|
- 'test/test_helper.rb'
|
38
|
-
Style/
|
38
|
+
Style/MethodMissingSuper:
|
39
|
+
Exclude:
|
40
|
+
- 'test/test_helper.rb'
|
41
|
+
Style/MissingRespondToMissing:
|
39
42
|
Exclude:
|
40
43
|
- 'test/test_helper.rb'
|
41
44
|
Style/TernaryParentheses:
|
data/.travis.yml
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.
|
4
|
-
- 2.
|
5
|
-
- 2.
|
6
|
-
- 2.
|
3
|
+
- 2.3
|
4
|
+
- 2.4
|
5
|
+
- 2.5
|
6
|
+
- 2.6
|
7
7
|
before_install:
|
8
8
|
- gem update --remote bundler
|
9
9
|
- gem update --system
|
10
|
-
- gem install rubocop
|
10
|
+
- gem install rubocop bundler
|
11
11
|
script:
|
12
12
|
- bundle exec rake
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -35,7 +35,7 @@ Use the `filter_list` filter. Configure fluentd as follows.
|
|
35
35
|
|
36
36
|
filter AC
|
37
37
|
key_to_filter x
|
38
|
-
|
38
|
+
pattern_file_paths ["blacklist_1.txt", "blacklist_2.txt"]
|
39
39
|
filter_empty true
|
40
40
|
</filter>
|
41
41
|
```
|
@@ -82,7 +82,7 @@ Additionally, the following message is also omitted since `filter_empty` is `tru
|
|
82
82
|
|
83
83
|
filter IP
|
84
84
|
key_to_filter ip
|
85
|
-
|
85
|
+
pattern_file_paths blacklist.txt
|
86
86
|
</filter>
|
87
87
|
```
|
88
88
|
|
@@ -130,7 +130,7 @@ The other use case is to filter messages likewise, but process the filtered mess
|
|
130
130
|
@type filter_list
|
131
131
|
|
132
132
|
key_to_filter field_name_you_want_to_filter
|
133
|
-
|
133
|
+
pattern_file_paths ["file_including_patterns_separated_by_new_line"]
|
134
134
|
filter_empty true
|
135
135
|
|
136
136
|
<retag>
|
@@ -21,7 +21,7 @@ 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', '~>
|
24
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
25
25
|
spec.add_development_dependency 'minitest', '~> 5.11'
|
26
26
|
spec.add_development_dependency 'rake', '~> 12.3'
|
27
27
|
spec.add_development_dependency 'test-unit', '~> 3.2'
|
@@ -13,18 +13,19 @@ module Fluent
|
|
13
13
|
|
14
14
|
config_param :filter, :string, default: 'AC'
|
15
15
|
config_param :key_to_filter, :string, default: nil
|
16
|
-
config_param :
|
16
|
+
config_param :pattern_file_paths, :array, default: [], value_type: :string
|
17
17
|
config_param :filter_empty, :bool, default: false
|
18
18
|
|
19
19
|
def configure(conf)
|
20
20
|
super
|
21
|
-
patterns = @
|
21
|
+
patterns = @pattern_file_paths.flat_map { |p| File.readlines(p).map(&:chomp).reject(&:empty?) }
|
22
22
|
@matcher = (@filter == 'IP') ? IPMatcher.new(patterns) : ACMatcher.new(patterns)
|
23
23
|
end
|
24
24
|
|
25
25
|
def filter(_tag, _time, record)
|
26
26
|
target = record[@key_to_filter]
|
27
27
|
return nil if target && (@matcher.matches?(target) || (@filter_empty && target.strip.empty?))
|
28
|
+
|
28
29
|
record
|
29
30
|
end
|
30
31
|
end
|
@@ -15,7 +15,7 @@ module Fluent
|
|
15
15
|
|
16
16
|
config_param :filter, :string, default: 'AC'
|
17
17
|
config_param :key_to_filter, :string, default: nil
|
18
|
-
config_param :
|
18
|
+
config_param :pattern_file_paths, :array, default: [], value_type: :string
|
19
19
|
config_param :filter_empty, :bool, default: false
|
20
20
|
|
21
21
|
config_section :retag, required: true, multi: false do
|
@@ -47,7 +47,7 @@ module Fluent
|
|
47
47
|
def configure(conf)
|
48
48
|
super
|
49
49
|
[@retag, @retag_for_filtered].each { |c| validate c }
|
50
|
-
patterns = @
|
50
|
+
patterns = @pattern_file_paths.flat_map { |p| File.readlines(p).map(&:chomp).reject(&:empty?) }
|
51
51
|
@matcher = (@filter == 'IP') ? IPMatcher.new(patterns) : ACMatcher.new(patterns)
|
52
52
|
configure_prefixes
|
53
53
|
end
|
data/lib/matcher.rb
CHANGED
@@ -32,6 +32,7 @@ module Matchers
|
|
32
32
|
|
33
33
|
def matches?(text)
|
34
34
|
return false if text.nil?
|
35
|
+
|
35
36
|
ip = IPAddr.new(text).to_i.to_s(2).rjust(32, '0')
|
36
37
|
trie.forward_match(ip)
|
37
38
|
end
|
@@ -82,10 +83,12 @@ module Matchers
|
|
82
83
|
|
83
84
|
def forward_match(pattern)
|
84
85
|
return false if @root.children.empty?
|
86
|
+
|
85
87
|
cur_node = @root
|
86
88
|
pattern.chars.each do |char|
|
87
89
|
return true if cur_node.children.empty?
|
88
90
|
return false unless cur_node.children.key?(char)
|
91
|
+
|
89
92
|
cur_node = cur_node.children[char]
|
90
93
|
end
|
91
94
|
true
|
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.
|
4
|
+
version: 0.6.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:
|
11
|
+
date: 2019-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
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: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,8 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0'
|
132
132
|
requirements: []
|
133
|
-
|
134
|
-
rubygems_version: 2.7.6
|
133
|
+
rubygems_version: 3.0.2
|
135
134
|
signing_key:
|
136
135
|
specification_version: 4
|
137
136
|
summary: A fluentd output plugin to filter keywords from messages
|