sqreen 1.18.2-java → 1.19.0-java

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 (184) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/LICENSE +3 -0
  4. data/lib/sqreen.rb +2 -0
  5. data/lib/sqreen/actions.rb +13 -337
  6. data/lib/sqreen/actions/actions_index.rb +16 -0
  7. data/lib/sqreen/actions/base.rb +104 -0
  8. data/lib/sqreen/actions/block_ip.rb +34 -0
  9. data/lib/sqreen/actions/block_user.rb +46 -0
  10. data/lib/sqreen/actions/ip_range_indexed_action_class.rb +16 -0
  11. data/lib/sqreen/actions/ip_ranges_index.rb +57 -0
  12. data/lib/sqreen/actions/redirect_ip.rb +42 -0
  13. data/lib/sqreen/actions/redirect_user.rb +47 -0
  14. data/lib/sqreen/actions/repository.rb +43 -0
  15. data/lib/sqreen/actions/unknown_action_type.rb +20 -0
  16. data/lib/sqreen/actions/user_action_class.rb +16 -0
  17. data/lib/sqreen/actions/users_index.rb +35 -0
  18. data/lib/sqreen/agent.rb +6 -2
  19. data/lib/sqreen/attack_blocked.rb +19 -0
  20. data/lib/sqreen/backport.rb +2 -0
  21. data/lib/sqreen/backport/clock_gettime.rb +74 -0
  22. data/lib/sqreen/backport/original_name.rb +2 -0
  23. data/lib/sqreen/binding_accessor.rb +11 -102
  24. data/lib/sqreen/binding_accessor/path_elem.rb +10 -0
  25. data/lib/sqreen/binding_accessor/transforms.rb +114 -0
  26. data/lib/sqreen/call_countable.rb +2 -0
  27. data/lib/sqreen/capped_queue.rb +4 -0
  28. data/lib/sqreen/{callbacks.rb → cb.rb} +3 -53
  29. data/lib/sqreen/{callback_tree.rb → cb_tree.rb} +4 -2
  30. data/lib/sqreen/condition_evaluator.rb +24 -5
  31. data/lib/sqreen/conditionable.rb +2 -0
  32. data/lib/sqreen/configuration.rb +19 -0
  33. data/lib/sqreen/context.rb +2 -0
  34. data/lib/sqreen/default_cb.rb +22 -0
  35. data/lib/sqreen/deferred_logger.rb +65 -0
  36. data/lib/sqreen/deliveries.rb +12 -0
  37. data/lib/sqreen/deliveries/batch.rb +9 -1
  38. data/lib/sqreen/deliveries/simple.rb +7 -0
  39. data/lib/sqreen/dependency.rb +3 -1
  40. data/lib/sqreen/dependency/detector.rb +22 -14
  41. data/lib/sqreen/dependency/libsqreen.rb +32 -0
  42. data/lib/sqreen/dependency/new_relic.rb +2 -0
  43. data/lib/sqreen/dependency/rack.rb +10 -5
  44. data/lib/sqreen/dependency/rails.rb +8 -0
  45. data/lib/sqreen/dependency/sentry.rb +2 -0
  46. data/lib/sqreen/dependency/sinatra.rb +58 -14
  47. data/lib/sqreen/encoding_sanitizer.rb +2 -0
  48. data/lib/sqreen/error_handling_middleware.rb +32 -0
  49. data/lib/sqreen/event.rb +4 -0
  50. data/lib/sqreen/events/attack.rb +4 -0
  51. data/lib/sqreen/events/remote_exception.rb +2 -0
  52. data/lib/sqreen/events/request_record.rb +13 -56
  53. data/lib/sqreen/exception.rb +11 -40
  54. data/lib/sqreen/formatter_with_tid.rb +47 -0
  55. data/lib/sqreen/framework_cb.rb +30 -0
  56. data/lib/sqreen/frameworks.rb +9 -0
  57. data/lib/sqreen/frameworks/generic.rb +22 -2
  58. data/lib/sqreen/frameworks/rails.rb +3 -0
  59. data/lib/sqreen/frameworks/rails3.rb +2 -0
  60. data/lib/sqreen/frameworks/request_recorder.rb +5 -0
  61. data/lib/sqreen/frameworks/sinatra.rb +4 -0
  62. data/lib/sqreen/frameworks/sqreen_test.rb +4 -0
  63. data/lib/sqreen/graft.rb +12 -0
  64. data/lib/sqreen/graft/call.rb +150 -0
  65. data/lib/sqreen/{dependency → graft}/callback.rb +12 -4
  66. data/lib/sqreen/graft/hook.rb +316 -0
  67. data/lib/sqreen/{dependency → graft}/hook_point.rb +152 -33
  68. data/lib/sqreen/graft/hook_point_error.rb +10 -0
  69. data/lib/sqreen/invalid_signature_exception.rb +10 -0
  70. data/lib/sqreen/js.rb +11 -0
  71. data/lib/sqreen/js/call_context.rb +12 -0
  72. data/lib/sqreen/js/context_pool.rb +62 -0
  73. data/lib/sqreen/js/exec_js_runnable.rb +22 -0
  74. data/lib/sqreen/js/execjs_adapter.rb +8 -47
  75. data/lib/sqreen/js/executable_js.rb +14 -0
  76. data/lib/sqreen/js/js_service.rb +4 -22
  77. data/lib/sqreen/js/js_service_adapter.rb +20 -0
  78. data/lib/sqreen/js/mini_racer_adapter.rb +8 -180
  79. data/lib/sqreen/js/mini_racer_executable_js.rb +144 -0
  80. data/lib/sqreen/js/thread_local_exec_js_runnable.rb +49 -0
  81. data/lib/{sqreen-alt.rb → sqreen/legacy.rb} +5 -1
  82. data/lib/sqreen/{instrumentation.rb → legacy/instrumentation.rb} +44 -15
  83. data/lib/sqreen/log.rb +10 -188
  84. data/lib/sqreen/log/loggable.rb +28 -0
  85. data/lib/sqreen/logger.rb +85 -0
  86. data/lib/sqreen/metrics.rb +2 -0
  87. data/lib/sqreen/metrics/average.rb +2 -0
  88. data/lib/sqreen/metrics/base.rb +2 -0
  89. data/lib/sqreen/metrics/binning.rb +2 -0
  90. data/lib/sqreen/metrics/collect.rb +2 -0
  91. data/lib/sqreen/metrics/sum.rb +2 -0
  92. data/lib/sqreen/metrics_store.rb +5 -11
  93. data/lib/sqreen/metrics_store/already_registered_metric.rb +13 -0
  94. data/lib/sqreen/metrics_store/unknown_metric.rb +13 -0
  95. data/lib/sqreen/metrics_store/unregistered_metric.rb +13 -0
  96. data/lib/sqreen/middleware.rb +2 -34
  97. data/lib/sqreen/mono_time.rb +4 -0
  98. data/lib/sqreen/node.rb +46 -0
  99. data/lib/sqreen/not_implemented_yet.rb +10 -0
  100. data/lib/sqreen/null_logger.rb +26 -0
  101. data/lib/sqreen/payload_creator.rb +4 -19
  102. data/lib/sqreen/payload_creator/header_section.rb +30 -0
  103. data/lib/sqreen/performance_notifications.rb +2 -0
  104. data/lib/sqreen/performance_notifications/binned_metrics.rb +2 -0
  105. data/lib/sqreen/performance_notifications/log.rb +2 -0
  106. data/lib/sqreen/performance_notifications/log_performance.rb +2 -0
  107. data/lib/sqreen/performance_notifications/metrics.rb +2 -0
  108. data/lib/sqreen/performance_notifications/newrelic.rb +2 -0
  109. data/lib/sqreen/prefix.rb +35 -0
  110. data/lib/sqreen/rails_middleware.rb +16 -0
  111. data/lib/sqreen/remote_command.rb +3 -8
  112. data/lib/sqreen/remote_command/failure_output.rb +16 -0
  113. data/lib/sqreen/rules.rb +34 -2
  114. data/lib/sqreen/{rule_attributes.rb → rules/attrs.rb} +2 -0
  115. data/lib/sqreen/{rules_callbacks/sdk_auth_track.rb → rules/auth_track_cb.rb} +4 -2
  116. data/lib/sqreen/{rules_callbacks/binding_accessor_matcher.rb → rules/binding_accessor_matcher_cb.rb} +6 -8
  117. data/lib/sqreen/{rules_callbacks → rules}/binding_accessor_metrics.rb +3 -1
  118. data/lib/sqreen/{rules_callbacks/blacklist_ips.rb → rules/blacklist_ips_cb.rb} +5 -2
  119. data/lib/sqreen/{rules_callbacks → rules}/count_http_codes.rb +4 -2
  120. data/lib/sqreen/{rules_callbacks/crawler_user_agent_matches.rb → rules/crawler_user_agent_matches_cb.rb} +3 -1
  121. data/lib/sqreen/{rules_callbacks/crawler_user_agent_matches_metrics.rb → rules/crawler_user_agent_matches_metrics_cb.rb} +3 -1
  122. data/lib/sqreen/{rules_callbacks/custom_error.rb → rules/custom_error_cb.rb} +3 -1
  123. data/lib/sqreen/{rules_callbacks/devise_auth_track.rb → rules/devise_auth_track_cb.rb} +4 -2
  124. data/lib/sqreen/{rules_callbacks/devise_signup_track.rb → rules/devise_signup_track_cb.rb} +4 -2
  125. data/lib/sqreen/{rules_callbacks/execjs.rb → rules/execjs_cb.rb} +51 -50
  126. data/lib/sqreen/{rules_callbacks/headers_insert.rb → rules/headers_insert_cb.rb} +8 -1
  127. data/lib/sqreen/{rules_callbacks → rules}/matcher_rule.rb +4 -2
  128. data/lib/sqreen/{rules_callbacks/not_found.rb → rules/not_found_cb.rb} +7 -2
  129. data/lib/sqreen/{rules_callbacks/rails_parameters.rb → rules/rails_parameters_cb.rb} +3 -1
  130. data/lib/sqreen/{rules_callbacks → rules}/record_request_context.rb +3 -1
  131. data/lib/sqreen/{rules_callbacks/regexp_rule.rb → rules/regexp_rule_cb.rb} +3 -1
  132. data/lib/sqreen/{rule_callback.rb → rules/rule_cb.rb} +4 -2
  133. data/lib/sqreen/{rules_callbacks → rules}/run_req_start_actions.rb +7 -3
  134. data/lib/sqreen/{rules_callbacks → rules}/run_user_actions.rb +4 -2
  135. data/lib/sqreen/{rules_callbacks/shell_env.rb → rules/shell_env_cb.rb} +3 -1
  136. data/lib/sqreen/{rules_callbacks/sdk_signup_track.rb → rules/signup_track_cb.rb} +4 -2
  137. data/lib/sqreen/rules/update_request_context.rb +22 -0
  138. data/lib/sqreen/{rules_callbacks/url_matches.rb → rules/url_matches_cb.rb} +3 -1
  139. data/lib/sqreen/{rules_callbacks/user_agent_matches.rb → rules/user_agent_matches_cb.rb} +3 -1
  140. data/lib/sqreen/{rules_callbacks/waf.rb → rules/waf_cb.rb} +41 -21
  141. data/lib/sqreen/{rules_callbacks/reflected_xss.rb → rules/xss_cb.rb} +12 -7
  142. data/lib/sqreen/run_when_called_cb.rb +23 -0
  143. data/lib/sqreen/runner.rb +25 -7
  144. data/lib/sqreen/runtime_infos.rb +4 -9
  145. data/lib/sqreen/safe_json.rb +2 -0
  146. data/lib/sqreen/sdk.rb +4 -0
  147. data/lib/sqreen/sensitive_data_redactor.rb +113 -0
  148. data/lib/sqreen/serializer.rb +2 -0
  149. data/lib/sqreen/session.rb +2 -0
  150. data/lib/sqreen/shared_storage.rb +2 -0
  151. data/lib/sqreen/shared_storage23.rb +2 -0
  152. data/lib/sqreen/shrink_wrap.rb +16 -0
  153. data/lib/sqreen/signature_verifier.rb +22 -0
  154. data/lib/sqreen/sinatra_middleware.rb +16 -0
  155. data/lib/sqreen/{rules_signature.rb → sqreen_signed_verifier.rb} +7 -17
  156. data/lib/sqreen/token_invalid_exception.rb +10 -0
  157. data/lib/sqreen/token_not_found_exception.rb +11 -0
  158. data/lib/sqreen/trie.rb +5 -64
  159. data/lib/sqreen/unauthorized.rb +10 -0
  160. data/lib/sqreen/util.rb +7 -0
  161. data/lib/sqreen/util/capped_array.rb +35 -0
  162. data/lib/sqreen/util/capped_hash.rb +41 -0
  163. data/lib/sqreen/util/capped_string.rb +26 -0
  164. data/lib/sqreen/util/capper.rb +67 -0
  165. data/lib/sqreen/version.rb +3 -1
  166. data/lib/sqreen/waf_error.rb +20 -0
  167. data/lib/sqreen/weave.rb +12 -0
  168. data/lib/sqreen/weave/hardcoded.rb +19 -0
  169. data/lib/sqreen/weave/instrumentor.rb +48 -0
  170. data/lib/sqreen/weave/legacy.rb +12 -0
  171. data/lib/sqreen/weave/legacy/instrumentation.rb +406 -0
  172. data/lib/sqreen/web_server.rb +2 -0
  173. data/lib/sqreen/web_server/generic.rb +2 -0
  174. data/lib/sqreen/web_server/passenger.rb +2 -0
  175. data/lib/sqreen/web_server/puma.rb +2 -0
  176. data/lib/sqreen/web_server/rainbows.rb +2 -0
  177. data/lib/sqreen/web_server/thin.rb +2 -0
  178. data/lib/sqreen/web_server/unicorn.rb +2 -0
  179. data/lib/sqreen/web_server/webrick.rb +2 -0
  180. data/lib/sqreen/worker.rb +2 -0
  181. metadata +105 -39
  182. data/lib/sqreen/dependency/hook.rb +0 -102
  183. data/lib/sqreen/rules_callbacks.rb +0 -35
  184. data/lib/sqreen/rules_callbacks/inspect_rule.rb +0 -25
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
@@ -1,3 +1,5 @@
1
+ # typed: false
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
@@ -1,3 +1,5 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
@@ -0,0 +1,35 @@
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 'ipaddr'
7
+
8
+ # TODO: move to Sqreen::IP
9
+
10
+ module Sqreen
11
+ Prefix = Struct.new(:family, :bitlen, :address, :data) do # addr is integer
12
+ def initialize(*args)
13
+ super
14
+ raise ArgumentError, 'no family given' unless family
15
+ raise ArgumentError, 'no bitlen given' unless bitlen
16
+ raise ArgumentError, 'no address given' unless address
17
+ end
18
+
19
+ def matches?(address, family)
20
+ raise 'family mismatch' unless family == self.family
21
+ shift_amount = (family == Socket::AF_INET ? 32 : 128) - bitlen
22
+ (address ^ self.address) >> shift_amount == 0
23
+ end
24
+ end
25
+
26
+ def Prefix.from_str(str, data = nil)
27
+ ip_addr = IPAddr.new(str)
28
+ bitlen = if str =~ /\/(\d+)$/
29
+ $~[1].to_i
30
+ else
31
+ ip_addr.family == Socket::AF_INET6 ? 128 : 32
32
+ end
33
+ Prefix.new(ip_addr.family, bitlen, ip_addr.to_i, data)
34
+ end
35
+ end
@@ -0,0 +1,16 @@
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 RailsMiddleware
8
+ def initialize(app)
9
+ @app = app
10
+ end
11
+
12
+ def call(env)
13
+ @app.call(env)
14
+ end
15
+ end
16
+ end
@@ -1,8 +1,11 @@
1
+ # typed: false
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
6
  require 'sqreen/log'
