datadome_module 1.1.1 → 1.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ddfcfecfd9f51f333f9e40f60c5bff1f68d6fa1c0f23e4cf25f7f75bc3ed87b
4
- data.tar.gz: 1bfa3743ddd6c69b0eab8f9421e60f32d2da1709410760847c163d2e324bd7ee
3
+ metadata.gz: da078c3d8b29968135733910234cfc5c523f256aa12a96377db4d29705b28dc6
4
+ data.tar.gz: db0ee5c87fe7937e8340ecf1ccc79dee48e77f29c11feed9adc95e659ad5ecc9
5
5
  SHA512:
6
- metadata.gz: 9d694c9960ff4b9969adfa20360699d85d4bb24592bdaa8db8c360b1c1304707da1a55025b76852dde20d483a2d950e664e64ad0a4e5e80d26f221776a82d316
7
- data.tar.gz: 7b956519b3558cc669d4e60068788e200d86049c26ad6f38f8740316c5198b27e1039eb26484fb123d3dac64cccf3b697c6395edfce3aacb939a007be873544c
6
+ metadata.gz: 438a444b14b372e7b468ac14bcc3d596ccbd8b3a1ae532a7d619d4f22581516cb7ee92fa4bdc84c8bbbc41647500dca62bee8e4e68b6d40634fde65e7c4ff4e8
7
+ data.tar.gz: bcaeeb008b4e593e4028e41fd9f0be4e5f5672b6aa11154a0e655fde5e63188e84cc4fe358ff1194b68385c633217ff499baf37286103a9d283bed14fbb4063e
data/lib/constants.rb CHANGED
@@ -1,4 +1,4 @@
1
- MODULE_VERSION = '1.1.1'
1
+ MODULE_VERSION = '1.2.0'
2
2
  MODULE_NAME = 'datadome_module'
3
3
 
4
4
  VALIDATE_REQUEST_PATH = '/validate-request'
@@ -23,6 +23,7 @@ class DataDomeModule
23
23
  return @app.call(env) unless assessment_result
24
24
  return assessment_result.response_array unless assessment_result.legitimate_request?
25
25
 
26
+ enrich_request_headers(env, assessment_result.request_headers)
26
27
  status, headers, payload = @app.call(env)
27
28
 
28
29
  # Merge the headers from DataDome with the original headers
@@ -48,6 +49,12 @@ class DataDomeModule
48
49
 
49
50
  private
50
51
 
52
+ def enrich_request_headers(env, request_headers)
53
+ request_headers.each do |header_name, header_value|
54
+ env["HTTP_#{header_name.upcase.tr('-', '_')}"] = header_value
55
+ end
56
+ end
57
+
51
58
  def datadome_assessment(request)
52
59
  return unless datadome_assessment_enabled?
53
60
  return if endpoint_hidden_from_datadome?(request)
@@ -25,7 +25,8 @@ class ProcessAssessment
25
25
  Response.new(
26
26
  status: dd_response.status,
27
27
  headers: headers_hash(dd_response),
28
- payload: dd_response.body
28
+ payload: dd_response.body,
29
+ request_headers: request_headers_hash(dd_response)
29
30
  )
30
31
  rescue Faraday::TimeoutError
31
32
  MD.logger.error("#{self.class}: Protection API request timed out")
@@ -55,6 +56,14 @@ class ProcessAssessment
55
56
  end
56
57
  end
57
58
 
59
+ def request_headers_hash(dd_response)
60
+ header_names = dd_response.headers['X-DataDome-Request-Headers']&.split || []
61
+
62
+ header_names.each_with_object({}) do |header, hash|
63
+ hash[header] = dd_response.headers[header]
64
+ end
65
+ end
66
+
58
67
  def client
59
68
  Faraday.new(api_uri) do |builder|
60
69
  builder.request :url_encoded
data/lib/request_data.rb CHANGED
@@ -9,6 +9,7 @@ class RequestData
9
9
  DATA_LIMITS = {
10
10
  SecCHDeviceMemory: 8,
11
11
  SecCHUAMobile: 8,
12
+ SecFetchStorageAccess: 8,
12
13
  SecFetchUser: 8,
13
14
  TlsProtocol: 8,
14
15
  SecCHUAArch: 16,
@@ -117,6 +118,7 @@ class RequestData
117
118
  'SecFetchDest': headers['HTTP_SEC_FETCH_DEST'],
118
119
  'SecFetchMode': headers['HTTP_SEC_FETCH_MODE'],
119
120
  'SecFetchSite': headers['HTTP_SEC_FETCH_SITE'],
121
+ 'SecFetchStorageAccess': headers['HTTP_SEC_FETCH_STORAGE_ACCESS'],
120
122
  'SecFetchUser': headers['HTTP_SEC_FETCH_USER'],
121
123
  'ServerHostname': headers['HTTP_HOST'],
122
124
  'ServerName': Socket.gethostname,
data/lib/response.rb CHANGED
@@ -2,12 +2,13 @@
2
2
 
3
3
  class Response
4
4
 
5
- attr_reader :headers
5
+ attr_reader :headers, :request_headers
6
6
 
7
- def initialize(status: 200, headers: {}, payload: nil)
7
+ def initialize(status: 200, headers: {}, payload: nil, request_headers: {})
8
8
  @status = status
9
9
  @headers = headers
10
10
  @payload = payload
11
+ @request_headers = request_headers
11
12
  end
12
13
 
13
14
  def response_array
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadome_module
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DataDome
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-13 00:00:00.000000000 Z
11
+ date: 2026-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday