sqreen 1.20.4 → 1.21.0.beta1

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 (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +0 -25
  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 +2 -8
  7. data/lib/sqreen/configuration.rb +1 -1
  8. data/lib/sqreen/deferred_logger.rb +14 -50
  9. data/lib/sqreen/deliveries/batch.rb +8 -1
  10. data/lib/sqreen/ecosystem.rb +80 -0
  11. data/lib/sqreen/ecosystem/dispatch_table.rb +43 -0
  12. data/lib/sqreen/ecosystem/http/net_http.rb +51 -0
  13. data/lib/sqreen/ecosystem/http/rack_request.rb +38 -0
  14. data/lib/sqreen/ecosystem/loggable.rb +13 -0
  15. data/lib/sqreen/ecosystem/module_api.rb +30 -0
  16. data/lib/sqreen/ecosystem/module_api/event_listener.rb +18 -0
  17. data/lib/sqreen/ecosystem/module_api/instrumentation.rb +23 -0
  18. data/lib/sqreen/ecosystem/module_api/signal_producer.rb +26 -0
  19. data/lib/sqreen/ecosystem/module_api/tracing_push_down.rb +34 -0
  20. data/lib/sqreen/ecosystem/module_api/transaction_storage.rb +71 -0
  21. data/lib/sqreen/ecosystem/module_registry.rb +39 -0
  22. data/lib/sqreen/ecosystem/redis/redis_connection.rb +35 -0
  23. data/lib/sqreen/ecosystem/tracing/sampler.rb +160 -0
  24. data/lib/sqreen/ecosystem/tracing/sampling_configuration.rb +150 -0
  25. data/lib/sqreen/ecosystem/tracing/signals/tracing_client.rb +53 -0
  26. data/lib/sqreen/ecosystem/tracing/signals/tracing_server.rb +53 -0
  27. data/lib/sqreen/ecosystem/tracing_id_setup.rb +34 -0
  28. data/lib/sqreen/ecosystem/transaction_storage.rb +64 -0
  29. data/lib/sqreen/ecosystem_integration.rb +70 -0
  30. data/lib/sqreen/ecosystem_integration/around_callbacks.rb +89 -0
  31. data/lib/sqreen/ecosystem_integration/instrumentation_service.rb +38 -0
  32. data/lib/sqreen/ecosystem_integration/request_lifecycle_tracking.rb +56 -0
  33. data/lib/sqreen/ecosystem_integration/signal_consumption.rb +35 -0
  34. data/lib/sqreen/encoding_sanitizer.rb +27 -0
  35. data/lib/sqreen/events/request_record.rb +1 -0
  36. data/lib/sqreen/frameworks/generic.rb +15 -10
  37. data/lib/sqreen/frameworks/rails.rb +7 -0
  38. data/lib/sqreen/frameworks/request_recorder.rb +0 -2
  39. data/lib/sqreen/graft/call.rb +23 -72
  40. data/lib/sqreen/graft/callback.rb +1 -1
  41. data/lib/sqreen/graft/hook.rb +85 -187
  42. data/lib/sqreen/graft/hook_point.rb +1 -1
  43. data/lib/sqreen/legacy/instrumentation.rb +10 -22
  44. data/lib/sqreen/legacy/old_event_submission_strategy.rb +8 -3
  45. data/lib/sqreen/log.rb +2 -3
  46. data/lib/sqreen/log/loggable.rb +0 -1
  47. data/lib/sqreen/logger.rb +0 -24
  48. data/lib/sqreen/metrics_store.rb +0 -11
  49. data/lib/sqreen/null_logger.rb +0 -22
  50. data/lib/sqreen/remote_command.rb +3 -1
  51. data/lib/sqreen/rules.rb +4 -8
  52. data/lib/sqreen/rules/blacklist_ips_cb.rb +2 -2
  53. data/lib/sqreen/rules/custom_error_cb.rb +3 -3
  54. data/lib/sqreen/rules/rule_cb.rb +0 -2
  55. data/lib/sqreen/rules/waf_cb.rb +3 -3
  56. data/lib/sqreen/runner.rb +21 -33
  57. data/lib/sqreen/session.rb +2 -0
  58. data/lib/sqreen/signals/conversions.rb +6 -1
  59. data/lib/sqreen/version.rb +1 -1
  60. data/lib/sqreen/weave/legacy/instrumentation.rb +103 -194
  61. data/lib/sqreen/worker.rb +2 -6
  62. metadata +35 -10
  63. data/lib/sqreen/deprecation.rb +0 -38
  64. data/lib/sqreen/weave/budget.rb +0 -46
@@ -23,15 +23,11 @@ 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
- 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}"
26
+ warn "[#{Process.pid}] Sqreen logging at level #{Sqreen.log.instance_eval { @logger }.level} to #{Sqreen.log.instance_eval { @logger }.instance_eval { @logdev.filename }}"
30
27
  runner = Sqreen::Runner.new(configuration, framework)
