lib/logstop.rb in logstop-0.2.3 vs lib/logstop.rb in logstop-0.2.4

- old
+ new

@@ -4,28 +4,32 @@ module Logstop FILTERED_STR = "[FILTERED]".freeze FILTERED_URL_STR = "\\1[FILTERED]@".freeze - CREDIT_CARD_REGEX = /\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/ - EMAIL_REGEX = /\b[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\b/i + CREDIT_CARD_REGEX = /\b\d{4}[\s+-]?\d{4}[\s+-]?\d{4}[\s+-]?\d{4}\b/ + EMAIL_REGEX = /\b[\w][\w+.-]+(@|%40)[a-z\d-]+(\.[a-z\d-]+)*\.[a-z]+\b/i IP_REGEX = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/ - PHONE_REGEX = /\b(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}\b/ - SSN_REGEX = /\b\d{3}[\s-]\d{2}[\s-]\d{4}\b/ - URL_PASSWORD_REGEX = /(\/\/\S+:)\S+@/ + PHONE_REGEX = /\b(\+\d{1,2}\s)?\(?\d{3}\)?[\s+.-]\d{3}[\s+.-]\d{4}\b/ + SSN_REGEX = /\b\d{3}[\s+-]\d{2}[\s+-]\d{4}\b/ + URL_PASSWORD_REGEX = /((\/\/|%2F%2F)\S+(:|%3A))\S+(@|%40)/ - def self.scrub(msg, ip: false) + def self.scrub(msg, ip: false, scrubber: nil) msg = msg.to_s - msg = msg.gsub(IP_REGEX, FILTERED_STR) if ip - # order filters are applied is important - msg + msg = msg + .gsub(URL_PASSWORD_REGEX, FILTERED_URL_STR) + .gsub(EMAIL_REGEX, FILTERED_STR) .gsub(CREDIT_CARD_REGEX, FILTERED_STR) .gsub(PHONE_REGEX, FILTERED_STR) .gsub(SSN_REGEX, FILTERED_STR) - .gsub(URL_PASSWORD_REGEX, FILTERED_URL_STR) - .gsub(EMAIL_REGEX, FILTERED_STR) + + msg = msg.gsub(IP_REGEX, FILTERED_STR) if ip + + msg = scrubber.call(msg) if scrubber + + msg end def self.guard(logger, **options) logger.formatter = Logstop::Formatter.new(logger.formatter, **options) end