sqreen 1.24.2 → 1.25.1

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: dea2ca186e8470cf1cec16ca8ab33156c1002d28004c3a68c2296e2ec5d9b7ed
4
- data.tar.gz: 2722948150517f7f7c29c73fa9f49acac18266e2cc286e70907b8ff91ba535d1
3
+ metadata.gz: 6328da058ba9dbd5f216152de2a9751d3d967a2f4d65304032137849a8b10d25
4
+ data.tar.gz: 7835057ef1b3c18d6995136c6d7c10ed6168bb9f42be32d91959518bcbe287cf
5
5
  SHA512:
6
- metadata.gz: 1ecf19e0200c0c1d9012f8140996e5c1918be31a9dcca081f302cdf05e818fe5137199489d30486eca18b814e6d98bfeda5efb1ee8103efe08d158fca5f12717
7
- data.tar.gz: 6f01d3300a326c1504917cfe2e1a25f46020f936a5400d6b347a9a1d1001f616912fb58bffe466539ecb47ef259e233a9cc5652f6da2a1739e5c4cdd5f01949b
6
+ metadata.gz: d2a151b0bdc36e3ff4872c533e3e701cce5a70c9dbf9758b2ee53cf7026317f6dc49e85741a92c61c38cd0128575741e27b7b6995cd5d0fd66289ee883300975
7
+ data.tar.gz: 28c72b896a9cf0b5a7bd49cb1ebb5ef0fe2cb99a349f91f70f02b667ffc8346c1d47e940bac3ec6823240c95935204bb96aedd8d666ae13d01a5017d082a00f7
data/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## 1.25.1
2
+
3
+ * Add compatibility with ddtrace 1.0
4
+ * Fix issue on WAF garbage collection
5
+
6
+ ## 1.25.0
7
+
8
+ * Switch from old sq_mini_racer to upstream mini_racer
9
+ * Support Ruby 3.1
10
+ * Restrict compatiblity to Ruby 2.6 and up
11
+
12
+ ## 1.24.3
13
+
14
+ * Fix WAF exception reporting corner case
15
+
1
16
  ## 1.24.2
2
17
 
3
18
  * Fix kwargs for rule callbacks on Ruby 3+
@@ -66,6 +66,7 @@ module Sqreen
66
66
  end
67
67
 
68
68
  def insert_datadog_middleware(builder, *args, &block)
69
+ return unless defined?(Datadog) && defined?(Datadog::Tracing)
69
70
  return unless defined?(Datadog) && Datadog.respond_to?(:configuration) && Datadog.configuration.instrumented_integrations.key?(:sinatra)
70
71
 
71
72
  Datadog.configure do |c|
@@ -182,9 +182,21 @@ module Sqreen
182
182
  end
183
183
 
184
184
  def datadog_span
185
- return unless defined?(Datadog) && (tracer = Datadog.tracer)
185
+ return unless defined?(Datadog)
186
186
 
187
- tracer.active_span
187
+ if defined?(Datadog::Tracing) && Datadog::Tracing.respond_to?(:active_span)
188
+ Datadog::Tracing.active_span
189
+ elsif Datadog.respond_to?(:tracer) && Datadog.tracer
190
+ Datadog.tracer.active_span
191
+ end
192
+ end
193
+
194
+ def datadog_trace
195
+ return unless defined?(Datadog)
196
+
197
+ if defined?(Datadog::Tracing) && Datadog::Tracing.respond_to?(:active_trace)
198
+ Datadog::Tracing.active_trace
199
+ end
188
200
  end
189
201
 
190
202
  def response_infos
@@ -33,7 +33,7 @@ module Sqreen
33
33
  private
34
34
 
35
35
  def detect_adapter
36
- @online = try_sq_mini_racer || try_rhino
36
+ @online = try_sq_mini_racer || try_mini_racer || try_rhino
37
37
 
38
38
  Sqreen.log.info "JS engine online: #{variant}" if @online
39
39
  end
@@ -53,6 +53,21 @@ module Sqreen
53
53
  false
54
54
  end
55
55
 
56
+ def try_mini_racer
57
+ gem = Gem.loaded_specs['mini_racer']
58
+ unless gem
59
+ Sqreen.log.info "mini_racer gem not detected"
60
+ return false
61
+ end
62
+
63
+ require 'mini_racer'
64
+ require 'sqreen/js/mini_racer_adapter'
65
+ @adapter = MiniRacerAdapter.new(false)
66
+ rescue LoadError => e
67
+ Sqreen.log.warn "Failed loading mini_racer: #{e}"
68
+ false
69
+ end
70
+
56
71
  def try_rhino
57
72
  gem = Gem.loaded_specs['therubyrhino']
58
73
  unless gem
@@ -34,7 +34,7 @@ module Sqreen
34
34
 
35
35
  def self.static_init
36
36
  return if @done_static_init
