class LogStash::Filters::Mask

This filter will replace the contents of the default message field with whatever you specify in the configuration.

It is only intended to be used as an .

Public Instance Methods

filter(event) click to toggle source
# File lib/logstash/filters/mask.rb, line 33
def filter(event)
  data = event.get(@message)

  if @keys_to_mask.nil? || @keys_to_mask.empty?
    raise "keys_to_mask missing"
  end
  keys = keys_to_mask.to_s.split(",")
  logs = data['logs']

  mLogs = logs.map do |log|
    # This if condition is to avoid  any boolean or strng type value in array of logs object
    # as it is not a valid values
    if !log.is_a?(FalseClass) && !log.is_a?(TrueClass) && !log.is_a?(String)
      message = log['message']
      if log["mask"] == "maskAll" && log["type"].match(/input|output/)
        log = maskLog(log)
      elsif log["type"].match(/input/)
        log["message"] = maskTokens(keys, message)
      end
      log["uid"] = "log-#{SecureRandom.uuid}"
      log
    end
  end
  mLogs = mLogs.compact
  mLogs.compact
  event.set("message", mLogs)

  # filter_matched should go in the last line of our successful code
  filter_matched(event)
end
maskLog(data) click to toggle source
# File lib/logstash/filters/mask.rb, line 64
def maskLog(data)
  if data["type"] == "input"
    data["message"] = "Input data is masked"
  elsif data["type"] == "output"
    data["message"] = "Output data is masked"
  end
  return data
end
maskTokens(keys, message) click to toggle source
# File lib/logstash/filters/mask.rb, line 73
def maskTokens(keys, message)
  begin
    message = JSON.parse(message)
  rescue
    return message
  end
  for i in keys do
    if !message[i].nil?
      message[i] = mask_key
    end
  end
  return message.to_json
end
register() click to toggle source
# File lib/logstash/filters/mask.rb, line 28
def register
  # Add instance variables
end