Sha256: a9b4189edd4def0cec5049671b1fa4501adc400bb944bf5dee4a9541dad27529
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
require 'raven/processor' module Raven module Processor class SanitizeData < Processor MASK = '********' FIELDS_RE = /(authorization|password|passwd|secret)/i VALUES_RE = /^\d{16}$/ def apply(value, key=nil, visited=[], &block) if value.is_a?(Hash) return "{...}" if visited.include?(value.__id__) visited += [value.__id__] value.each.inject({}) do |memo, (k, v)| memo[k] = apply(v, k, visited, &block) memo end elsif value.is_a?(Array) return "[...]" if visited.include?(value.__id__) visited += [value.__id__] value.map do |value_| apply(value_, key, visited, &block) end else block.call(key, value) end end def sanitize(key, value) if !value.is_a?(String) || value.empty? value elsif VALUES_RE.match(clean_invalid_utf8_bytes(value)) or FIELDS_RE.match(key) MASK else clean_invalid_utf8_bytes(value) end end def process(data) apply(data) do |key, value| sanitize(key, value) end end private def clean_invalid_utf8_bytes(text) if RUBY_VERSION <= '1.8.7' text else text.encode( 'UTF-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '' ) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sentry-raven-0.7.1 | lib/raven/processors/sanitizedata.rb |