logstop 0.2.8 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 270d72c3e5f7b204ba2cacce902adf8593dc6d5cab26d4470182aa41b14f3b5b
4
- data.tar.gz: 8d5608be8b5b507e8cd640ee0303731b0608a25affed828a0ece5e3b13424afe
3
+ metadata.gz: 2c789572d82afc9bd20c1c8414bf450cf23ba224cbee9c19d05175681c3e64ca
4
+ data.tar.gz: ec27ac10131118d95ef04c1646b43ba6244b132934d4d51dfaa4cb66d6da5291
5
5
  SHA512:
6
- metadata.gz: c4fc28afee3a1c604bf1af432ef8563bebba765f2e1f47dd44c6d6c0b335b3be28698432b8a1ff57eb707e27f396a841f67efb7adba46cc028d9388421db4eef
7
- data.tar.gz: 30b74692def2afe3ab7a48cc4235eafbc79660aa98ad3adf4e73ce7adf0c82873b62f42ffc196610e2f61f3acbf5c0bc03aed3c7bb428fd51744db8e2b6a33db
6
+ metadata.gz: 74785a1b621085024a1e8267a01f4cc0f2d886edcb0a3a31a6f2f3c6c9eb5f326014420e60381ef6e5d48ccc318014fe6b3ab57e8b08f92eb536de960c91841d
7
+ data.tar.gz: 946b1c80aa52a3c77f2cdb3193a4a3ac48db93cc7849ed5ac8f602c6278f2d9f8f25138153d8e63f64888ce10b1aced1424466f2b81f5604513835cca53efe2e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 0.3.1 (2023-07-02)
2
+
3
+ - Reduced false matches for URL passwords
4
+
5
+ ## 0.3.0 (2022-09-06)
6
+
7
+ - Added support for international phone numbers
8
+ - Added support for MAC addresses
9
+ - Dropped support for Ruby < 2.7
10
+
1
11
  ## 0.2.8 (2021-11-30)
2
12
 
3
13
  - Added support for disabling default rules
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Logstop
2
2
 
3
- :fire: Keep personally identifiable information (PII) out of your logs
3
+ :fire: Keep personal data out of your logs
4
4
 
5
5
  ```ruby
6
6
  logger.info "Hi test@example.org!"
@@ -30,7 +30,7 @@ Works even when sensitive data is URL-encoded with plus encoding
30
30
  Add this line to your application’s Gemfile:
31
31
 
32
32
  ```ruby
33
- gem 'logstop'
33
+ gem "logstop"
34
34
  ```
35
35
 
36
36
  And add it to your logger:
@@ -55,6 +55,12 @@ To scrub IP addresses (IPv4), use:
55
55
  Logstop.guard(logger, ip: true)
56
56
  ```
57
57
 
58
+ To scrub MAC addresses, use:
59
+
60
+ ```ruby
61
+ Logstop.guard(logger, mac: true)
62
+ ```
63
+
58
64
  Add custom rules with:
59
65
 
