sqreen 1.21.0.beta2 → 1.22.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -4
  3. data/lib/sqreen/actions.rb +1 -1
  4. data/lib/sqreen/actions/actions_index.rb +5 -1
  5. data/lib/sqreen/actions/base.rb +1 -1
  6. data/lib/sqreen/actions/block_ip.rb +1 -1
  7. data/lib/sqreen/actions/block_user.rb +2 -2
  8. data/lib/sqreen/actions/ip_range_indexed_action_class.rb +1 -1
  9. data/lib/sqreen/actions/ip_ranges_index.rb +1 -1
  10. data/lib/sqreen/actions/redirect_ip.rb +2 -2
  11. data/lib/sqreen/actions/redirect_user.rb +2 -2
  12. data/lib/sqreen/actions/repository.rb +1 -1
  13. data/lib/sqreen/actions/unknown_action_type.rb +1 -1
  14. data/lib/sqreen/actions/user_action_class.rb +1 -1
  15. data/lib/sqreen/actions/users_index.rb +5 -1
  16. data/lib/sqreen/agent_message.rb +5 -0
  17. data/lib/sqreen/aggregated_metric.rb +5 -0
  18. data/lib/sqreen/attack_blocked.rb +1 -1
  19. data/lib/sqreen/binding_accessor.rb +1 -1
  20. data/lib/sqreen/binding_accessor/path_elem.rb +1 -1
  21. data/lib/sqreen/binding_accessor/transforms.rb +1 -1
  22. data/lib/sqreen/call_countable.rb +1 -1
  23. data/lib/sqreen/capped_queue.rb +1 -1
  24. data/lib/sqreen/cb.rb +1 -1
  25. data/lib/sqreen/condition_evaluator.rb +9 -3
  26. data/lib/sqreen/conditionable.rb +1 -1
  27. data/lib/sqreen/configuration.rb +1 -1
  28. data/lib/sqreen/context.rb +1 -1
  29. data/lib/sqreen/default_cb.rb +1 -1
  30. data/lib/sqreen/deferred_logger.rb +51 -15
  31. data/lib/sqreen/deliveries.rb +1 -1
  32. data/lib/sqreen/deliveries/batch.rb +1 -1
  33. data/lib/sqreen/deliveries/simple.rb +1 -1
  34. data/lib/sqreen/dependency.rb +1 -1
  35. data/lib/sqreen/dependency/detector.rb +11 -3
  36. data/lib/sqreen/dependency/new_relic.rb +10 -1
  37. data/lib/sqreen/deprecation.rb +38 -0
  38. data/lib/sqreen/ecosystem.rb +34 -2
  39. data/lib/sqreen/ecosystem/databases/database_connection_data.rb +28 -0
  40. data/lib/sqreen/ecosystem/databases/mongo.rb +44 -0
  41. data/lib/sqreen/ecosystem/databases/mysql.rb +59 -0
  42. data/lib/sqreen/ecosystem/databases/postgres.rb +56 -0
  43. data/lib/sqreen/ecosystem/databases/redis.rb +41 -0
  44. data/lib/sqreen/ecosystem/dispatch_table.rb +5 -0
  45. data/lib/sqreen/ecosystem/exception_reporting.rb +9 -2
  46. data/lib/sqreen/ecosystem/http/net_http.rb +5 -0
  47. data/lib/sqreen/ecosystem/http/rack_request.rb +5 -0
  48. data/lib/sqreen/ecosystem/loggable.rb +5 -0
  49. data/lib/sqreen/ecosystem/messaging/bunny.rb +66 -0
  50. data/lib/sqreen/ecosystem/messaging/kafka.rb +75 -0
  51. data/lib/sqreen/ecosystem/messaging/kinesis.rb +71 -0
  52. data/lib/sqreen/ecosystem/messaging/sqs.rb +73 -0
  53. data/lib/sqreen/ecosystem/module_api.rb +5 -0
  54. data/lib/sqreen/ecosystem/module_api/event_listener.rb +5 -0
  55. data/lib/sqreen/ecosystem/module_api/instrumentation.rb +5 -0
  56. data/lib/sqreen/ecosystem/module_api/message_producer.rb +14 -3
  57. data/lib/sqreen/ecosystem/module_api/signal_producer.rb +5 -0
  58. data/lib/sqreen/ecosystem/module_api/tracing.rb +5 -0
  59. data/lib/sqreen/ecosystem/module_api/tracing/client_data.rb +5 -0
  60. data/lib/sqreen/ecosystem/module_api/tracing/consumer_data.rb +18 -0
  61. data/lib/sqreen/ecosystem/module_api/tracing/messaging_data.rb +40 -0
  62. data/lib/sqreen/ecosystem/module_api/tracing/producer_data.rb +18 -0
  63. data/lib/sqreen/ecosystem/module_api/tracing/server_data.rb +5 -0
  64. data/lib/sqreen/ecosystem/module_api/tracing_id_generation.rb +5 -0
  65. data/lib/sqreen/ecosystem/module_api/transaction_storage.rb +5 -0
  66. data/lib/sqreen/ecosystem/module_registry.rb +10 -1
  67. data/lib/sqreen/ecosystem/tracing/modules/client.rb +12 -3
  68. data/lib/sqreen/ecosystem/tracing/modules/consumer.rb +40 -0
  69. data/lib/sqreen/ecosystem/tracing/modules/determine_ip.rb +33 -0
  70. data/lib/sqreen/ecosystem/tracing/modules/producer.rb +40 -0
  71. data/lib/sqreen/ecosystem/tracing/modules/server.rb +5 -0
  72. data/lib/sqreen/ecosystem/tracing/sampler.rb +5 -0
  73. data/lib/sqreen/ecosystem/tracing/sampling_configuration.rb +5 -0
  74. data/lib/sqreen/ecosystem/tracing/signals/tracing_client.rb +5 -0
  75. data/lib/sqreen/ecosystem/tracing/signals/tracing_consumer.rb +61 -0
  76. data/lib/sqreen/ecosystem/tracing/signals/tracing_producer.rb +61 -0
  77. data/lib/sqreen/ecosystem/tracing/signals/tracing_server.rb +5 -0
  78. data/lib/sqreen/ecosystem/tracing_broker.rb +5 -0
  79. data/lib/sqreen/ecosystem/tracing_id_setup.rb +5 -0
  80. data/lib/sqreen/ecosystem/transaction_storage.rb +5 -0
  81. data/lib/sqreen/ecosystem/util/call_writers_from_init.rb +5 -0
  82. data/lib/sqreen/ecosystem_integration.rb +5 -0
  83. data/lib/sqreen/ecosystem_integration/around_callbacks.rb +5 -0
  84. data/lib/sqreen/ecosystem_integration/instrumentation_service.rb +5 -0
  85. data/lib/sqreen/ecosystem_integration/request_lifecycle_tracking.rb +5 -0
  86. data/lib/sqreen/ecosystem_integration/signal_consumption.rb +6 -8
  87. data/lib/sqreen/endpoint_testing.rb +5 -0
  88. data/lib/sqreen/error_handling_middleware.rb +1 -1
  89. data/lib/sqreen/event.rb +1 -1
  90. data/lib/sqreen/events/attack.rb +1 -1
  91. data/lib/sqreen/events/remote_exception.rb +1 -1
  92. data/lib/sqreen/events/request_record.rb +1 -2
  93. data/lib/sqreen/exception.rb +1 -1
  94. data/lib/sqreen/formatter_with_tid.rb +1 -1
  95. data/lib/sqreen/framework_cb.rb +1 -1
  96. data/lib/sqreen/frameworks/generic.rb +21 -0
  97. data/lib/sqreen/frameworks/rails.rb +0 -7
  98. data/lib/sqreen/frameworks/request_recorder.rb +2 -0
  99. data/lib/sqreen/frameworks/sqreen_test.rb +1 -1
  100. data/lib/sqreen/graft.rb +1 -1
  101. data/lib/sqreen/graft/call.rb +79 -21
  102. data/lib/sqreen/graft/callback.rb +2 -2
  103. data/lib/sqreen/graft/hook.rb +195 -89
  104. data/lib/sqreen/graft/hook_point.rb +19 -12
  105. data/lib/sqreen/graft/hook_point_error.rb +1 -1
  106. data/lib/sqreen/invalid_signature_exception.rb +1 -1
  107. data/lib/sqreen/js.rb +1 -1
  108. data/lib/sqreen/js/call_context.rb +1 -1
  109. data/lib/sqreen/js/context_pool.rb +8 -6
  110. data/lib/sqreen/js/exec_js_runnable.rb +1 -1
  111. data/lib/sqreen/js/execjs_adapter.rb +1 -1
  112. data/lib/sqreen/js/executable_js.rb +1 -1
  113. data/lib/sqreen/js/js_service_adapter.rb +1 -1
  114. data/lib/sqreen/js/mini_racer_adapter.rb +2 -1
  115. data/lib/sqreen/js/mini_racer_executable_js.rb +2 -0
  116. data/lib/sqreen/js/thread_local_exec_js_runnable.rb +1 -1
  117. data/lib/sqreen/kit/signals/specialized/sqreen_exception.rb +2 -0
  118. data/lib/sqreen/legacy.rb +1 -1
  119. data/lib/sqreen/legacy/instrumentation.rb +22 -10
  120. data/lib/sqreen/legacy/old_event_submission_strategy.rb +2 -1
  121. data/lib/sqreen/log.rb +3 -2
  122. data/lib/sqreen/log/loggable.rb +2 -1
  123. data/lib/sqreen/logger.rb +25 -1
  124. data/lib/sqreen/metrics.rb +1 -1
  125. data/lib/sqreen/metrics/average.rb +1 -1
  126. data/lib/sqreen/metrics/base.rb +1 -1
  127. data/lib/sqreen/metrics/binning.rb +1 -1
  128. data/lib/sqreen/metrics/collect.rb +1 -1
  129. data/lib/sqreen/metrics/sum.rb +1 -1
  130. data/lib/sqreen/metrics_store.rb +12 -1
  131. data/lib/sqreen/metrics_store/already_registered_metric.rb +1 -1
  132. data/lib/sqreen/metrics_store/unknown_metric.rb +1 -1
  133. data/lib/sqreen/metrics_store/unregistered_metric.rb +1 -1
  134. data/lib/sqreen/middleware.rb +1 -1
  135. data/lib/sqreen/node.rb +1 -1
  136. data/lib/sqreen/not_implemented_yet.rb +1 -1
  137. data/lib/sqreen/null_logger.rb +23 -1
  138. data/lib/sqreen/payload_creator/header_section.rb +1 -1
  139. data/lib/sqreen/performance_notifications.rb +1 -1
  140. data/lib/sqreen/performance_notifications/binned_metrics.rb +1 -1
  141. data/lib/sqreen/performance_notifications/log.rb +1 -1
  142. data/lib/sqreen/performance_notifications/log_performance.rb +1 -1
  143. data/lib/sqreen/performance_notifications/metrics.rb +1 -1
  144. data/lib/sqreen/prefix.rb +1 -1
  145. data/lib/sqreen/rails_middleware.rb +1 -1
  146. data/lib/sqreen/remote_command.rb +2 -1
  147. data/lib/sqreen/remote_command/failure_output.rb +1 -1
  148. data/lib/sqreen/rules.rb +8 -4
  149. data/lib/sqreen/rules/attrs.rb +1 -1
  150. data/lib/sqreen/rules/blacklist_ips_cb.rb +2 -2
  151. data/lib/sqreen/rules/custom_error_cb.rb +3 -3
  152. data/lib/sqreen/rules/execjs_cb.rb +1 -0
  153. data/lib/sqreen/rules/rule_cb.rb +2 -0
  154. data/lib/sqreen/rules/run_user_actions.rb +1 -1
  155. data/lib/sqreen/rules/waf_cb.rb +3 -3
  156. data/lib/sqreen/run_when_called_cb.rb +1 -1
  157. data/lib/sqreen/runner.rb +28 -2
  158. data/lib/sqreen/safe_json.rb +1 -1
  159. data/lib/sqreen/sensitive_data_redactor.rb +2 -2
  160. data/lib/sqreen/serializer.rb +1 -1
  161. data/lib/sqreen/shared_storage.rb +1 -1
  162. data/lib/sqreen/shrink_wrap.rb +1 -1
  163. data/lib/sqreen/signals/conversions.rb +5 -0
  164. data/lib/sqreen/signals/http_trace_redaction.rb +5 -0
  165. data/lib/sqreen/signals/signals_submission_strategy.rb +5 -0
  166. data/lib/sqreen/signature_verifier.rb +1 -1
  167. data/lib/sqreen/sinatra_middleware.rb +1 -1
  168. data/lib/sqreen/sqreen_signed_verifier.rb +1 -1
  169. data/lib/sqreen/token_invalid_exception.rb +1 -1
  170. data/lib/sqreen/token_not_found_exception.rb +1 -1
  171. data/lib/sqreen/trie.rb +1 -1
  172. data/lib/sqreen/unauthorized.rb +1 -1
  173. data/lib/sqreen/util.rb +1 -1
  174. data/lib/sqreen/util/capped_array.rb +1 -1
  175. data/lib/sqreen/util/capped_hash.rb +1 -1
  176. data/lib/sqreen/util/capped_string.rb +1 -1
  177. data/lib/sqreen/util/capper.rb +1 -1
  178. data/lib/sqreen/version.rb +2 -2
  179. data/lib/sqreen/waf_error.rb +1 -1
  180. data/lib/sqreen/weave.rb +1 -1
  181. data/lib/sqreen/weave/budget.rb +46 -0
  182. data/lib/sqreen/weave/hardcoded.rb +1 -1
  183. data/lib/sqreen/weave/instrumentor.rb +1 -1
  184. data/lib/sqreen/weave/legacy.rb +1 -1
  185. data/lib/sqreen/weave/legacy/instrumentation.rb +273 -110
  186. data/lib/sqreen/web_server/generic.rb +1 -1
  187. data/lib/sqreen/web_server/webrick.rb +1 -1
  188. data/lib/sqreen/worker.rb +7 -3
  189. metadata +39 -18
  190. data/lib/sqreen/ecosystem/redis/redis_connection.rb +0 -43
  191. data/lib/sqreen/encoding_sanitizer.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5b3d6fc37fd5d2431e622d302fd3f58d35dd64a3fc7abca741a84b213688025