5
7
  require 'sqreen/events/remote_exception'
8
+ require 'sqreen/remote_command/failure_output'
6
9
 
7
10
  module Sqreen
8
11
  # Execute and sanitize remote commands
@@ -21,14 +24,6 @@ module Sqreen
21
24
  :performance_budget => :change_performance_budget,
22
25
  }.freeze
23
26
 
24
- # wraps output returned by a command that should also result in status: false
25
- class FailureOutput
26
- attr_reader :wrapped_output
27
- def initialize(output)
28
- @wrapped_output = output
29
- end
30
- end
31
-
32
27
  attr_reader :uuid
33
28
 
34
29
  def initialize(json_desc)
@@ -0,0 +1,16 @@
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 RemoteCommand
8
+ # wraps output returned by a command that should also result in status: false
9
+ class FailureOutput
10
+ attr_reader :wrapped_output
11
+ def initialize(output)
12
+ @wrapped_output = output
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,10 +1,42 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
6
  require 'sqreen/log'
5
- require 'sqreen/rule_attributes'
6
- require 'sqreen/rules_callbacks'
7
+ require 'sqreen/rules/attrs'
8
+
9
+ require 'sqreen/rules/regexp_rule_cb'
10
+ require 'sqreen/rules/matcher_rule'
11
+
12
+ require 'sqreen/rules/record_request_context'
13
+ require 'sqreen/rules/update_request_context'
14
+ require 'sqreen/rules/rails_parameters_cb'
15
+
16
+ require 'sqreen/rules/headers_insert_cb'
17
+ require 'sqreen/rules/blacklist_ips_cb'
18
+
19
+ require 'sqreen/rules/shell_env_cb'
20
+
21
+ require 'sqreen/rules/url_matches_cb'
22
+ require 'sqreen/rules/user_agent_matches_cb'
23
+ require 'sqreen/rules/crawler_user_agent_matches_cb'
24
+
25
+ require 'sqreen/rules/xss_cb'
26
+ require 'sqreen/rules/execjs_cb'
27
+
28
+ require 'sqreen/rules/binding_accessor_metrics'
29
+ require 'sqreen/rules/binding_accessor_matcher_cb'
30
+ require 'sqreen/rules/count_http_codes'
31
+ require 'sqreen/rules/not_found_cb'
32
+ require 'sqreen/rules/crawler_user_agent_matches_metrics_cb'
33
+ require 'sqreen/rules/auth_track_cb'
34
+ require 'sqreen/rules/signup_track_cb'
35
+ require 'sqreen/rules/devise_auth_track_cb'
36
+ require 'sqreen/rules/devise_signup_track_cb'
7
37
 
