fluent-plugin-filter-list 0.5.0 → 0.7.2
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/.github/dependabot.yml +8 -0
- data/.rubocop.yml +15 -9
- data/.travis.yml +5 -6
- data/Gemfile +1 -1
- data/README.md +21 -4
- data/fluent-plugin-out_filter_list.gemspec +5 -4
- data/lib/base.rb +8 -0
- data/lib/fluent/plugin/filter_filter_list.rb +8 -3
- data/lib/fluent/plugin/out_filter_list.rb +9 -10
- data/lib/fluent/plugin/out_filter_list/version.rb +1 -1
- data/lib/matcher.rb +17 -4
- metadata +17 -16
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: d213a158b64257afde99c26284bf0215c1a5d208362f0f00012580852654244e
         | 
| 4 | 
            +
              data.tar.gz: 37c5a0219f4bab0de18b6aac6c75d6d90f63bd60f5eddb5399bfb0522c563706
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 776d9222ea8997eda4506348282ed67415296da63c4dcd16569f2a7db35863a5844b3e3869cff5d9dcd9a077d4738a9733e4cf3b3436bc7ec08a26b8d4d84503
         | 
| 7 | 
            +
              data.tar.gz: b73678d3bd2ba2a415499256cf6b8b7ba1c8c0a88800745d6668aaea1ba049d59343ca2665063cb4a11c1d099ce9ce825fffc57465dde845ee62c34b39f3a49a
         | 
    
        data/.rubocop.yml
    CHANGED
    
    | @@ -1,6 +1,11 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
               | 
| 3 | 
            -
             | 
| 1 | 
            +
            AllCops:
         | 
| 2 | 
            +
              TargetRubyVersion: 2.5
         | 
| 3 | 
            +
              NewCops: enable
         | 
| 4 | 
            +
             | 
| 5 | 
            +
             | 
| 6 | 
            +
            Naming/MethodParameterName:
         | 
| 7 | 
            +
              Enabled: false
         | 
| 8 | 
            +
            Layout/LineLength:
         | 
| 4 9 | 
             
              Max: 160
         | 
| 5 10 | 
             
            Style/FormatString:
         | 
| 6 11 | 
             
              EnforcedStyle: sprintf
         | 
| @@ -35,16 +40,17 @@ Metrics/PerceivedComplexity: | |
| 35 40 | 
             
            Style/GlobalVars:
         | 
| 36 41 | 
             
              Exclude:
         | 
| 37 42 | 
             
                - 'test/test_helper.rb'
         | 
| 38 | 
            -
             | 
| 43 | 
            +
            Lint/MissingSuper:
         | 
| 44 | 
            +
              Exclude:
         | 
| 45 | 
            +
                - 'test/test_helper.rb'
         | 
| 46 | 
            +
            Style/MissingRespondToMissing:
         | 
| 39 47 | 
             
              Exclude:
         | 
| 40 48 | 
             
                - 'test/test_helper.rb'
         | 
| 41 49 | 
             
            Style/TernaryParentheses:
         | 
| 42 50 | 
             
              Enabled: false
         | 
| 43 51 | 
             
            Style/BlockDelimiters:
         | 
| 44 52 | 
             
              AutoCorrect: false
         | 
| 45 | 
            -
             | 
| 46 | 
            -
              AutoCorrect: false
         | 
| 47 | 
            -
            Style/BracesAroundHashParameters:
         | 
| 48 | 
            -
              Enabled: false
         | 
| 49 | 
            -
            Layout/IndentHash:
         | 
| 53 | 
            +
            Layout/FirstHashElementIndentation:
         | 
| 50 54 | 
             
              EnforcedStyle: consistent
         | 
| 55 | 
            +
            Style/RedundantSelfAssignment:
         | 
| 56 | 
            +
              Enabled: false
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -1,12 +1,11 @@ | |
| 1 1 | 
             
            language: ruby
         | 