60
66
  ```ruby
@@ -2,7 +2,7 @@ require "logger"
2
2
 
3
3
  module Logstop
4
4
  class Formatter < ::Logger::Formatter
5
- def initialize(formatter = nil, url_password: true, email: true, credit_card: true, phone: true, ssn: true, ip: false, scrubber: nil)
5
+ def initialize(formatter = nil, url_password: true, email: true, credit_card: true, phone: true, ssn: true, ip: false, mac: false, scrubber: nil)
6
6
  @formatter = formatter || ::Logger::Formatter.new
7
7
  @url_password = url_password
8
8
  @email = email
@@ -10,6 +10,7 @@ module Logstop
10
10
  @phone = phone
11
11
  @ssn = ssn
12
12
  @ip = ip
13
+ @mac = mac
13
14
  @scrubber = scrubber
14
15
  end
15
16
 
@@ -22,6 +23,7 @@ module Logstop
22
23
  phone: @phone,
23
24
  ssn: @ssn,
24
25
  ip: @ip,
26
+ mac: @mac,
25
27
  scrubber: @scrubber
26
28
  )
27
29
  end
@@ -1,3 +1,3 @@
1
1
  module Logstop
2
- VERSION = "0.2.8"
2
+ VERSION = "0.3.1"
3
3
  end
data/lib/logstop.rb CHANGED
@@ -1,6 +1,6 @@
1
- require "logstop/formatter"
2
- require "logstop/railtie" if defined?(Rails)
3
- require "logstop/version"
1
+ require_relative "logstop/formatter"
2
+ require_relative "logstop/railtie" if defined?(Rails)
3
+ require_relative "logstop/version"
4
4
 
5
5
  module Logstop
6
6
  FILTERED_STR = "[FILTERED]".freeze
@@ -11,10 +11,12 @@ module Logstop
11
11
  EMAIL_REGEX = /\b[\w]([\w+.-]|%2B)+(?:@|%40)[a-z\d-]+(?:\.[a-z\d-]+)*\.[a-z]+\b/i
12
12
  IP_REGEX = /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/
13
13
  PHONE_REGEX = /\b(?:\+\d{1,2}\s)?\(?\d{3}\)?[\s+.-]\d{3}[\s+.-]\d{4}\b/
14
+ E164_PHONE_REGEX = /(?:\+|%2B)[1-9]\d{6,14}\b/
14
15
  SSN_REGEX = /\b\d{3}[\s+-]\d{2}[\s+-]\d{4}\b/
15
- URL_PASSWORD_REGEX = /((?:\/\/|%2F%2F)\S+(?::|%3A))\S+(@|%40)/
16
+ URL_PASSWORD_REGEX = /((?:\/\/|%2F%2F)[^\s\/]+(?::|%3A))[^\s\/]+(@|%40)/
17
+ MAC_REGEX = /\b[0-9a-f]{2}(?:(?::|%3A)[0-9a-f]{2}){5}\b/i
16
18
 
17
- def self.scrub(msg, url_password: true, email: true, credit_card: true, phone: true, ssn: true, ip: false, scrubber: nil)
19
+ def self.scrub(msg, url_password: true, email: true, credit_card: true, phone: true, ssn: true, ip: false, mac: false, scrubber: nil)
18
20
  msg = msg.to_s.dup
19
21
 
20
22
  # order filters are applied is important
@@ -24,9 +26,13 @@ module Logstop
24
26
  msg.gsub!(CREDIT_CARD_REGEX, FILTERED_STR)
25
27
  msg.gsub!(CREDIT_CARD_REGEX_DELIMITERS, FILTERED_STR)
26
28
  end
27
- msg.gsub!(PHONE_REGEX, FILTERED_STR) if phone
29
+ if phone
30
+ msg.gsub!(E164_PHONE_REGEX, FILTERED_STR)
31
+ msg.gsub!(PHONE_REGEX, FILTERED_STR)
32
+ end
28
33
  msg.gsub!(SSN_REGEX, FILTERED_STR) if ssn
29
34
  msg.gsub!(IP_REGEX, FILTERED_STR) if ip
35
+ msg.gsub!(MAC_REGEX, FILTERED_STR) if mac
30
36
 
31
37
  msg = scrubber.call(msg) if scrubber
32
38
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-30 00:00:00.000000000 Z
11
+ date: 2023-07-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: andrew@ankane.org
@@ -35,15 +35,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
35
35
  requirements:
36
36
  - - ">="
37
37
  - !ruby/object:Gem::Version
38
- version: '2.2'
38
+ version: '2.7'
39
39
  required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  requirements: []
45
- rubygems_version: 3.2.32
45
+ rubygems_version: 3.4.10
46
46
  signing_key:
47
47
  specification_version: 4
48
- summary: Keep personally identifiable information (PII) out of your logs
48
+ summary: Keep personal data out of your logs
49
49
  test_files: []