38
+ require 'sqreen/rules/custom_error_cb'
39
+ require 'sqreen/rules/waf_cb'
8
40
 
9
41
  ## Rules
10
42
  #
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
@@ -1,8 +1,10 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_attributes'
5
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/attrs'
7
+ require 'sqreen/rules/rule_cb'
6
8
  require 'sqreen/safe_json'
7
9
 
8
10
  module Sqreen
@@ -1,10 +1,12 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/rule_cb'
5
7
  require 'sqreen/binding_accessor'
6
8
  require 'sqreen/mono_time'
7
- require 'sqreen/rules_callbacks/matcher_rule'
9
+ require 'sqreen/rules/matcher_rule'
8
10
 
9
11
  module Sqreen
10
12
  module Rules
@@ -49,9 +51,7 @@ module Sqreen
49
51
  end
50
52
 
51
53
  def pre(inst, args, budget = nil, &_block)
52
- unless budget.nil?
53
- finish = budget + Sqreen.time
54
- end
54
+ finish = budget + Sqreen.time unless budget.nil?
55
55
  resol_cache = Hash.new do |hash, accessor|
56
56
  hash[accessor] = accessor.resolve(binding, framework, inst, args)
57
57
  end
@@ -62,9 +62,7 @@ module Sqreen
62
62
  next unless val.respond_to?(:each)