31
28
  runner.run_watcher
32
- Sqreen.log.info("process.pid:#{Process.pid} sqreen.start:true")
33
29
  else
34
- Sqreen.log.info("process.pid:#{Process.pid} sqreen.start:false cause:#{prevent_startup}")
30
+ Sqreen.log.debug("#{prevent_startup} prevented Sqreen startup")
35
31
  end
36
32
  rescue Sqreen::TokenNotFoundException
37
33
  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.20.4
4
+ version: 1.21.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-16 00:00:00.000000000 Z
11
+ date: 2020-06-29 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.2
33
+ version: 0.2.1
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.2
40
+ version: 0.2.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: sq_mini_racer
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,7 +122,31 @@ files:
122
122
  - lib/sqreen/dependency/rails.rb
123
123
  - lib/sqreen/dependency/sentry.rb
124
124
  - lib/sqreen/dependency/sinatra.rb
125
- - lib/sqreen/deprecation.rb
125
+ - lib/sqreen/ecosystem.rb
126
+ - lib/sqreen/ecosystem/dispatch_table.rb
127
+ - lib/sqreen/ecosystem/http/net_http.rb
128
+ - lib/sqreen/ecosystem/http/rack_request.rb
129
+ - lib/sqreen/ecosystem/loggable.rb
130
+ - lib/sqreen/ecosystem/module_api.rb
131
+ - lib/sqreen/ecosystem/module_api/event_listener.rb
132
+ - lib/sqreen/ecosystem/module_api/instrumentation.rb
133
+ - lib/sqreen/ecosystem/module_api/signal_producer.rb
134
+ - lib/sqreen/ecosystem/module_api/tracing_push_down.rb
135
+ - lib/sqreen/ecosystem/module_api/transaction_storage.rb
136
+ - lib/sqreen/ecosystem/module_registry.rb
137
+ - lib/sqreen/ecosystem/redis/redis_connection.rb
138
+ - lib/sqreen/ecosystem/tracing/sampler.rb
139
+ - lib/sqreen/ecosystem/tracing/sampling_configuration.rb
140
+ - lib/sqreen/ecosystem/tracing/signals/tracing_client.rb
141
+ - lib/sqreen/ecosystem/tracing/signals/tracing_server.rb
142
+ - lib/sqreen/ecosystem/tracing_id_setup.rb
143
+ - lib/sqreen/ecosystem/transaction_storage.rb
144
+ - lib/sqreen/ecosystem_integration.rb
145
+ - lib/sqreen/ecosystem_integration/around_callbacks.rb
146
+ - lib/sqreen/ecosystem_integration/instrumentation_service.rb
147
+ - lib/sqreen/ecosystem_integration/request_lifecycle_tracking.rb
148
+ - lib/sqreen/ecosystem_integration/signal_consumption.rb
149
+ - lib/sqreen/encoding_sanitizer.rb
126
150
  - lib/sqreen/endpoint_testing.rb
