Sha256: 3855cd47ff3d1c5e5cdb3e6fd6ba6c473d71024c42736be2f24797cdb0d3c1ae

Contents?: true

Size: 1.09 KB

Versions: 3

Compression:

Stored size: 1.09 KB

Contents

# encoding: utf-8
require "base64"

require "logstash/filters/base"
require "logstash/namespace"

class LogStash::Filters::Base64 < LogStash::Filters::Base

  config_name "base64"

  # The type of base64 transformation
  config :action, :validate => ["decode", "encode"], :default => "decode"

  # The field to encode/decode in-place
  config :field, :validate => :string, :default => "message"

  # Append values to the `tags` field on failure
  config :tag_on_failure, :validate => :array, :default => ["_base64failure"]

  private
  def filter_failed(event, tags)
    tags.each {|tag| event.tag(tag)}
  end

  public
  def register
  end

  public
  def filter(event)
    value = event.get(@field)

    if !(value.is_a? String)
      return filter_failed(event, @tag_on_failure)
    end

    begin
      case @action
      when "encode"
        event.set(@field, Base64.strict_encode64(value))
      when "decode"
        event.set(@field, Base64.strict_decode64(value))
      end
    rescue ArgumentError, TypeError
      return filter_failed(event, @tag_on_failure)
    end

    filter_matched(event)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
logstash-filter-base64-1.0.5 lib/logstash/filters/base64.rb
logstash-filter-base64-1.0.4 lib/logstash/filters/base64.rb
logstash-filter-base64-1.0.3 lib/logstash/filters/base64.rb