63
63
  next if val.respond_to?(:seek)
64
64
  val.each do |v|
65
- if !budget.nil? && Sqreen.time > finish
66
- return nil
67
- end
65
+ return nil if !budget.nil? && Sqreen.time > finish
68
66
  next if !v.is_a?(String) || (!matcher.min_size.nil? && v.size < matcher.min_size)
69
67
  next if v.size > MAX_LENGTH
70
68
  next if matcher.match(v).nil?
@@ -1,7 +1,9 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/rule_cb'
5
7
  require 'sqreen/binding_accessor'
6
8
  require 'sqreen/events/remote_exception'
7
9
 
@@ -1,9 +1,12 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
6
  require 'sqreen/trie'
7
+ require 'sqreen/prefix'
5
8
 
6
- require 'sqreen/rule_callback'
9
+ require 'sqreen/rules/rule_cb'
7
10
 
8
11
  module Sqreen
9
12
  module Rules
@@ -46,7 +49,7 @@ module Sqreen
46
49
  def find_blacklisted_ip(rip)
47
50
  begin
48
51
  ipa = IPAddr.new(rip)
49
- rescue
52
+ rescue StandardError
50
53
  Sqreen.log.info "invalid IP address given by framework: #{rip}"
51
54
  return nil
52
55
  end