4
- data.tar.gz: a3443a3f1c95841af9deb7eb5f4a5ab8c47aabf6c6f42eeb902d828edd3ad91d
3
+ metadata.gz: 57d4b7264d76b91e470ef68f34927c03050684f38cd02c4c00e22cf6119da732
4
+ data.tar.gz: 4e4d4ad4e0967db38931e6fe8bcce3ca437b20e7a8db302ef3c51ecfdf999bd7
5
5
  SHA512:
6
- metadata.gz: 487d63ea8f4bc8c5d3da55dced0c8d458c6a6c7f218689027925d8f6ca2808fc4eda478e57ca67764edb8a049fb8fae60b552974ffa39dfaa0dcd15d31f34071
7
- data.tar.gz: 23cf04763b76e95d421a36593c2b96d91aad0f40bc206fe8608606fad803a464d03518ac92b40e4c1bb667dbd163ba79c6380f605b1133270f65d66fb8314173
6
+ metadata.gz: 6191b1900193ee47b0794aecd80ba598642f10b643c1f98d425006e116a3d2b49eec61bde709fd19bfa721400a362c1f07f3707d09fa8843f7d6b630a6fe3e7a
7
+ data.tar.gz: 6f90abf84cf3a036bb1dfe2474500f36266fe8dad4f5886c1c1226e0e211a093c0d9b09750cef9c8ee3052cdc19c69203e10d7701a626fd63cb42550cd8eab06
@@ -1,10 +1,50 @@
1
- ## 1.21.0.beta2
1
+ ## 1.22.1
2
2
 
