sqreen 1.24.2 → 1.25.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: 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
  - - ">="