logtail-rack 0.2.1 → 0.2.2
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
- data/.github/workflows/main.yml +0 -1
- data/lib/logtail-rack/http_events.rb +21 -19
- data/lib/logtail-rack/version.rb +1 -1
- data/logtail-ruby-rack.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a63714ec66ecfdd4a4db3ffc637fe1b02da37422789fc7ea8617474b63f90367
|
4
|
+
data.tar.gz: 8fedbde00ed676731409c299e7e5183bc24daa049f21e9e5ffd7995706bc2dda
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bc10f2ad042d60da36ea8491f214764028e045bde28db87fb68fb7de32278fe98ddf84105deda98a07cfdfb7e9ee9ffaf46056093fa670dd35043fb2d48d69a
|
7
|
+
data.tar.gz: 437553fcaf79354dcb76bef63bca8c58cb1dcd8c7972f3f0204bd7c2b2aad30e0943776b78de0b307a9148643cb2974a6d5b3fc2f7a7d31b80bfc3e4d0243177
|
data/.github/workflows/main.yml
CHANGED
@@ -102,23 +102,24 @@ module Logtail
|
|
102
102
|
@silence_request
|
103
103
|
end
|
104
104
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
#
|
110
|
-
|
111
|
-
@http_body_limit
|
112
|
-
end
|
113
|
-
|
105
|
+
# Filter sensitive HTTP headers (such as "Authorization: Bearer secret_token")
|
106
|
+
#
|
107
|
+
# Filtered HTTP header values will be sent to Better Stack as "[FILTERED]"
|
108
|
+
#
|
109
|
+
# @example
|
110
|
+
# Logtail::Integrations::Rack::HTTPEvents.http_header_filters = ["Authorization"]
|
114
111
|
def http_header_filters=(value)
|
115
|
-
@http_header_filters = value
|
112
|
+
@http_header_filters = value.map { |header_name| normalize_header_name(header_name) }
|
116
113
|
end
|
117
114
|
|
118
115
|
# Accessor method for {#http_header_filters=}
|
119
116
|
def http_header_filters
|
120
117
|
@http_header_filters
|
121
118
|
end
|
119
|
+
|
120
|
+
def normalize_header_name(name)
|
121
|
+
name.to_s.downcase.gsub("-", "_")
|
122
|
+
end
|
122
123
|
end
|
123
124
|
|
124
125
|
CONTENT_LENGTH_KEY = 'Content-Length'.freeze
|
@@ -147,13 +148,11 @@ module Logtail
|
|
147
148
|
|
148
149
|
http_response = HTTPResponse.new(
|
149
150
|
content_length: content_length,
|
150
|
-
headers: headers,
|
151
|
+
headers: filter_http_headers(headers),
|
151
152
|
http_context: http_context,
|
152
153
|
request_id: request.request_id,
|
153
154
|
status: status,
|
154
155
|
duration_ms: duration_ms,
|
155
|
-
body_limit: self.class.http_body_limit,
|
156
|
-
headers_to_sanitize: self.class.http_header_filters,
|
157
156
|
)
|
158
157
|
|
159
158
|
{
|
@@ -179,7 +178,7 @@ module Logtail
|
|
179
178
|
http_request = HTTPRequest.new(
|
180
179
|
body: event_body,
|
181
180
|
content_length: safe_to_i(request.content_length),
|
182
|
-
headers: request.headers,
|
181
|
+
headers: filter_http_headers(request.headers),
|
183
182
|
host: force_encoding(request.host),
|
184
183
|
method: request.request_method,
|
185
184
|
path: request.path,
|
@@ -187,8 +186,6 @@ module Logtail
|
|
187
186
|
query_string: force_encoding(request.query_string),
|
188
187
|
request_id: request.request_id,
|
189
188
|
scheme: force_encoding(request.scheme),
|
190
|
-
body_limit: self.class.http_body_limit,
|
191
|
-
headers_to_sanitize: self.class.http_header_filters,
|
192
189
|
)
|
193
190
|
|
194
191
|
{
|
@@ -223,12 +220,10 @@ module Logtail
|
|
223
220
|
http_response = HTTPResponse.new(
|
224
221
|
body: event_body,
|
225
222
|
content_length: content_length,
|
226
|
-
headers: headers,
|
223
|
+
headers: filter_http_headers(headers),
|
227
224
|
request_id: request.request_id,
|
228
225
|
status: status,
|
229
226
|
duration_ms: duration_ms,
|
230
|
-
body_limit: self.class.http_body_limit,
|
231
|
-
headers_to_sanitize: self.class.http_header_filters,
|
232
227
|
)
|
233
228
|
|
234
229
|
{
|
@@ -272,6 +267,13 @@ module Logtail
|
|
272
267
|
end
|
273
268
|
end
|
274
269
|
|
270
|
+
def filter_http_headers(headers)
|
271
|
+
headers.each do |name, _|
|
272
|
+
normalized_header_name = self.class.normalize_header_name(name)
|
273
|
+
headers[name] = "[FILTERED]" if self.class.http_header_filters&.include?(normalized_header_name)
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
275
277
|
def safe_to_i(val)
|
276
278
|
val.nil? ? nil : val.to_i
|
277
279
|
end
|
data/lib/logtail-rack/version.rb
CHANGED
data/logtail-ruby-rack.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.homepage = "https://github.com/logtail/logtail-ruby-rack"
|
13
13
|
spec.license = "ISC"
|
14
14
|
|
15
|
-
spec.required_ruby_version = '>= 2.
|
15
|
+
spec.required_ruby_version = '>= 2.3'
|
16
16
|
|
17
17
|
spec.metadata["homepage_uri"] = spec.homepage
|
18
18
|
spec.metadata["source_code_uri"] = "https://github.com/logtail/logtail-ruby-rack"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logtail-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Logtail
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logtail
|
@@ -129,7 +129,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
129
129
|
requirements:
|
130
130
|
- - ">="
|
131
131
|
- !ruby/object:Gem::Version
|
132
|
-
version: 2.
|
132
|
+
version: '2.3'
|
133
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
134
|
requirements:
|
135
135
|
- - ">="
|