3
- * Improve transport and tracing internals
3
+ * Fix excessive exception reporting, reducing CPU and network load
4
+ * Fix sensitive information attachment on pure tracing payloads
5
+ * Redact more sensitive fields by default
6
+ * Ensure preliminary compatibility with Ruby 3.0 previews
7
+ * Allow update to Sqreen MiniRacer 0.3.1
4
8
 
5
- ## 1.21.0.beta1
9
+ ## 1.22.0
6
10
 
7
- * Add transport and tracing internals
11
+ * Update WAF via libsqreen
12
+ * Add support for raw body
13
+ * Improve signature check
14
+ * Improve APM detection
15
+
16
+ ## 1.21.1
17
+
18
+ * Work around NewRelic initialisation (see https://github.com/newrelic/newrelic-ruby-agent/issues/461)
19
+
20
+ ## 1.21.0
21
+
22
+ * Add support for transport and tracing facilities
23
+
24
+ ## 1.20.4
25
+
26
+ * Fix missing budget check
27
+ * Improve performance
28
+ * Align internal setting name for WAF
29
+ * Include response information in all payloads
30
+ * Improve robustness against invalid Unicode
31
+ * Prevent rule execution to pursue in early block cases
32
+
33
+ ## 1.20.4.beta1
34
+
35
+ * Add optional dynamic time budget
36
+ * Add advanced per request metrics
37
+ * Improve robustness against exception in instrumentation
38
+ * Improve metric engine thread safety
39
+ * Restrict deferred logger to final logger severity on agent boot
40
+
41
+ ## 1.20.3
42
+
43
+ * Fix signature check
44
+
45
+ ## 1.20.2
46
+
47
+ * Fix performance regression in instrumentation engine
8
48
 
9
49
  ## 1.20.1
10
50
 
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,8 @@
1
- # typed: true
1
+ # typed: ignore
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
+
2
6
  module Sqreen
3
7
  module Actions
4
8
  # documents the operations an actions index should implement
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -22,7 +22,7 @@ module Sqreen
22
22
  end
23
23
 
24
24
  def do_run(identity_params)
25
- Sqreen.log.info(
25
+ Sqreen.log.debug(
26
26
  "Will raise due to user being blocked by action #{id}. " \
27
27
  "Blocked user identity: #{identity_params}"
28
28
  )
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -25,7 +25,7 @@ module Sqreen
25
25
  end
26
26
 
27
27
  def do_run(client_ip)
28
- Sqreen.log.info "Will request redirect for client with IP #{client_ip} " \
28
+ Sqreen.log.debug "Will request redirect for client with IP #{client_ip} " \
29
29
  "(action: #{id})."
30
30
  {
31
31
  :status => :skip,
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -24,7 +24,7 @@ module Sqreen
24
24
  end
25
25
 
26
26
  def do_run(identity_params)
27
- Sqreen.log.info 'Will request redirect for user with identity ' \
27
+ Sqreen.log.debug 'Will request redirect for user with identity ' \
28
28
  "#{identity_params} (action: #{id})."
29
29
 
30
30
  e = Sqreen::AttackBlocked.new(
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,8 @@
1
- # typed: true
1
+ # typed: ignore
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
+
2
6
  require 'sqreen/actions/actions_index'
3
7
 
4
8
  module Sqreen
@@ -1,3 +1,8 @@
1
+ # typed: ignore
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
+
1
6
  require 'digest'
2
7
 
3
8
  module Sqreen
@@ -1,3 +1,8 @@
1
+ # typed: ignore
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
+
1
6
  require 'sqreen/rules/rule_cb'
2
7
  require 'sqreen/metrics/base'
3
8
 
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -67,7 +67,7 @@ module Sqreen
67
67
  return true if rem <= 0
68
68
  if hash.is_a?(Array)
69
69
  return hash.any? do |v|
70
- ConditionEvaluator.hash_key_include?(values, v, min_value_size, rem - 1)
70
+ hash_key_include?(values, v, min_value_size, rem - 1)
71
71
  end
72
72
  end
73
73
 
@@ -81,7 +81,13 @@ module Sqreen
81
81
  if hkey.respond_to?(:empty?) && hkey.empty?
82
82
  false
83
83
  else
84
- values.include?(hkey.to_s) || ConditionEvaluator.hash_key_include?(values, hval, min_value_size, rem - 1)
84
+ key_incl = if values.is_a?(String)
85
+ str_include?(values, hkey.to_s)
86
+ else
87
+ values.include?(hkey.to_s)
88
+ end
89
+
90
+ key_incl || hash_key_include?(values, hval, min_value_size, rem - 1)
85
91
  end
86
92
  end
87
93
  end
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -57,7 +57,7 @@ module Sqreen
57
57
  { :env => :SQREEN_RULES_SIGNATURE, :name => :rules_verify_signature,
58
58
  :default => true },
59
59
  { :env => :SQREEN_LOG_LEVEL, :name => :log_level,
60
- :default => 'WARN', :choice => %w[UNKNOWN FATAL ERROR WARN INFO DEBUG] },
60
+ :default => 'INFO', :choice => %w[UNKNOWN FATAL ERROR WARN INFO DEBUG] },
61
61
  { :env => :SQREEN_LOG_LOCATION, :name => :log_location,
62
62
  :default => 'log/sqreen.log' },
63
63
  { :env => :SQREEN_RUN_IN_TEST, :name => :run_in_test,
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: false
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -9,35 +9,70 @@ require 'sqreen/logger'
9
9
 
10
10
  module Sqreen
11
11
  class DeferredLogger
12
- include Singleton
12
+ MAX_ENTRIES = 1000
13
+
14
+ Entry = Struct.new(:severity, :message)
13
15
 
14
16
  def initialize
15
17
  @buffer = StringIO.new
16
18
  @logger = ::Logger.new(@buffer)
19
+ @entries = []
20
+ @mutex = Mutex.new
21
+ end
22
+
23
+ def debug?
24
+ true
25
+ end
26
+
27
+ def info?
28
+ true
29
+ end
30
+
31
+ def warn?
32
+ true
33
+ end
34
+
35
+ def error?
36
+ true
37
+ end
38
+
39
+ def fatal?
40
+ true
17
41
  end
18
42
 
19
43
  def debug(msg = nil, &block)
20
- @logger.debug(msg, &block)
44
+ add(::Logger::DEBUG, msg, &block)
21
45
  end
22
46
 
23
47
  def info(msg = nil, &block)
24
- @logger.info(msg, &block)
48
+ add(::Logger::INFO, msg, &block)
25
49
  end
26
50
 
27
51
  def warn(msg = nil, &block)
28
- @logger.warn(msg, &block)
52
+ add(::Logger::WARN, msg, &block)
29
53
  end
30
54
 
31
55
  def error(msg = nil, &block)
32
- @logger.error(msg, &block)
56
+ add(::Logger::ERROR, msg, &block)
33
57
  end
34
58
 
35
59
  def fatal(msg = nil, &block)
36
- @logger.error(msg, &block)
60
+ add(::Logger::FATAL, msg, &block)
61
+ end
62
+
63
+ def unknown(msg = nil, &block)
64
+ add(::Logger::UNKNOWN, msg, &block)
37
65
  end
38
66
 
39
67
  def add(severity, msg = nil, &block)
40
- send(Sqreen::Logger::SEVERITY_TO_METHOD[severity], msg, &block)
68
+ @mutex.synchronize do
69
+ @entries.shift if @entries.count >= MAX_ENTRIES
70
+ mark = @buffer.pos
71
+ @logger.add(severity, msg, &block)
72
+ @buffer.seek(mark)
73
+ @entries << Entry.new(severity, @buffer.read)
74
+ @buffer.truncate(0)
75
+ end
41
76
  end
42
77
 
43
78
  def formatter=(value)
@@ -45,21 +80,22 @@ module Sqreen
45
80
  end
46
81
 
47
82
  def flush_to(logger)
48
- logger.instance_eval { @logdev }.write(read).tap { reset }
83
+ @mutex.synchronize do
84
+ @entries.each do |entry|
85
+ next if entry.severity < logger.level
86
+ logger.instance_eval { @logdev }.write(entry.message)
87
+ end
88
+ reset
89
+ end
49
90
  end
50
91
 
51
92
  private
52
93
 
53
- def read
54
- @buffer.rewind
55
- @buffer.read
56
- end
57
-
58
94
  def reset
59
95
  buffer = StringIO.new
60
96
  logger = ::Logger.new(buffer)
61
97
  logger.formatter = @logger.formatter
62
- @buffer, @logger = buffer, logger
98
+ @buffer, @logger, @entries = buffer, logger, []
63
99
  end
64
100
  end
65
101
  end
@@ -1,4 +1,4 @@
1
- # typed: strong
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
@@ -1,4 +1,4 @@
1
- # typed: true
1
+ # typed: ignore
2
2
 
3
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
4
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html