37
- Sqreen::MiniRacer::Platform.set_flags! :noconcurrent_recompilation
37
+ Sqreen::MiniRacer::Platform.set_flags! :noconcurrent_recompilation if @vendored
38
38
  @done_static_init = true
39
39
  end
40
40
  end
@@ -118,7 +118,7 @@ module Sqreen
118
118
 
119
119
  # garbage collections max 1 in every 4 calls (avg)
120
120
  if heap_stats[:total_heap_size] > @gc_threshold_in_bytes
121
- low_memory_notification
121
+ low_memory_notification if respond_to?(:low_memory_notification)
122
122
  @gc_load += 4
123
123
  else
124
124
  @gc_load = [0, @gc_load - 1].max
@@ -76,7 +76,11 @@ module Sqreen
76
76
  :datadog_trace_id => datadog_span.trace_id,
77
77
  :datadog_span_id => datadog_span.span_id,
78
78
  )
79
- datadog_span.set_tag(Datadog::Ext::ManualTracing::TAG_KEEP, true)
79
+ if (datadog_trace = framework.datadog_trace)
80
+ datadog_trace.keep!
81
+ else
82
+ datadog_span.set_tag(Datadog::Ext::ManualTracing::TAG_KEEP, true)
83
+ end
80
84
  datadog_span.set_tag('sqreen.event', true)
81
85
  end
82
86
  framework.observe(:attacks, payload, payload_tpl)
@@ -126,7 +126,7 @@ module Sqreen
126
126
  lambda do |object_id|
127
127
  return unless WAFCB.libsqreen?
128
128
 
129
- ::LibSqreen::WAF.delete(waf_rule_name)
129
+ ::LibSqreen::WAF.delete(rule_name)
130
130
  Sqreen.log.debug("WAF rule #{rule_name} deleted, from #<#{name}:0x#{object_id.to_s(16).rjust(16, '0')}>")
131
131
  end
132
132
  end
@@ -146,7 +146,7 @@ module Sqreen
146
146
  error_code: ERROR_CODES[e.error],
147
147
  }.tap do |r|
148
148
  r[:error_data] = e.data if e.data
149
- r[:args] = e.args if e.arg
149
+ r[:args] = e.args if e.args
150
150
  end,
151
151
  }
152
152
  end
@@ -4,5 +4,5 @@
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
5
5
 
6
6
  module Sqreen
7
- VERSION = '1.24.2'.freeze
7
+ VERSION = '1.25.1'.freeze
8
8
  end
@@ -244,8 +244,17 @@ class Sqreen::Weave::Legacy::Instrumentation
244
244
 
245
245
  # shrinkwrap_timer = Sqreen::Graft::Timer.new('weave,shrinkwrap')
246
246
  # shrinkwrap_timer.start
247
- if defined?(Datadog) && Datadog.tracer && (datadog_span = Datadog.tracer.active_root_span)
248
- Sqreen::Weave.logger.debug { "request datadog:true span_id:#{datadog_span.span_id} parent_id:#{datadog_span.parent_id} trace_id:#{datadog_span.trace_id}" }
247
+ if defined?(Datadog)
248
+ if defined?(Datadog::Tracing) && Datadog::Tracing.respond_to?(:active_trace)
249
+ datadog_active_trace = Datadog::Tracing.active_trace
250
+ datadog_span = datadog_active_trace.send(:root_span) if datadog_active_trace
251
+ elsif Datadog.respond_to?(:tracer) && Datadog.tracer
252
+ datadog_span = Datadog.tracer.active_root_span
253
+ end
254
+
255
+ if datadog_span
256
+ Sqreen::Weave.logger.debug { "request datadog:true span_id:#{datadog_span.span_id} parent_id:#{datadog_span.parent_id} trace_id:#{datadog_span.trace_id}" }
257
+ end
249
258
  end
250
259
 
251
260
  request_timer = Sqreen::Graft::Timer.new("request")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqreen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.24.2
4
+ version: 1.25.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
@@ -39,25 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.2.4
41
41
  - !ruby/object:Gem::Dependency
42
- name: sq_mini_racer
42
+ name: mini_racer
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.2'
48
- - - "<"
45
+ - - ">="
49
46
  - !ruby/object:Gem::Version
50
- version: 0.5.a
47
+ version: 0.4.0
51
48
  type: :runtime
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '0.2'
58
- - - "<"
52
+ - - ">="
59
53
  - !ruby/object:Gem::Version
60
- version: 0.5.a
54
+ version: 0.4.0
61
55
  - !ruby/object:Gem::Dependency
62
56
  name: libsqreen
63
57
  requirement: !ruby/object:Gem::Requirement
@@ -347,7 +341,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
341
  requirements:
348
342
  - - ">="
349
343
  - !ruby/object:Gem::Version
350
- version: '2.0'
344
+ version: '2.6'
351
345
  required_rubygems_version: !ruby/object:Gem::Requirement
352
346
  requirements:
353
347
  - - ">="