sqreen 1.20.4 → 1.21.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
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