| 2 2 | 
             
            rvm:
         | 
| 3 | 
            -
              - 2. | 
| 4 | 
            -
              - 2. | 
| 5 | 
            -
              - 2. | 
| 6 | 
            -
              - 2.5.1
         | 
| 3 | 
            +
              - 2.5
         | 
| 4 | 
            +
              - 2.6
         | 
| 5 | 
            +
              - 2.7
         | 
| 7 6 | 
             
            before_install:
         | 
| 8 | 
            -
              - gem update --remote bundler
         | 
| 9 7 | 
             
              - gem update --system
         | 
| 10 | 
            -
              - gem  | 
| 8 | 
            +
              - gem update --remote bundler
         | 
| 11 9 | 
             
            script:
         | 
| 10 | 
            +
              - bundle exec rubocop -d
         | 
| 12 11 | 
             
              - bundle exec rake
         | 
    
        data/Gemfile
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -29,13 +29,16 @@ 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
         | 
| 35 38 |  | 
| 36 39 | 
             
              filter AC
         | 
| 37 40 | 
             
              key_to_filter x
         | 
| 38 | 
            -
               | 
| 41 | 
            +
              pattern_file_paths ["blacklist_1.txt", "blacklist_2.txt"]
         | 
| 39 42 | 
             
              filter_empty true
         | 
| 40 43 | 
             
            </filter>
         | 
| 41 44 | 
             
            ```
         | 
| @@ -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  | 
| 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>
         | 
| @@ -82,7 +98,7 @@ Additionally, the following message is also omitted since `filter_empty` is `tru | |
| 82 98 |  | 
| 83 99 | 
             
              filter IP
         | 
| 84 100 | 
             
              key_to_filter ip
         | 
| 85 | 
            -
               | 
| 101 | 
            +
              pattern_file_paths blacklist.txt
         | 
| 86 102 | 
             
            </filter>
         | 
