sqreen 1.21.0.beta2 → 1.21.0.beta3

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -7
  3. data/lib/sqreen/actions/block_user.rb +1 -1
  4. data/lib/sqreen/actions/redirect_ip.rb +1 -1
  5. data/lib/sqreen/actions/redirect_user.rb +1 -1
  6. data/lib/sqreen/condition_evaluator.rb +9 -2
  7. data/lib/sqreen/conditionable.rb +24 -6
  8. data/lib/sqreen/configuration.rb +1 -1
  9. data/lib/sqreen/deferred_logger.rb +50 -14
  10. data/lib/sqreen/deprecation.rb +38 -0
  11. data/lib/sqreen/ecosystem_integration.rb +7 -1
  12. data/lib/sqreen/ecosystem_integration/around_callbacks.rb +20 -10
  13. data/lib/sqreen/ecosystem_integration/instrumentation_service.rb +8 -4
  14. data/lib/sqreen/events/request_record.rb +0 -1
  15. data/lib/sqreen/frameworks/generic.rb +9 -0
  16. data/lib/sqreen/frameworks/rails.rb +0 -7
  17. data/lib/sqreen/frameworks/request_recorder.rb +2 -0
  18. data/lib/sqreen/graft/call.rb +99 -21
  19. data/lib/sqreen/graft/callback.rb +1 -1
  20. data/lib/sqreen/graft/hook.rb +212 -100
  21. data/lib/sqreen/graft/hook_point.rb +18 -11
  22. data/lib/sqreen/legacy/instrumentation.rb +22 -10
  23. data/lib/sqreen/legacy/old_event_submission_strategy.rb +2 -1
  24. data/lib/sqreen/log.rb +3 -2
  25. data/lib/sqreen/log/loggable.rb +1 -0
  26. data/lib/sqreen/logger.rb +24 -0
  27. data/lib/sqreen/metrics.rb +1 -0
  28. data/lib/sqreen/metrics/req_detailed.rb +41 -0
  29. data/lib/sqreen/metrics_store.rb +11 -0
  30. data/lib/sqreen/null_logger.rb +22 -0
  31. data/lib/sqreen/remote_command.rb +1 -0
  32. data/lib/sqreen/rules.rb +8 -4
  33. data/lib/sqreen/rules/blacklist_ips_cb.rb +2 -2
  34. data/lib/sqreen/rules/custom_error_cb.rb +3 -3
  35. data/lib/sqreen/rules/rule_cb.rb +4 -2
  36. data/lib/sqreen/rules/waf_cb.rb +3 -3
  37. data/lib/sqreen/runner.rb +46 -5
  38. data/lib/sqreen/version.rb +1 -1
  39. data/lib/sqreen/weave/budget.rb +35 -0
  40. data/lib/sqreen/weave/legacy/instrumentation.rb +274 -132
  41. data/lib/sqreen/worker.rb +6 -2
  42. metadata +22 -6
  43. data/lib/sqreen/encoding_sanitizer.rb +0 -27
@@ -23,11 +23,15 @@ module Sqreen
23
23
  Sqreen.log.debug("Starting Sqreen #{Sqreen::VERSION}")
24
24
  prevent_startup = Sqreen.framework.prevent_startup
25
25
  if !prevent_startup
26
- warn "[#{Process.pid}] Sqreen logging at level #{Sqreen.log.instance_eval { @logger }.level} to #{Sqreen.log.instance_eval { @logger }.instance_eval { @logdev.filename }}"
26
+ logger = Sqreen.log.instance_eval { @logger }
27
+ log_level = logger.send(:format_severity, logger.level)
28
+ log_filename = logger.instance_eval { @logdev.filename }
29
+ warn "process.pid:#{Process.pid} sqreen.log.level:#{log_level} sqreen.log.location:#{log_filename.inspect}"
27
30
  runner = Sqreen::Runner.new(configuration, framework)
28
31
  runner.run_watcher
32
+ Sqreen.log.info("process.pid:#{Process.pid} sqreen.start:true")
29
33
  else
