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