@@ -1,8 +1,10 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_attributes'
5
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/attrs'
7
+ require 'sqreen/rules/rule_cb'
6
8
  require 'sqreen/safe_json'
7
9
 
8
10
  module Sqreen
@@ -1,7 +1,9 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rules_callbacks/matcher_rule'
6
+ require 'sqreen/rules/matcher_rule'
5
7
  require 'sqreen/frameworks'
6
8
 
7
9
  module Sqreen
@@ -1,7 +1,9 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rules_callbacks/matcher_rule'
6
+ require 'sqreen/rules/matcher_rule'
5
7
  require 'sqreen/frameworks'
6
8
 
7
9
  module Sqreen
@@ -1,7 +1,9 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/rule_cb'
5
7
  require 'sqreen/exception'
6
8
 
7
9
  module Sqreen
@@ -1,8 +1,10 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_attributes'
5
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/attrs'
7
+ require 'sqreen/rules/rule_cb'
6
8
  require 'sqreen/safe_json'
7
9
 
8
10
  module Sqreen
@@ -1,8 +1,10 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
- require 'sqreen/rule_attributes'
5
- require 'sqreen/rule_callback'
6
+ require 'sqreen/rules/attrs'
7
+ require 'sqreen/rules/rule_cb'
6
8
  require 'sqreen/safe_json'