| 87 103 | 
             
            ```
         | 
| 88 104 |  | 
| @@ -130,8 +146,9 @@ The other use case is to filter messages likewise, but process the filtered mess | |
| 130 146 | 
             
              @type filter_list
         | 
| 131 147 |  | 
| 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"
         | 
| @@ -8,6 +8,7 @@ Gem::Specification.new do |spec| | |
| 8 8 | 
             
              spec.version       = Fluent::Plugin::FilterList::VERSION
         | 
| 9 9 | 
             
              spec.authors       = ['Shun Yanaura']
         | 
| 10 10 | 
             
              spec.email         = ['metroplexity@gmail.com']
         | 
| 11 | 
            +
              spec.required_ruby_version = '>= 2.5.0'
         | 
| 11 12 |  | 
| 12 13 | 
             
              spec.summary       = 'A fluentd output plugin to filter keywords from messages'
         | 
| 13 14 | 
             
              spec.description   = 'A fluentd output plugin to filter keywords from messages'
         | 
| @@ -21,9 +22,9 @@ Gem::Specification.new do |spec| | |
| 21 22 | 
             
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 22 23 | 
             
              spec.require_paths = ['lib']
         | 
| 23 24 |  | 
| 24 | 
            -
              spec.add_development_dependency 'bundler', '~> 1 | 
| 25 | 
            -
              spec.add_development_dependency 'minitest', '~> 5. | 
| 26 | 
            -
              spec.add_development_dependency 'rake', '~>  | 
| 27 | 
            -
              spec.add_development_dependency 'test-unit', '~> 3. | 
| 25 | 
            +
              spec.add_development_dependency 'bundler', '~> 2.1'
         | 
| 26 | 
            +
              spec.add_development_dependency 'minitest', '~> 5.13'
         | 
| 27 | 
            +
              spec.add_development_dependency 'rake', '~> 13.0'
         | 
| 28 | 
            +
              spec.add_development_dependency 'test-unit', '~> 3.3'
         | 
| 28 29 | 
             
              spec.add_runtime_dependency 'fluentd', '>= 0.14.0', '< 2.0.0'
         | 
| 29 30 | 
             
            end
         | 
    
        data/lib/base.rb
    ADDED
    
    
| @@ -2,29 +2,34 @@ 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 |  | 
| 14 16 | 
             
                  config_param :filter, :string, default: 'AC'
         | 
| 15 17 | 
             
                  config_param :key_to_filter, :string, default: nil
         | 
| 16 | 
            -
                  config_param : | 
| 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
         | 
| 21 | 
            -
                    patterns = @ | 
| 24 | 
            +
                    patterns = @pattern_file_paths.flat_map { |p| File.readlines(p).map(&:chomp).reject(&:empty?) }
         | 
| 22 25 | 
             
                    @matcher = (@filter == 'IP') ? IPMatcher.new(patterns) : ACMatcher.new(patterns)
         | 
| 23 26 | 
             
                  end
         | 
| 24 27 |  | 
| 25 28 | 
             
                  def filter(_tag, _time, record)
         | 
| 26 29 | 
             
                    target = record[@key_to_filter]
         | 
| 27 | 
            -
             | 
| 30 | 
            +
             | 
| 31 | 
            +
                    return nil if should_filter?(target)
         | 
| 32 | 
            +
             | 
| 28 33 | 
             
                    record
         | 
| 29 34 | 
             
                  end
         | 
| 30 35 | 
             
                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 |  | 
| @@ -15,8 +17,9 @@ module Fluent | |
| 15 17 |  | 
| 16 18 | 
             
                  config_param :filter, :string, default: 'AC'
         | 
| 17 19 | 
             
                  config_param :key_to_filter, :string, default: nil
         | 
| 18 | 
            -
                  config_param : | 
| 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
         | 
| @@ -28,10 +31,6 @@ module Fluent | |
| 28 31 | 
             
                    config_param :add_prefix, :string, default: nil
         | 
| 29 32 | 
             
                  end
         | 
| 30 33 |  | 
| 31 | 
            -
                  def initialize
         | 
| 32 | 
            -
                    super
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
             | 
| 35 34 | 
             
                  def validate(retag)
         | 
| 36 35 | 
             
                    return unless retag
         | 
| 37 36 | 
             
                    raise Fluent::ConfigError, "missing tag and add_prefix" unless retag.tag || retag.add_prefix
         | 
| @@ -39,15 +38,15 @@ module Fluent | |
| 39 38 | 
             
                  end
         | 
| 40 39 |  | 
| 41 40 | 
             
                  def configure_prefixes
         | 
| 42 | 
            -
                    @prefix_for_filtered_tag = @retag_for_filtered.add_prefix | 
| 43 | 
            -
                    @prefix_for_filtered_tag = @retag_for_filtered | 
| 44 | 
            -
                    @prefix = @retag | 
| 41 | 
            +
                    @prefix_for_filtered_tag = "#{@retag_for_filtered.add_prefix}." if @retag_for_filtered&.add_prefix
         | 
| 42 | 
            +
                    @prefix_for_filtered_tag = @retag_for_filtered&.add_prefix ? "#{@retag_for_filtered.add_prefix}." : ''
         | 
| 43 | 
            +
                    @prefix = @retag&.add_prefix ? "#{@retag.add_prefix}." : ''
         | 
| 45 44 | 
             
                  end
         | 
| 46 45 |  | 
| 47 46 | 
             
                  def configure(conf)
         | 
| 48 47 | 
             
                    super
         | 
| 49 48 | 
             
                    [@retag, @retag_for_filtered].each { |c| validate c }
         | 
| 50 | 
            -
                    patterns = @ | 
| 49 | 
            +
                    patterns = @pattern_file_paths.flat_map { |p| File.readlines(p).map(&:strip).reject(&:empty?) }
         | 
| 51 50 | 
             
                    @matcher = (@filter == 'IP') ? IPMatcher.new(patterns) : ACMatcher.new(patterns)
         | 
| 52 51 | 
             
                    configure_prefixes
         | 
| 53 52 | 
             
                  end
         | 
| @@ -72,7 +71,7 @@ module Fluent | |
| 72 71 | 
             
                      target = record[@key_to_filter]
         | 
| 73 72 | 
             
                      log.debug "target: #{target}"
         | 
| 74 73 | 
             
                      # Do filter
         | 
| 75 | 
            -
                      if  | 
| 74 | 
            +
                      if should_filter?(target)
         | 
| 76 75 | 
             
                        if @retag_for_filtered
         | 
| 77 76 | 
             
                          t = @retag_for_filtered.tag || ((tag && !tag.empty?) ? @prefix_for_filtered_tag + tag : @retag_for_filtered.add_prefix)
         | 
| 78 77 | 
             
                          log.debug "re-emit with the tag: '#{t}', originally: '#{tag}'"
         | 
    
        data/lib/matcher.rb
    CHANGED
    
    | @@ -13,16 +13,25 @@ module Matchers | |
| 13 13 | 
             
                def matches?(text)
         | 
| 14 14 | 
             
                  node = @trie.root
         | 
| 15 15 | 
             
                  text.to_s.chars.each do |char|
         | 
| 16 | 
            -
                     | 
| 16 | 
            +
                    failure = node.failure
         | 
| 17 17 | 
             
                    node = node.children[char]
         | 
| 18 | 
            -
             | 
| 18 | 
            +
             | 
| 19 | 
            +
                    return true unless node.nil? || node.output.nil?
         | 
| 20 | 
            +
                    return true unless failure.nil? || failure.output.nil?
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    # Follow failure if it exists in case pattern doesn't match
         | 
| 23 | 
            +
                    node = failure if node.nil?
         | 
| 19 24 | 
             
                  end
         | 
| 20 | 
            -
             | 
| 25 | 
            +
             | 
| 26 | 
            +
                  return false if node.failure.nil?
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  !node.failure.output.nil?
         | 
| 21 29 | 
             
                end
         | 
| 22 30 | 
             
              end
         | 
| 23 31 |  | 
| 24 32 | 
             
              class IPMatcher
         | 
| 25 33 | 
             
                attr_reader :trie
         | 
| 34 | 
            +
             | 
| 26 35 | 
             
                include IP
         | 
| 27 36 |  | 
| 28 37 | 
             
                def initialize(patterns)
         | 
| @@ -32,6 +41,7 @@ module Matchers | |
| 32 41 |  | 
| 33 42 | 
             
                def matches?(text)
         | 
| 34 43 | 
             
                  return false if text.nil?
         | 
| 44 | 
            +
             | 
| 35 45 | 
             
                  ip = IPAddr.new(text).to_i.to_s(2).rjust(32, '0')
         | 
| 36 46 | 
             
                  trie.forward_match(ip)
         | 
| 37 47 | 
             
                end
         | 
| @@ -39,6 +49,7 @@ module Matchers | |
| 39 49 |  | 
| 40 50 | 
             
              class Trie
         | 
| 41 51 | 
             
                attr_reader :root
         | 
| 52 | 
            +
             | 
| 42 53 | 
             
                def initialize(patterns)
         | 
| 43 54 | 
             
                  @root = Node.new
         | 
| 44 55 | 
             
                  @root.children.default = @root
         | 
| @@ -58,7 +69,7 @@ module Matchers | |
| 58 69 |  | 
| 59 70 | 
             
                def new_queue
         | 
| 60 71 | 
             
                  q = Queue.new
         | 
| 61 | 
            -
                  @root.children. | 
| 72 | 
            +
                  @root.children.each_value do |child|
         | 
| 62 73 | 
             
                    q.push(child)
         | 
| 63 74 | 
             
                    child.failure = @root # set root on root's children's failure
         | 
| 64 75 | 
             
                  end
         | 
| @@ -82,10 +93,12 @@ module Matchers | |
| 82 93 |  | 
| 83 94 | 
             
                def forward_match(pattern)
         | 
| 84 95 | 
             
                  return false if @root.children.empty?
         | 
| 96 | 
            +
             | 
| 85 97 | 
             
                  cur_node = @root
         | 
| 86 98 | 
             
                  pattern.chars.each do |char|
         | 
| 87 99 | 
             
                    return true if cur_node.children.empty?
         | 
| 88 100 | 
             
                    return false unless cur_node.children.key?(char)
         | 
| 101 | 
            +
             | 
| 89 102 | 
             
                    cur_node = cur_node.children[char]
         | 
| 90 103 | 
             
                  end
         | 
| 91 104 | 
             
                  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.7.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Shun Yanaura
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2020-10-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: '1 | 
| 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: '1 | 
| 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. | 
| 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. | 
| 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: ' | 
| 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: ' | 
| 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. | 
| 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. | 
| 68 | 
            +
                    version: '3.3'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: fluentd
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -95,6 +95,7 @@ executables: | |
| 95 95 | 
             
            extensions: []
         | 
| 96 96 | 
             
            extra_rdoc_files: []
         | 
| 97 97 | 
             
            files:
         | 
| 98 | 
            +
            - ".github/dependabot.yml"
         | 
| 98 99 | 
             
            - ".gitignore"
         | 
| 99 100 | 
             
            - ".rubocop.yml"
         | 
| 100 101 | 
             
            - ".travis.yml"
         | 
| @@ -106,6 +107,7 @@ files: | |
| 106 107 | 
             
            - bin/console
         | 
| 107 108 | 
             
            - bin/setup
         | 
| 108 109 | 
             
            - fluent-plugin-out_filter_list.gemspec
         | 
| 110 | 
            +
            - lib/base.rb
         | 
| 109 111 | 
             
            - lib/fluent/plugin/filter_filter_list.rb
         | 
| 110 112 | 
             
            - lib/fluent/plugin/out_filter_list.rb
         | 
| 111 113 | 
             
            - lib/fluent/plugin/out_filter_list/version.rb
         | 
| @@ -115,7 +117,7 @@ homepage: https://github.com/yanana/fluent-plugin-filter-list | |
| 115 117 | 
             
            licenses:
         | 
| 116 118 | 
             
            - MIT
         | 
| 117 119 | 
             
            metadata: {}
         | 
| 118 | 
            -
            post_install_message: | 
| 120 | 
            +
            post_install_message:
         | 
| 119 121 | 
             
            rdoc_options: []
         | 
| 120 122 | 
             
            require_paths:
         | 
| 121 123 | 
             
            - lib
         | 
| @@ -123,16 +125,15 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 123 125 | 
             
              requirements:
         | 
| 124 126 | 
             
              - - ">="
         | 
| 125 127 | 
             
                - !ruby/object:Gem::Version
         | 
| 126 | 
            -
                  version:  | 
| 128 | 
            +
                  version: 2.5.0
         | 
| 127 129 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 128 130 | 
             
              requirements:
         | 
| 129 131 | 
             
              - - ">="
         | 
| 130 132 | 
             
                - !ruby/object:Gem::Version
         | 
| 131 133 | 
             
                  version: '0'
         | 
| 132 134 | 
             
            requirements: []
         | 
| 133 | 
            -
             | 
| 134 | 
            -
             | 
| 135 | 
            -
            signing_key: 
         | 
| 135 | 
            +
            rubygems_version: 3.1.4
         | 
| 136 | 
            +
            signing_key:
         | 
| 136 137 | 
             
            specification_version: 4
         | 
| 137 138 | 
             
            summary: A fluentd output plugin to filter keywords from messages
         | 
| 138 139 | 
             
            test_files: []
         |