Class: LogStash::Filters::Cipher

Inherits:
Base
  • Object
show all
Defined in:
lib/logstash/filters/cipher.rb

Overview

This filter parses a source and apply a cipher or decipher before storing it in the target.

Instance Method Summary collapse

Instance Method Details

#filter(event) ⇒ Object

def register



130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/logstash/filters/cipher.rb', line 130

def filter(event)
  source = event.get(@source)
  if (source.nil? || source.empty?)
    @logger.debug("Event to filter, event 'source' field: " + @source + " was null(nil) or blank, doing nothing")
    return
  end

  result = case(@mode)
           when "encrypt" then do_encrypt(source)
           when "decrypt" then do_decrypt(source)
           else
             @logger.error("Invalid cipher mode. Valid values are \"encrypt\" or \"decrypt\"", :mode => @mode)
             raise "Internal Error, aborting."
           end

  event.set(@target, result)
  filter_matched(event) unless result.nil?
rescue => e
  @logger.error("An error occurred while #{@mode}ing.", :exception => e.message)
  event.tag("_cipherfiltererror")
end

#registerObject



117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/logstash/filters/cipher.rb', line 117

def register
  require 'base64' if @base64
  if cipher_reuse_enabled?
    @reusable_cipher = Concurrent::ThreadLocalVar.new
    @cipher_reuse_count = Concurrent::ThreadLocalVar.new
  end

  if @key.value.length != @key_size
    @logger.debug("key length is " + @key.value.length.to_s + ", padding it to " + @key_size.to_s + " with '" + @key_pad.to_s + "'")
    @key = @key.class.new(@key.value[0,@key_size].ljust(@key_size,@key_pad))
  end
end