fluent-plugin-filter-list 0.2.3 → 0.2.4
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 +44 -0
- data/.travis.yml +6 -1
- data/Gemfile +4 -1
- data/Rakefile +4 -1
- data/fluent-plugin-out_filter_list.gemspec +18 -16
- data/lib/aho_corasick.rb +3 -5
- data/lib/fluent/plugin/filter_filter_list.rb +4 -3
- data/lib/fluent/plugin/out_filter_list.rb +18 -23
- data/lib/fluent/plugin/out_filter_list/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d59e0c9511bee9b07d913940698e10474ff94f71
|
4
|
+
data.tar.gz: b40e7e4c5831ccdce088917b3bd3609cbbf83f2b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d83ac5416fd197ea9c556174eebc306441edc3ebe45d4b3b156c3eabe4b3db6da5efd8f3d1f284ed5c84c97980bb40e38be62448e1e013907514bbedc1d6719e
|
7
|
+
data.tar.gz: 6b8fd6b97f2f30fbc98e5d95056fe56e9bb2558f353039af335cba9f090183fa7ef05c756406992f8f3ebe79d40578ce4309c35ce51754b67ce9a893d9ab246a
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
Metrics/LineLength:
|
2
|
+
Max: 160
|
3
|
+
Style/StringLiterals:
|
4
|
+
Enabled: false
|
5
|
+
Metrics/MethodLength:
|
6
|
+
Max: 15
|
7
|
+
Style/Documentation:
|
8
|
+
Enabled: false
|
9
|
+
Style/FrozenStringLiteralComment:
|
10
|
+
Enabled: false
|
11
|
+
Style/MutableConstant:
|
12
|
+
Enabled: false
|
13
|
+
Metrics/AbcSize:
|
14
|
+
Max: 25
|
15
|
+
Metrics/BlockLength:
|
16
|
+
Exclude:
|
17
|
+
- 'Rakefile'
|
18
|
+
- '**/*.rake'
|
19
|
+
- 'spec/**/*.rb'
|
20
|
+
- 'Gemfile'
|
21
|
+
- 'Guardfile'
|
22
|
+
- 'config/routes.rb'
|
23
|
+
- 'config/routes/**/*.rb'
|
24
|
+
- '*.gemspec'
|
25
|
+
Metrics/CyclomaticComplexity:
|
26
|
+
Max: 10
|
27
|
+
Metrics/PerceivedComplexity:
|
28
|
+
Max: 10
|
29
|
+
Style/GlobalVars:
|
30
|
+
Exclude:
|
31
|
+
- 'test/test_helper.rb'
|
32
|
+
Style/MethodMissing:
|
33
|
+
Exclude:
|
34
|
+
- 'test/test_helper.rb'
|
35
|
+
Style/TernaryParentheses:
|
36
|
+
Enabled: false
|
37
|
+
Style/BlockDelimiters:
|
38
|
+
AutoCorrect: false
|
39
|
+
Style/BlockDelimiters:
|
40
|
+
AutoCorrect: false
|
41
|
+
Style/BracesAroundHashParameters:
|
42
|
+
Enabled: false
|
43
|
+
Layout/IndentHash:
|
44
|
+
EnforcedStyle: consistent
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rake/testtask'
|
3
|
+
require 'rubocop/rake_task'
|
3
4
|
|
4
5
|
Rake::TestTask.new(:test) do |t|
|
5
6
|
t.libs << 'test' << 'lib'
|
@@ -7,4 +8,6 @@ Rake::TestTask.new(:test) do |t|
|
|
7
8
|
t.verbose = true
|
8
9
|
end
|
9
10
|
|
10
|
-
|
11
|
+
RuboCop::RakeTask.new
|
12
|
+
|
13
|
+
task default: %w[rubocop test]
|
@@ -1,29 +1,31 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path('../lib', __FILE__)
|
4
|
+
|
3
5
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
6
|
+
require 'fluent/plugin/out_filter_list/version'
|
5
7
|
|
6
8
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
9
|
+
spec.name = 'fluent-plugin-filter-list'
|
8
10
|
spec.version = Fluent::OutFilterList::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
+
spec.authors = ['Shun Yanaura']
|
12
|
+
spec.email = ['metroplexity@gmail.com']
|
11
13
|
|
12
|
-
spec.summary =
|
13
|
-
spec.description =
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
14
|
+
spec.summary = 'A fluentd output plugin to filter keywords from messages'
|
15
|
+
spec.description = 'A fluentd output plugin to filter keywords from messages'
|
16
|
+
spec.homepage = 'https://github.com/yanana/fluent-plugin-filter-list'
|
17
|
+
spec.license = 'MIT'
|
16
18
|
|
17
19
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
20
|
f.match(%r{^(test|spec|features)/})
|
19
21
|
end
|
20
|
-
spec.bindir =
|
22
|
+
spec.bindir = 'exe'
|
21
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
-
spec.require_paths = [
|
24
|
+
spec.require_paths = ['lib']
|
23
25
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
28
|
-
spec.add_runtime_dependency
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.15'
|
27
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
28
|
+
spec.add_development_dependency 'minitest', '~> 5.0'
|
29
|
+
spec.add_development_dependency 'test-unit', '~> 3.2'
|
30
|
+
spec.add_runtime_dependency 'fluentd', '~> 0.12', '>= 0.12.0'
|
29
31
|
end
|
data/lib/aho_corasick.rb
CHANGED
@@ -7,9 +7,9 @@ module Matchers
|
|
7
7
|
@trie = Trie.new patterns
|
8
8
|
end
|
9
9
|
|
10
|
-
def matches?(
|
10
|
+
def matches?(text)
|
11
11
|
node = @trie.root
|
12
|
-
|
12
|
+
text.to_s.split('').each do |char|
|
13
13
|
node = node.failure while node.children[char].nil? # Follow failure if it exists in case pattern doesn't match
|
14
14
|
node = node.children[char]
|
15
15
|
return true unless node.output.nil?
|
@@ -33,9 +33,7 @@ module Matchers
|
|
33
33
|
current_node = @root
|
34
34
|
pattern.split('').each_with_index do |char, i|
|
35
35
|
current_node = current_node.insert(char)
|
36
|
-
if i == pattern.length - 1
|
37
|
-
current_node.output = pattern
|
38
|
-
end
|
36
|
+
current_node.output = pattern if i == pattern.length - 1
|
39
37
|
end
|
40
38
|
end
|
41
39
|
|
@@ -7,8 +7,8 @@ module Fluent
|
|
7
7
|
|
8
8
|
Plugin.register_filter('filter_list', self)
|
9
9
|
|
10
|
-
config_param :key_to_filter, :string, :
|
11
|
-
config_param :patterns_file_path, :string, :
|
10
|
+
config_param :key_to_filter, :string, default: nil
|
11
|
+
config_param :patterns_file_path, :string, default: ''
|
12
12
|
|
13
13
|
def configure(conf)
|
14
14
|
super
|
@@ -18,7 +18,8 @@ module Fluent
|
|
18
18
|
|
19
19
|
def filter(_tag, _time, record)
|
20
20
|
target = record[@key_to_filter]
|
21
|
-
target && @matcher.matches?(target)
|
21
|
+
return nil if target && @matcher.matches?(target)
|
22
|
+
record
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
@@ -7,17 +7,17 @@ module Fluent
|
|
7
7
|
|
8
8
|
Plugin.register_output('filter_list', self)
|
9
9
|
|
10
|
-
config_param :key_to_filter, :string, :
|
11
|
-
config_param :patterns_file_path, :string, :
|
10
|
+
config_param :key_to_filter, :string, default: nil
|
11
|
+
config_param :patterns_file_path, :string, default: ''
|
12
12
|
|
13
13
|
config_section :retag, required: true, multi: false do
|
14
|
-
config_param :tag, :string, :
|
15
|
-
config_param :add_prefix, :string, :
|
14
|
+
config_param :tag, :string, default: nil
|
15
|
+
config_param :add_prefix, :string, default: nil
|
16
16
|
end
|
17
17
|
|
18
18
|
config_section :retag_filtered, param_name: :retag_for_filtered, required: false, multi: false do
|
19
|
-
config_param :tag, :string, :
|
20
|
-
config_param :add_prefix, :string, :
|
19
|
+
config_param :tag, :string, default: nil
|
20
|
+
config_param :add_prefix, :string, default: nil
|
21
21
|
end
|
22
22
|
|
23
23
|
def initialize
|
@@ -25,15 +25,15 @@ module Fluent
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def validate(retag)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
28
|
+
return unless retag
|
29
|
+
raise Fluent::ConfigError, "missing tag and add_prefix" unless retag.tag || retag.add_prefix
|
30
|
+
raise Fluent::ConfigError, "tag and add_prefix are mutually exclusive" if retag.tag && retag.add_prefix
|
31
|
+
end
|
32
|
+
|
33
|
+
def configure_prefixes
|
34
|
+
@prefix_for_filtered_tag = @retag_for_filtered.add_prefix + '.' if @retag_for_filtered && @retag_for_filtered.add_prefix
|
35
|
+
@prefix_for_filtered_tag = @retag_for_filtered && @retag_for_filtered.add_prefix ? @retag_for_filtered.add_prefix + '.' : ''
|
36
|
+
@prefix = @retag && @retag.add_prefix ? @retag.add_prefix + '.' : ''
|
37
37
|
end
|
38
38
|
|
39
39
|
def configure(conf)
|
@@ -41,16 +41,11 @@ module Fluent
|
|
41
41
|
[@retag, @retag_for_filtered].each { |c| validate c }
|
42
42
|
patterns = @patterns_file_path.empty? ? [] : File.readlines(@patterns_file_path).map(&:chomp).reject(&:empty?)
|
43
43
|
@matcher = ACMatcher.new(patterns)
|
44
|
-
|
45
|
-
|
46
|
-
end
|
47
|
-
if @retag && @retag.add_prefix
|
48
|
-
@prefix = @retag.add_prefix + "."
|
49
|
-
end
|
50
|
-
log.debug "prefix: #{@prefix}, prefix_for_filtered_tag: #{@prefix_for_filtered_tag}"
|
44
|
+
configure_prefixes
|
45
|
+
log.debug "prefix: #{@prefix}, prefix_for_filtered_tag: #{@prefix_for_filtered_tag || ''}"
|
51
46
|
end
|
52
47
|
|
53
|
-
def emit(tag, es,
|
48
|
+
def emit(tag, es, _chain)
|
54
49
|
es.each do |time, record|
|
55
50
|
target = record[@key_to_filter]
|
56
51
|
log.debug "target: #{target}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-filter-list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shun Yanaura
|
@@ -94,6 +94,7 @@ extensions: []
|
|
94
94
|
extra_rdoc_files: []
|
95
95
|
files:
|
96
96
|
- ".gitignore"
|
97
|
+
- ".rubocop.yml"
|
97
98
|
- ".travis.yml"
|
98
99
|
- CODE_OF_CONDUCT.md
|
99
100
|
- Gemfile
|