7
9
 
8
10
  module Sqreen
@@ -1,11 +1,12 @@
1
+ # typed: ignore
2
+
1
3
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
4
  # Please refer to our terms for more information: https://www.sqreen.com/terms.html
3
5
 
4
-
5
6
  require 'sqreen/js/js_service'
6
7
 
7
- require 'sqreen/rule_attributes'
8
- require 'sqreen/rule_callback'
8
+ require 'sqreen/rules/attrs'
9
+ require 'sqreen/rules/rule_cb'
9
10
  require 'sqreen/condition_evaluator'
10
11
  require 'sqreen/binding_accessor'
11
12
  require 'sqreen/events/remote_exception'
@@ -14,7 +15,6 @@ module Sqreen
14
15
  module Rules
15
16
  # Exec js callbacks
16
17
  class ExecJSCB < RuleCB
17
-
18
18
  class << self
19
19
  # @return [Sqreen::Js::JsService]
20
20
  def js_service
@@ -77,7 +77,7 @@ module Sqreen
77
77
  when NilClass
78
78
  false
79
79
  when Hash
80
- ret.keys.each do |k|
80
+ ret.keys.each do |k| # rubocop:disable Performance/HashEachMethods
81
81
  ret[(begin
82
82
  k.to_sym
83
83
  rescue StandardError
@@ -119,7 +119,6 @@ module Sqreen
119
119
 
120
120
  # XXX: budgets was not subtracted from
121
121
  call_callback(name, budget, inst, new_ba_args, args, rv)
122
-
123
122
  rescue StandardError => e
124
123
  Sqreen.log.warn { "Caught JS callback exception: #{e.inspect}" }
125
124
  Sqreen.log.debug e.backtrace
@@ -127,10 +126,11 @@ module Sqreen
127
126
  nil
128
127
  end
129
128
 
130
-
131
- def self.build_accessors(reqs)
132
- reqs.map do |req|
133
- BindingAccessor.new(req, true)
129
+ class << self
130
+ def build_accessors(reqs)
131
+ reqs.map do |req|
132
+ BindingAccessor.new(req, true)
133
+ end
134
134
  end
135
135
  end
136
136
 
@@ -176,10 +176,10 @@ module Sqreen
176
176
  next unless haystack_idx
177
177
 
178
178
  arguments[haystack_idx] = ArgumentFilter.hash_val_included(
179
- arguments[needed_idx],
180
- arguments[haystack_idx],
181
- min_length.to_i,
182
- MAX_DEPTH
179
+ arguments[needed_idx],
180
+ arguments[haystack_idx],
181
+ min_length.to_i,
182
+ MAX_DEPTH
183
183
  )
184
184
  end
185
185
 
@@ -193,7 +193,7 @@ module Sqreen
193
193
  next unless args_or_func.is_a?(Array)
194
194
  args_bas = args_or_func[0..-2] unless args_or_func.empty?
195
195
  @ba_expressions[name] =
196
- ExecJSCB.build_accessors(args_bas).map(&:expression)
196
+ ExecJSCB.build_accessors(args_bas).map(&:expression)
197
197
  end
198
198
  end
199
199
 
@@ -212,47 +212,48 @@ module Sqreen
212
212
  end
213
213
  end
214
214
 
215
- def self.hash_val_included(needed, haystack, min_length = 8, max_depth = 20)
216
- new_obj = {}
217
- insert = []
218
- to_do = haystack.map { |k, v| [new_obj, k, v, 0] }
219
- until to_do.empty?
220
- where, key, value, deepness = to_do.pop
221
- safe_key = key.is_a?(Integer) ? key : key.to_s
222
- if value.is_a?(Hash) && deepness < max_depth
223
- val = {}
224
- insert << [where, safe_key, val]
225
- to_do += value.map { |k, v| [val, k, v, deepness + 1] }
226
- elsif value.is_a?(Array) && deepness < max_depth
227
- val = []
228
- insert << [where, safe_key, val]
229
- i = -1
230
- to_do += value.map { |v| [val, i += 1, v, deepness + 1] }
231
- elsif deepness >= max_depth # if we are after max_depth don't try to filter
232
- insert << [where, safe_key, value]
233
- else
234
- v = value.to_s
235
- if v.size >= min_length && ConditionEvaluator.str_include?(needed.to_s, v)
236
- case where
237
- when Array
238
- where << value
239
- else
240
- where[safe_key] = value
215
+ class << self
216
+ def hash_val_included(needed, haystack, min_length = 8, max_depth = 20)
217
+ new_obj = {}
218
+ insert = []
219
+ to_do = haystack.map { |k, v| [new_obj, k, v, 0] }
220
+ until to_do.empty?
221
+ where, key, value, deepness = to_do.pop
222
+ safe_key = key.is_a?(Integer) ? key : key.to_s
223
+ if value.is_a?(Hash) && deepness < max_depth
224
+ val = {}
225
+ insert << [where, safe_key, val]
226
+ to_do += value.map { |k, v| [val, k, v, deepness + 1] }
227
+ elsif value.is_a?(Array) && deepness < max_depth
228
+ val = []
229
+ insert << [where, safe_key, val]
230
+ i = -1
231
+ to_do += value.map { |v| [val, i += 1, v, deepness + 1] }
232
+ elsif deepness >= max_depth # if we are after max_depth don't try to filter
233
+ insert << [where, safe_key, value]
234
+ else
235
+ v = value.to_s
236
+ if v.size >= min_length && ConditionEvaluator.str_include?(needed.to_s, v)
237
+ case where
238
+ when Array
239
+ where << value
240
+ else
241
+ where[safe_key] = value
242
+ end
241
243
  end
242
244
  end
243
245
  end
244
- end
245
- insert.reverse.each do |wh, ikey, ival|
246
- case wh
247
- when Array
248
- wh << ival unless ival.respond_to?(:empty?) && ival.empty?
249
- else
250
- wh[ikey] = ival unless ival.respond_to?(:empty?) && ival.empty?
246
+ insert.reverse.each do |wh, ikey, ival|
247
+ case wh
248
+ when Array
249
+ wh << ival unless ival.respond_to?(:empty?) && ival.empty?
250
+ else
251
+ wh[ikey] = ival unless ival.respond_to?(:empty?) && ival.empty?
252
+ end
251
253
  end
254
+ new_obj
252
255
  end
253
- new_obj
254
256
  end
255
257
  end
256
258
  end
257
259
  end
258
-