30
- Sqreen.log.debug("#{prevent_startup} prevented Sqreen startup")
34
+ Sqreen.log.info("process.pid:#{Process.pid} sqreen.start:false cause:#{prevent_startup}")
31
35
  end
32
36
  rescue Sqreen::TokenNotFoundException
33
37
  Sqreen.log.error "Sorry but we couldn't find your Sqreen token.\nYour application is NOT currently protected by Sqreen.\n\nHave you filled your config/sqreen.yml?\n\n"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqreen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.21.0.beta2
4
+ version: 1.21.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-02 00:00:00.000000000 Z
11
+ date: 2020-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqreen-backport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.1
33
+ version: 0.2.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.1
40
+ version: 0.2.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sq_mini_racer
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.6.1.0.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: sq_detailed_metrics
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.0
69
83
  description: Sqreen is a SaaS based Application protection and monitoring platform
70
84
  that integrates directly into your Ruby applications. Learn more at https://sqreen.com.
71
85
  email: contact@sqreen.com
@@ -122,6 +136,7 @@ files:
122
136
  - lib/sqreen/dependency/rails.rb
123
137
  - lib/sqreen/dependency/sentry.rb
124
138
  - lib/sqreen/dependency/sinatra.rb
139
+ - lib/sqreen/deprecation.rb
125
140
  - lib/sqreen/ecosystem.rb
126
141
  - lib/sqreen/ecosystem/dispatch_table.rb
127
142
  - lib/sqreen/ecosystem/exception_reporting.rb
@@ -155,7 +170,6 @@ files:
155
170
  - lib/sqreen/ecosystem_integration/instrumentation_service.rb
156
171
  - lib/sqreen/ecosystem_integration/request_lifecycle_tracking.rb
157
172
  - lib/sqreen/ecosystem_integration/signal_consumption.rb
158
- - lib/sqreen/encoding_sanitizer.rb
159
173
  - lib/sqreen/endpoint_testing.rb
160
174
  - lib/sqreen/error_handling_middleware.rb
161
175
  - lib/sqreen/event.rb
@@ -208,6 +222,7 @@ files:
208
222
  - lib/sqreen/metrics/base.rb
209
223
  - lib/sqreen/metrics/binning.rb
210
224
  - lib/sqreen/metrics/collect.rb
225
+ - lib/sqreen/metrics/req_detailed.rb
211
226
  - lib/sqreen/metrics/sum.rb
212
227
  - lib/sqreen/metrics_store.rb
213
228
  - lib/sqreen/metrics_store/already_registered_metric.rb
@@ -288,6 +303,7 @@ files:
288
303
  - lib/sqreen/version.rb
289
304
  - lib/sqreen/waf_error.rb
290
305
  - lib/sqreen/weave.rb
306
+ - lib/sqreen/weave/budget.rb
291
307
  - lib/sqreen/weave/hardcoded.rb
292
308
  - lib/sqreen/weave/instrumentor.rb
293
309
  - lib/sqreen/weave/legacy.rb
@@ -327,7 +343,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
327
343
  - !ruby/object:Gem::Version
328
344
  version: 1.3.1
329
345
  requirements: []
330
- rubygems_version: 3.1.2
346
+ rubygems_version: 3.1.4
331
347
  signing_key:
332
348
  specification_version: 4
333
349
  summary: Sqreen Ruby agent
@@ -1,27 +0,0 @@
1
- # typed: true
2
-
3
- # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
- # Please refer to our terms for more information: https://www.sqreen.com/terms.html
5
-
6
- module Sqreen
7
- class EncodingSanitizer
8
- def self.sanitize(obj)
9
- case obj
10
- when String
11
- sanitize_string(obj)
12
- when Array
13
- obj.map { |e| sanitize(e) }
14
- when Hash
15
- obj.each_with_object({}) { |(k, v), h| h[k] = sanitize(v) }
16
- else
17
- obj
18
- end
19
- end
20
-
21
- def self.sanitize_string(s)
22
- return s if s.encoding.name == 'UTF-8' && s.valid_encoding?
23
-
24
- s.encode('UTF-16', :invalid => :replace, :undef => :replace).encode('UTF-8')
25
- end
26
- end
27
- end