auth-sanitizer 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +106 -1
- data/LICENSE.md +1 -1
- data/README.md +58 -54
- data/lib/auth/sanitizer/core.rb +7 -13
- data/lib/auth/sanitizer/filtered_attributes.rb +15 -10
- data/lib/auth/sanitizer/sanitized_logger.rb +59 -33
- data/lib/auth/sanitizer/thing_filter.rb +3 -3
- data/lib/auth/sanitizer/version.rb +4 -1
- data/lib/auth/sanitizer.rb +1 -1
- data/lib/auth_sanitizer/loader.rb +5 -0
- data/sig/auth/sanitizer.rbs +9 -0
- data.tar.gz.sig +2 -1
- metadata +50 -47
- metadata.gz.sig +0 -0
- data/CITATION.cff +0 -20
- data/CODE_OF_CONDUCT.md +0 -134
- data/CONTRIBUTING.md +0 -275
- data/FUNDING.md +0 -70
- data/MIT.md +0 -21
- data/RUBOCOP.md +0 -71
- data/SECURITY.md +0 -21
- data/certs/pboling.pem +0 -27
- data/sig/auth/sanitizer/version.rbs +0 -8
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module Auth
|
|
4
4
|
module Sanitizer
|
|
5
|
-
# Logger wrapper that redacts sensitive values from debug output before
|
|
6
|
-
#
|
|
5
|
+
# Logger wrapper that redacts sensitive values from debug output before delegating to the
|
|
6
|
+
# underlying logger instance.
|
|
7
7
|
#
|
|
8
|
-
# This class is intentionally narrow in scope: it only sanitizes string
|
|
9
|
-
#
|
|
10
|
-
# behavior unchanged.
|
|
8
|
+
# This class is intentionally narrow in scope: it only sanitizes string messages emitted
|
|
9
|
+
# through the logging path and leaves request/response behavior unchanged.
|
|
11
10
|
#
|
|
12
11
|
# The underlying {ThingFilter} is initialized once when the logger wrapper is
|
|
13
12
|
# created, so later config changes do not alter the behavior of existing
|
|
@@ -15,12 +14,12 @@ module Auth
|
|
|
15
14
|
class SanitizedLogger
|
|
16
15
|
# Create a new sanitized logger wrapper.
|
|
17
16
|
#
|
|
18
|
-
# @param [#add, #debug, #info, #warn, #error, #fatal, #unknown]
|
|
17
|
+
# @param logger [#add, #debug, #info, #warn, #error, #fatal, #unknown]
|
|
19
18
|
# The underlying logger instance that will receive sanitized messages.
|
|
20
|
-
# @param [Array<String>]
|
|
19
|
+
# @param filtered_keys [Array<String>]
|
|
21
20
|
# Key names whose values should be redacted in debug output.
|
|
22
21
|
# Defaults to {Auth::Sanitizer.default_filtered_keys}.
|
|
23
|
-
# @param [String]
|
|
22
|
+
# @param label [String]
|
|
24
23
|
# Replacement label for redacted values.
|
|
25
24
|
# Defaults to {Auth::Sanitizer.filtered_label}.
|
|
26
25
|
def initialize(logger, filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label)
|
|
@@ -30,9 +29,9 @@ module Auth
|
|
|
30
29
|
|
|
31
30
|
# Add a log entry after sanitizing any string payloads.
|
|
32
31
|
#
|
|
33
|
-
# @param [Integer, Symbol, String, nil]
|
|
34
|
-
# @param [Object, nil]
|
|
35
|
-
# @param [Object, nil]
|
|
32
|
+
# @param severity [Integer, Symbol, String, nil] Logger severity
|
|
33
|
+
# @param message [Object, nil] Optional log message
|
|
34
|
+
# @param progname [Object, nil] Optional program name
|
|
36
35
|
# @yieldreturn [Object] Deferred log message
|
|
37
36
|
# @return [Object] The underlying logger result
|
|
38
37
|
def add(severity, message = nil, progname = nil)
|
|
@@ -45,7 +44,7 @@ module Auth
|
|
|
45
44
|
|
|
46
45
|
# Append a message to the underlying logger after sanitization.
|
|
47
46
|
#
|
|
48
|
-
# @param [String]
|
|
47
|
+
# @param message [String] Message to append
|
|
49
48
|
# @return [Object] The underlying logger result
|
|
50
49
|
def <<(message)
|
|
51
50
|
@logger << sanitize(message)
|
|
@@ -53,7 +52,7 @@ module Auth
|
|
|
53
52
|
|
|
54
53
|
# Log a debug message after sanitization.
|
|
55
54
|
#
|
|
56
|
-
# @param [Object, nil]
|
|
55
|
+
# @param progname [Object, nil] Optional program name
|
|
57
56
|
# @yieldreturn [Object] Deferred log message
|
|
58
57
|
# @return [Object] The underlying logger result
|
|
59
58
|
def debug(progname = nil, &block)
|
|
@@ -62,7 +61,7 @@ module Auth
|
|
|
62
61
|
|
|
63
62
|
# Log an info message after sanitization.
|
|
64
63
|
#
|
|
65
|
-
# @param [Object, nil]
|
|
64
|
+
# @param progname [Object, nil] Optional program name
|
|
66
65
|
# @yieldreturn [Object] Deferred log message
|
|
67
66
|
# @return [Object] The underlying logger result
|
|
68
67
|
def info(progname = nil, &block)
|
|
@@ -71,7 +70,7 @@ module Auth
|
|
|
71
70
|
|
|
72
71
|
# Log a warning message after sanitization.
|
|
73
72
|
#
|
|
74
|
-
# @param [Object, nil]
|
|
73
|
+
# @param progname [Object, nil] Optional program name
|
|
75
74
|
# @yieldreturn [Object] Deferred log message
|
|
76
75
|
# @return [Object] The underlying logger result
|
|
77
76
|
def warn(progname = nil, &block)
|
|
@@ -80,7 +79,7 @@ module Auth
|
|
|
80
79
|
|
|
81
80
|
# Log an error message after sanitization.
|
|
82
81
|
#
|
|
83
|
-
# @param [Object, nil]
|
|
82
|
+
# @param progname [Object, nil] Optional program name
|
|
84
83
|
# @yieldreturn [Object] Deferred log message
|
|
85
84
|
# @return [Object] The underlying logger result
|
|
86
85
|
def error(progname = nil, &block)
|
|
@@ -89,7 +88,7 @@ module Auth
|
|
|
89
88
|
|
|
90
89
|
# Log a fatal message after sanitization.
|
|
91
90
|
#
|
|
92
|
-
# @param [Object, nil]
|
|
91
|
+
# @param progname [Object, nil] Optional program name
|
|
93
92
|
# @yieldreturn [Object] Deferred log message
|
|
94
93
|
# @return [Object] The underlying logger result
|
|
95
94
|
def fatal(progname = nil, &block)
|
|
@@ -98,7 +97,7 @@ module Auth
|
|
|
98
97
|
|
|
99
98
|
# Log an unknown-severity message after sanitization.
|
|
100
99
|
#
|
|
101
|
-
# @param [Object, nil]
|
|
100
|
+
# @param progname [Object, nil] Optional program name
|
|
102
101
|
# @yieldreturn [Object] Deferred log message
|
|
103
102
|
# @return [Object] The underlying logger result
|
|
104
103
|
def unknown(progname = nil, &block)
|
|
@@ -121,7 +120,7 @@ module Auth
|
|
|
121
120
|
|
|
122
121
|
# Set the formatter of the underlying logger if supported.
|
|
123
122
|
#
|
|
124
|
-
# @param [Object]
|
|
123
|
+
# @param formatter [Object] Formatter object
|
|
125
124
|
# @return [void]
|
|
126
125
|
def formatter=(formatter)
|
|
127
126
|
@logger.formatter = formatter if @logger.respond_to?(:formatter=)
|
|
@@ -136,7 +135,7 @@ module Auth
|
|
|
136
135
|
|
|
137
136
|
# Set the logger level if supported.
|
|
138
137
|
#
|
|
139
|
-
# @param [Object]
|
|
138
|
+
# @param level [Object] Logger level
|
|
140
139
|
# @return [void]
|
|
141
140
|
def level=(level)
|
|
142
141
|
@logger.level = level if @logger.respond_to?(:level=)
|
|
@@ -151,7 +150,7 @@ module Auth
|
|
|
151
150
|
|
|
152
151
|
# Set the logger progname if supported.
|
|
153
152
|
#
|
|
154
|
-
# @param [Object]
|
|
153
|
+
# @param progname [Object] Logger progname
|
|
155
154
|
# @return [void]
|
|
156
155
|
def progname=(progname)
|
|
157
156
|
@logger.progname = progname if @logger.respond_to?(:progname=)
|
|
@@ -159,8 +158,8 @@ module Auth
|
|
|
159
158
|
|
|
160
159
|
# Report support for methods provided by the wrapped logger.
|
|
161
160
|
#
|
|
162
|
-
# @param [Symbol]
|
|
163
|
-
# @param [Boolean]
|
|
161
|
+
# @param method_name [Symbol] Method name to check
|
|
162
|
+
# @param include_private [Boolean] Whether private methods are considered
|
|
164
163
|
# @return [Boolean]
|
|
165
164
|
def respond_to_missing?(method_name, include_private = false)
|
|
166
165
|
@logger.respond_to?(method_name, include_private) || super
|
|
@@ -168,8 +167,8 @@ module Auth
|
|
|
168
167
|
|
|
169
168
|
# Delegate unsupported methods to the wrapped logger.
|
|
170
169
|
#
|
|
171
|
-
# @param [Symbol]
|
|
172
|
-
# @param [Array<Object>]
|
|
170
|
+
# @param method_name [Symbol] Method to invoke
|
|
171
|
+
# @param args [Array<Object>] Method arguments
|
|
173
172
|
# @yield Deferred block forwarded to the wrapped logger
|
|
174
173
|
# @return [Object] The delegated result
|
|
175
174
|
def method_missing(method_name, *args, &block)
|
|
@@ -182,8 +181,8 @@ module Auth
|
|
|
182
181
|
|
|
183
182
|
# Dispatch a severity-specific log call after sanitization.
|
|
184
183
|
#
|
|
185
|
-
# @param [Symbol]
|
|
186
|
-
# @param [Object, nil]
|
|
184
|
+
# @param level [Symbol] Logger method name
|
|
185
|
+
# @param progname [Object, nil] Optional program name
|
|
187
186
|
# @yieldreturn [Object] Deferred log message
|
|
188
187
|
# @return [Object] The underlying logger result
|
|
189
188
|
def log(level, progname = nil)
|
|
@@ -196,14 +195,17 @@ module Auth
|
|
|
196
195
|
|
|
197
196
|
# Sanitize a logger message when it is a String.
|
|
198
197
|
#
|
|
199
|
-
# @param [Object]
|
|
198
|
+
# @param message [Object] Potential logger payload
|
|
200
199
|
# @return [Object] Unchanged non-String payloads, sanitized String payloads
|
|
201
200
|
def sanitize(message)
|
|
202
201
|
return message unless message.is_a?(String)
|
|
203
202
|
|
|
204
|
-
|
|
203
|
+
# scrub replaces invalid byte sequences so the gsub calls below never
|
|
204
|
+
# raise on an invalid encoding while logging a request.
|
|
205
|
+
sanitized = message.dup.scrub
|
|
205
206
|
sanitized = sanitize_authorization_header(sanitized)
|
|
206
207
|
sanitized = sanitize_json_pairs(sanitized)
|
|
208
|
+
sanitized = sanitize_inspect_pairs(sanitized)
|
|
207
209
|
sanitize_form_and_query_pairs(sanitized)
|
|
208
210
|
end
|
|
209
211
|
|
|
@@ -216,7 +218,7 @@ module Auth
|
|
|
216
218
|
|
|
217
219
|
# Redact Authorization header values.
|
|
218
220
|
#
|
|
219
|
-
# @param [String]
|
|
221
|
+
# @param message [String] Logger message
|
|
220
222
|
# @return [String] Sanitized logger message
|
|
221
223
|
def sanitize_authorization_header(message)
|
|
222
224
|
message.gsub(/(Authorization:\s*)(?:"[^"]*"|[^\r\n]+)/i, "\\1\"#{thing_filter.label}\"")
|
|
@@ -224,7 +226,7 @@ module Auth
|
|
|
224
226
|
|
|
225
227
|
# Redact JSON-style values for configured sensitive key names.
|
|
226
228
|
#
|
|
227
|
-
# @param [String]
|
|
229
|
+
# @param message [String] Logger message
|
|
228
230
|
# @return [String] Sanitized logger message
|
|
229
231
|
def sanitize_json_pairs(message)
|
|
230
232
|
message.gsub(/(["'])(#{thing_filter.pattern_source})\1(\s*:\s*)(["'])(.*?)\4/i) do
|
|
@@ -232,12 +234,36 @@ module Auth
|
|
|
232
234
|
end
|
|
233
235
|
end
|
|
234
236
|
|
|
237
|
+
# Redact values in Ruby `Hash#inspect` output for configured sensitive key names.
|
|
238
|
+
#
|
|
239
|
+
# Faraday's debug logger renders non-String bodies (such as the params Hash an OAuth client
|
|
240
|
+
# builds for a token request) with `pretty_inspect`, so secrets reach the logger in Ruby
|
|
241
|
+
# inspect syntax rather than JSON or form encoding. Handles both Ruby 3.4+ formats
|
|
242
|
+
# (`{"key" => "value"}`, `{key: "value"}`) and the pre-3.4 formats (`{"key"=>"value"}`,
|
|
243
|
+
# `{:key=>"value"}`), case-insensitively.
|
|
244
|
+
#
|
|
245
|
+
# @param message [String] Logger message
|
|
246
|
+
# @return [String] Sanitized logger message
|
|
247
|
+
def sanitize_inspect_pairs(message)
|
|
248
|
+
key = thing_filter.pattern_source
|
|
249
|
+
label = thing_filter.label
|
|
250
|
+
# Hash-rocket pairs: "key" => "value" / "key"=>"value" / :key=>"value"
|
|
251
|
+
message = message.gsub(/((?:"(?:#{key})"|:#{key})\s*=>\s*")[^"]*(")/i) { "#{$1}#{label}#{$2}" }
|
|
252
|
+
# Symbol shorthand pairs: key: "value" (not preceded by a quote, so
|
|
253
|
+
# already-sanitized JSON pairs are not reprocessed)
|
|
254
|
+
message.gsub(/(?<!["'])((?:\b(?:#{key})):\s*")[^"]*(")/i) { "#{$1}#{label}#{$2}" }
|
|
255
|
+
end
|
|
256
|
+
|
|
235
257
|
# Redact form-encoded and query-string values for configured sensitive key names.
|
|
236
258
|
#
|
|
237
|
-
#
|
|
259
|
+
# The value class excludes `"` and `>` so the pattern neither crosses
|
|
260
|
+
# into quoted strings nor mangles `Hash#inspect` hash-rocket pairs
|
|
261
|
+
# (`:key=>"value"`), which {sanitize_inspect_pairs} handles instead.
|
|
262
|
+
#
|
|
263
|
+
# @param message [String] Logger message
|
|
238
264
|
# @return [String] Sanitized logger message
|
|
239
265
|
def sanitize_form_and_query_pairs(message)
|
|
240
|
-
message.gsub(/(\b(?:#{thing_filter.pattern_source})=)([^&\s"]+)/i, "\\1#{thing_filter.label}")
|
|
266
|
+
message.gsub(/(\b(?:#{thing_filter.pattern_source})=)([^&\s">]+)/i, "\\1#{thing_filter.label}")
|
|
241
267
|
end
|
|
242
268
|
end
|
|
243
269
|
end
|
|
@@ -13,8 +13,8 @@ module Auth
|
|
|
13
13
|
class ThingFilter
|
|
14
14
|
# Create a new filter.
|
|
15
15
|
#
|
|
16
|
-
# @param [Enumerable<#to_s>]
|
|
17
|
-
# @param [String]
|
|
16
|
+
# @param things [Enumerable<#to_s>] Names that should be filtered
|
|
17
|
+
# @param label [String] Replacement label to use for filtered values
|
|
18
18
|
#
|
|
19
19
|
# The provided values are duplicated and frozen so the filter remains
|
|
20
20
|
# stable for the lifetime of the object.
|
|
@@ -39,7 +39,7 @@ module Auth
|
|
|
39
39
|
# Matching is substring-based so it works naturally with instance-variable
|
|
40
40
|
# names used by `#inspect`, such as `@secret` matching `secret`.
|
|
41
41
|
#
|
|
42
|
-
# @param [#to_s]
|
|
42
|
+
# @param thing_name [#to_s] Candidate thing name
|
|
43
43
|
# @return [Boolean]
|
|
44
44
|
def filtered?(thing_name)
|
|
45
45
|
thing_name_str = thing_name.to_s
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
module Auth
|
|
4
4
|
module Sanitizer
|
|
5
|
+
# Version namespace for this gem.
|
|
5
6
|
module Version
|
|
6
|
-
|
|
7
|
+
# Current gem version.
|
|
8
|
+
VERSION = "0.2.4"
|
|
7
9
|
end
|
|
10
|
+
# Current gem version exposed at the traditional constant location.
|
|
8
11
|
VERSION = Version::VERSION # Traditional Constant Location
|
|
9
12
|
end
|
|
10
13
|
end
|
data/lib/auth/sanitizer.rb
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
require "version_gem"
|
|
4
4
|
|
|
5
|
-
require_relative "sanitizer/version"
|
|
6
5
|
require_relative "sanitizer/thing_filter"
|
|
7
6
|
require_relative "sanitizer/core"
|
|
8
7
|
require_relative "sanitizer/filtered_attributes"
|
|
9
8
|
require_relative "sanitizer/sanitized_logger"
|
|
9
|
+
require_relative "sanitizer/version"
|
|
10
10
|
|
|
11
11
|
Auth::Sanitizer::Version.class_eval do
|
|
12
12
|
extend VersionGem::Basic
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# Namespace for the isolated loader surface of the auth-sanitizer gem.
|
|
3
4
|
module AuthSanitizer
|
|
4
5
|
# Loader for consumers that need Auth::Sanitizer without defining a top-level
|
|
5
6
|
# Auth constant in the host application.
|
|
6
7
|
module Loader
|
|
8
|
+
# Gem source files evaluated into the anonymous namespace, in load order.
|
|
7
9
|
FILES = %w[
|
|
8
10
|
auth/sanitizer/version.rb
|
|
9
11
|
auth/sanitizer/thing_filter.rb
|
|
@@ -39,6 +41,9 @@ module AuthSanitizer
|
|
|
39
41
|
# the anonymous Auth namespace. This keeps the normal files unchanged while
|
|
40
42
|
# avoiding Object::Auth leakage on runtimes where Module#module_eval still
|
|
41
43
|
# resolves nested module declarations through Object.
|
|
44
|
+
#
|
|
45
|
+
# @param path [String] Absolute path to the gem source file
|
|
46
|
+
# @return [String] The source with the top-level wrapper removed
|
|
42
47
|
def isolated_source(path)
|
|
43
48
|
lines = File.readlines(path)
|
|
44
49
|
wrapper_index = lines.index("module Auth\n")
|
data/sig/auth/sanitizer.rbs
CHANGED
data.tar.gz.sig
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
Ucp1�/>R�l{��8,�ͷF�i���p>oNv
|
|
2
|
+
��h��jB%���p�P���q�����p���u�z�S�����e\�K���(D��݆yD���OO�Ȱn�&��^
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: auth-sanitizer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter H. Boling
|
|
@@ -46,7 +46,7 @@ dependencies:
|
|
|
46
46
|
version: '1.1'
|
|
47
47
|
- - ">="
|
|
48
48
|
- !ruby/object:Gem::Version
|
|
49
|
-
version: 1.1.
|
|
49
|
+
version: 1.1.16
|
|
50
50
|
type: :runtime
|
|
51
51
|
prerelease: false
|
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -56,27 +56,27 @@ dependencies:
|
|
|
56
56
|
version: '1.1'
|
|
57
57
|
- - ">="
|
|
58
58
|
- !ruby/object:Gem::Version
|
|
59
|
-
version: 1.1.
|
|
59
|
+
version: 1.1.16
|
|
60
60
|
- !ruby/object:Gem::Dependency
|
|
61
61
|
name: kettle-dev
|
|
62
62
|
requirement: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version: '
|
|
66
|
+
version: '3.1'
|
|
67
67
|
- - ">="
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version:
|
|
69
|
+
version: 3.1.22
|
|
70
70
|
type: :development
|
|
71
71
|
prerelease: false
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
73
|
requirements:
|
|
74
74
|
- - "~>"
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: '
|
|
76
|
+
version: '3.1'
|
|
77
77
|
- - ">="
|
|
78
78
|
- !ruby/object:Gem::Version
|
|
79
|
-
version:
|
|
79
|
+
version: 3.1.22
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
81
|
name: bundler-audit
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -125,26 +125,46 @@ dependencies:
|
|
|
125
125
|
- - ">="
|
|
126
126
|
- !ruby/object:Gem::Version
|
|
127
127
|
version: 1.0.4
|
|
128
|
+
- !ruby/object:Gem::Dependency
|
|
129
|
+
name: anonymous_loader
|
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
|
131
|
+
requirements:
|
|
132
|
+
- - "~>"
|
|
133
|
+
- !ruby/object:Gem::Version
|
|
134
|
+
version: '0.1'
|
|
135
|
+
- - ">="
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: 0.1.4
|
|
138
|
+
type: :development
|
|
139
|
+
prerelease: false
|
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
141
|
+
requirements:
|
|
142
|
+
- - "~>"
|
|
143
|
+
- !ruby/object:Gem::Version
|
|
144
|
+
version: '0.1'
|
|
145
|
+
- - ">="
|
|
146
|
+
- !ruby/object:Gem::Version
|
|
147
|
+
version: 0.1.4
|
|
128
148
|
- !ruby/object:Gem::Dependency
|
|
129
149
|
name: appraisal2
|
|
130
150
|
requirement: !ruby/object:Gem::Requirement
|
|
131
151
|
requirements:
|
|
132
152
|
- - "~>"
|
|
133
153
|
- !ruby/object:Gem::Version
|
|
134
|
-
version: '3.
|
|
154
|
+
version: '3.2'
|
|
135
155
|
- - ">="
|
|
136
156
|
- !ruby/object:Gem::Version
|
|
137
|
-
version: 3.
|
|
157
|
+
version: 3.2.6
|
|
138
158
|
type: :development
|
|
139
159
|
prerelease: false
|
|
140
160
|
version_requirements: !ruby/object:Gem::Requirement
|
|
141
161
|
requirements:
|
|
142
162
|
- - "~>"
|
|
143
163
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: '3.
|
|
164
|
+
version: '3.2'
|
|
145
165
|
- - ">="
|
|
146
166
|
- !ruby/object:Gem::Version
|
|
147
|
-
version: 3.
|
|
167
|
+
version: 3.2.6
|
|
148
168
|
- !ruby/object:Gem::Dependency
|
|
149
169
|
name: kettle-test
|
|
150
170
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,7 +174,7 @@ dependencies:
|
|
|
154
174
|
version: '2.0'
|
|
155
175
|
- - ">="
|
|
156
176
|
- !ruby/object:Gem::Version
|
|
157
|
-
version: 2.0.
|
|
177
|
+
version: 2.0.27
|
|
158
178
|
type: :development
|
|
159
179
|
prerelease: false
|
|
160
180
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -164,27 +184,27 @@ dependencies:
|
|
|
164
184
|
version: '2.0'
|
|
165
185
|
- - ">="
|
|
166
186
|
- !ruby/object:Gem::Version
|
|
167
|
-
version: 2.0.
|
|
187
|
+
version: 2.0.27
|
|
168
188
|
- !ruby/object:Gem::Dependency
|
|
169
189
|
name: turbo_tests2
|
|
170
190
|
requirement: !ruby/object:Gem::Requirement
|
|
171
191
|
requirements:
|
|
172
192
|
- - "~>"
|
|
173
193
|
- !ruby/object:Gem::Version
|
|
174
|
-
version: '
|
|
194
|
+
version: '4.0'
|
|
175
195
|
- - ">="
|
|
176
196
|
- !ruby/object:Gem::Version
|
|
177
|
-
version:
|
|
197
|
+
version: 4.0.0
|
|
178
198
|
type: :development
|
|
179
199
|
prerelease: false
|
|
180
200
|
version_requirements: !ruby/object:Gem::Requirement
|
|
181
201
|
requirements:
|
|
182
202
|
- - "~>"
|
|
183
203
|
- !ruby/object:Gem::Version
|
|
184
|
-
version: '
|
|
204
|
+
version: '4.0'
|
|
185
205
|
- - ">="
|
|
186
206
|
- !ruby/object:Gem::Version
|
|
187
|
-
version:
|
|
207
|
+
version: 4.0.0
|
|
188
208
|
- !ruby/object:Gem::Dependency
|
|
189
209
|
name: ruby-progressbar
|
|
190
210
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -208,7 +228,7 @@ dependencies:
|
|
|
208
228
|
version: '1.0'
|
|
209
229
|
- - ">="
|
|
210
230
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: 1.0.
|
|
231
|
+
version: 1.0.9
|
|
212
232
|
type: :development
|
|
213
233
|
prerelease: false
|
|
214
234
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -218,7 +238,7 @@ dependencies:
|
|
|
218
238
|
version: '1.0'
|
|
219
239
|
- - ">="
|
|
220
240
|
- !ruby/object:Gem::Version
|
|
221
|
-
version: 1.0.
|
|
241
|
+
version: 1.0.9
|
|
222
242
|
- !ruby/object:Gem::Dependency
|
|
223
243
|
name: gitmoji-regex
|
|
224
244
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -228,7 +248,7 @@ dependencies:
|
|
|
228
248
|
version: '2.0'
|
|
229
249
|
- - ">="
|
|
230
250
|
- !ruby/object:Gem::Version
|
|
231
|
-
version: 2.0.
|
|
251
|
+
version: 2.0.15
|
|
232
252
|
type: :development
|
|
233
253
|
prerelease: false
|
|
234
254
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -238,34 +258,17 @@ dependencies:
|
|
|
238
258
|
version: '2.0'
|
|
239
259
|
- - ">="
|
|
240
260
|
- !ruby/object:Gem::Version
|
|
241
|
-
version: 2.0.
|
|
242
|
-
description: "\
|
|
261
|
+
version: 2.0.15
|
|
262
|
+
description: "\U0001F9FC Configurable KV output redaction. Sanitize/filter your secrets."
|
|
243
263
|
email:
|
|
244
264
|
- floss@galtzo.com
|
|
245
265
|
executables: []
|
|
246
266
|
extensions: []
|
|
247
|
-
extra_rdoc_files:
|
|
248
|
-
- CHANGELOG.md
|
|
249
|
-
- CITATION.cff
|
|
250
|
-
- CODE_OF_CONDUCT.md
|
|
251
|
-
- CONTRIBUTING.md
|
|
252
|
-
- FUNDING.md
|
|
253
|
-
- LICENSE.md
|
|
254
|
-
- README.md
|
|
255
|
-
- RUBOCOP.md
|
|
256
|
-
- SECURITY.md
|
|
267
|
+
extra_rdoc_files: []
|
|
257
268
|
files:
|
|
258
269
|
- CHANGELOG.md
|
|
259
|
-
- CITATION.cff
|
|
260
|
-
- CODE_OF_CONDUCT.md
|
|
261
|
-
- CONTRIBUTING.md
|
|
262
|
-
- FUNDING.md
|
|
263
270
|
- LICENSE.md
|
|
264
|
-
- MIT.md
|
|
265
271
|
- README.md
|
|
266
|
-
- RUBOCOP.md
|
|
267
|
-
- SECURITY.md
|
|
268
|
-
- certs/pboling.pem
|
|
269
272
|
- lib/auth/sanitizer.rb
|
|
270
273
|
- lib/auth/sanitizer/core.rb
|
|
271
274
|
- lib/auth/sanitizer/filtered_attributes.rb
|
|
@@ -274,24 +277,24 @@ files:
|
|
|
274
277
|
- lib/auth/sanitizer/version.rb
|
|
275
278
|
- lib/auth_sanitizer/loader.rb
|
|
276
279
|
- sig/auth/sanitizer.rbs
|
|
277
|
-
- sig/auth/sanitizer/version.rbs
|
|
278
280
|
homepage: https://github.com/ruby-oauth/auth-sanitizer
|
|
279
281
|
licenses:
|
|
280
282
|
- MIT
|
|
281
283
|
metadata:
|
|
282
284
|
homepage_uri: https://auth-sanitizer.galtzo.com
|
|
283
|
-
source_code_uri: https://github.com/ruby-oauth/auth-sanitizer/tree/v0.2.
|
|
284
|
-
changelog_uri: https://github.com/ruby-oauth/auth-sanitizer/blob/v0.2.
|
|
285
|
+
source_code_uri: https://github.com/ruby-oauth/auth-sanitizer/tree/v0.2.4
|
|
286
|
+
changelog_uri: https://github.com/ruby-oauth/auth-sanitizer/blob/v0.2.4/CHANGELOG.md
|
|
285
287
|
bug_tracker_uri: https://github.com/ruby-oauth/auth-sanitizer/issues
|
|
286
|
-
documentation_uri: https://www.rubydoc.info/gems/auth-sanitizer/0.2.
|
|
288
|
+
documentation_uri: https://www.rubydoc.info/gems/auth-sanitizer/0.2.4
|
|
287
289
|
funding_uri: https://github.com/sponsors/pboling
|
|
288
290
|
wiki_uri: https://github.com/ruby-oauth/auth-sanitizer/wiki
|
|
289
291
|
news_uri: https://www.railsbling.com/tags/auth-sanitizer
|
|
290
292
|
discord_uri: https://discord.gg/3qme4XHNKN
|
|
293
|
+
mailing_list_uri: https://www.rubyforum.org/tag/ruby-oauth
|
|
291
294
|
rubygems_mfa_required: 'true'
|
|
292
295
|
rdoc_options:
|
|
293
296
|
- "--title"
|
|
294
|
-
- "auth-sanitizer - \
|
|
297
|
+
- "auth-sanitizer - \U0001F9FC Configurable KV output redaction"
|
|
295
298
|
- "--main"
|
|
296
299
|
- README.md
|
|
297
300
|
- "--exclude"
|
|
@@ -312,7 +315,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
312
315
|
- !ruby/object:Gem::Version
|
|
313
316
|
version: '0'
|
|
314
317
|
requirements: []
|
|
315
|
-
rubygems_version: 4.0.
|
|
318
|
+
rubygems_version: 4.0.20
|
|
316
319
|
specification_version: 4
|
|
317
|
-
summary: "\
|
|
320
|
+
summary: "\U0001F9FC Configurable KV output redaction"
|
|
318
321
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|
data/CITATION.cff
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
cff-version: 1.2.0
|
|
2
|
-
title: "auth-sanitizer"
|
|
3
|
-
message: >-
|
|
4
|
-
If you use this work and you want to cite it,
|
|
5
|
-
then you can use the metadata from this file.
|
|
6
|
-
type: software
|
|
7
|
-
authors:
|
|
8
|
-
- given-names: "Peter H."
|
|
9
|
-
family-names: "Boling"
|
|
10
|
-
email: "floss@galtzo.com"
|
|
11
|
-
affiliation: "galtzo.com"
|
|
12
|
-
orcid: 'https://orcid.org/0009-0008-8519-441X'
|
|
13
|
-
identifiers:
|
|
14
|
-
- type: url
|
|
15
|
-
value: 'https://github.com/ruby-oauth/auth-sanitizer'
|
|
16
|
-
description: "auth-sanitizer"
|
|
17
|
-
repository-code: 'https://github.com/ruby-oauth/auth-sanitizer'
|
|
18
|
-
abstract: >-
|
|
19
|
-
auth-sanitizer
|
|
20
|
-
license: See license file
|