127
151
  - lib/sqreen/error_handling_middleware.rb
128
152
  - lib/sqreen/event.rb
@@ -255,7 +279,6 @@ files:
255
279
  - lib/sqreen/version.rb
256
280
  - lib/sqreen/waf_error.rb
257
281
  - lib/sqreen/weave.rb
258
- - lib/sqreen/weave/budget.rb
259
282
  - lib/sqreen/weave/hardcoded.rb
260
283
  - lib/sqreen/weave/instrumentor.rb
261
284
  - lib/sqreen/weave/legacy.rb
@@ -278,7 +301,9 @@ metadata:
278
301
  changelog_uri: https://docs.sqreen.com/ruby/release-notes/
279
302
  source_code_uri: https://github.com/sqreen/ruby-agent
280
303
  bug_tracker_uri: https://github.com/sqreen/ruby-agent/issues
281
- post_install_message:
304
+ post_install_message: |2
305
+ This is a Sqreen beta release and may not work in all situations.
306
+ Make sure to review CHANGELOG.md for important details.
282
307
  rdoc_options: []
283
308
  require_paths:
284
309
  - lib
@@ -289,11 +314,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
289
314
  version: 1.9.3
290
315
  required_rubygems_version: !ruby/object:Gem::Requirement
291
316
  requirements:
292
- - - ">="
317
+ - - ">"
293
318
  - !ruby/object:Gem::Version
294
- version: '0'
319
+ version: 1.3.1
295
320
  requirements: []
296
- rubygems_version: 3.1.4
321
+ rubygems_version: 3.1.2
297
322
  signing_key:
298
323
  specification_version: 4
299
324
  summary: Sqreen Ruby agent
@@ -1,38 +0,0 @@
1
- # typed: strong
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
- require 'sqreen/log/loggable'
7
-
8
- module Sqreen
9
- module Deprecation
10
- include Sqreen::Log::Loggable
11
-
12
- module_function
13
-
14
- def deprecate(method)
15
- return unless ENV['SQREEN_DEBUG_DEPRECATION']
16
-
17
- owner = method.owner
18
- deprecated = :"_deprecated_#{method.name}"
19
- klass = owner.is_a?(Module)
20
- target = klass ? owner.to_s : owner.class.to_s
21
-
22
- method.owner.instance_eval do
23
- alias_method deprecated, method.name
24
-
25
- define_method(method.name) do |*args, &block|
26
- msg = [
27
- "deprecation",
28
- "target:#{target}",
29
- "method:#{method.name}",
30
- "caller:#{Kernel.caller_locations[0]}",
31
- ].join(' ')
32
- Sqreen::Deprecation.logger.info(msg)
33
- send(deprecated, *args, &block)
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,46 +0,0 @@
1
- # typed: false
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
- require 'sqreen/log/loggable'
7
- require 'sqreen/weave'
8
-
9
- class Sqreen::Weave::Budget
10
- include Sqreen::Log::Loggable
11
-
12
- def initialize(threshold, ratio = nil)
13
- @threshold = threshold
14
- @ratio = ratio
15
- end
16
-
17
- def static?
18
- threshold && !ratio
19
- end
20
-
21
- def dynamic?
22
- threshold && ratio
23
- end
24
-
25
- attr_reader :threshold
26
- attr_reader :ratio
27
-
28
- def to_h
29
- { threshold: threshold, ratio: ratio }
30
- end
31
-
32
- class << self
33
- attr_reader :current
34
-
35
- def update(opts = nil)
36
- Sqreen::Weave.logger.info("budget update:#{opts.inspect}")
37
-
38
- return @current = nil if opts.nil? || opts.empty?
39
-
40
- threshold = opts[:threshold]
41
- ratio = opts[:ratio]
42
-
43
- @current = new(threshold, ratio)
44
- end
45
- end
46
- end