tcell_agent 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/bin/tcell_agent +10 -2
  3. data/lib/tcell_agent.rb +3 -3
  4. data/lib/tcell_agent/agent.rb +42 -52
  5. data/lib/tcell_agent/agent/event_processor.rb +129 -162
  6. data/lib/tcell_agent/agent/fork_pipe_manager.rb +57 -62
  7. data/lib/tcell_agent/agent/policy_manager.rb +83 -104
  8. data/lib/tcell_agent/agent/policy_types.rb +24 -29
  9. data/lib/tcell_agent/agent/route_manager.rb +36 -46
  10. data/lib/tcell_agent/agent/static_agent.rb +19 -21
  11. data/lib/tcell_agent/api.rb +23 -28
  12. data/lib/tcell_agent/appsensor/injections_reporter.rb +7 -11
  13. data/lib/tcell_agent/authlogic.rb +7 -7
  14. data/lib/tcell_agent/cmdi.rb +22 -23
  15. data/lib/tcell_agent/config/unknown_options.rb +71 -69
  16. data/lib/tcell_agent/configuration.rb +187 -191
  17. data/lib/tcell_agent/devise.rb +13 -15
  18. data/lib/tcell_agent/hooks/login_fraud.rb +1 -1
  19. data/lib/tcell_agent/instrumentation.rb +120 -124
  20. data/lib/tcell_agent/logger.rb +29 -45
  21. data/lib/tcell_agent/patches.rb +5 -5
  22. data/lib/tcell_agent/policies/dataloss_policy.rb +263 -288
  23. data/lib/tcell_agent/policies/http_redirect_policy.rb +25 -37
  24. data/lib/tcell_agent/policies/http_tx_policy.rb +48 -52
  25. data/lib/tcell_agent/policies/login_fraud_policy.rb +15 -20
  26. data/lib/tcell_agent/policies/policy.rb +0 -2
  27. data/lib/tcell_agent/policies/rust_policies.rb +24 -29
  28. data/lib/tcell_agent/rails.rb +2 -3
  29. data/lib/tcell_agent/rails/auth/authlogic.rb +2 -2
  30. data/lib/tcell_agent/rails/auth/devise.rb +2 -2
  31. data/lib/tcell_agent/rails/auth/doorkeeper.rb +2 -2
  32. data/lib/tcell_agent/rails/better_ip.rb +12 -16
  33. data/lib/tcell_agent/rails/csrf_exception.rb +4 -7
  34. data/lib/tcell_agent/rails/dlp.rb +208 -107
  35. data/lib/tcell_agent/rails/dlp/process_request.rb +37 -47
  36. data/lib/tcell_agent/rails/dlp_handler.rb +9 -11
  37. data/lib/tcell_agent/rails/js_agent_insert.rb +11 -14
  38. data/lib/tcell_agent/rails/middleware/body_filter_middleware.rb +8 -7
  39. data/lib/tcell_agent/rails/middleware/context_middleware.rb +4 -5
  40. data/lib/tcell_agent/rails/middleware/global_middleware.rb +5 -8
  41. data/lib/tcell_agent/rails/middleware/headers_middleware.rb +24 -27
  42. data/lib/tcell_agent/rails/on_start.rb +5 -5
  43. data/lib/tcell_agent/rails/responses.rb +7 -9
  44. data/lib/tcell_agent/rails/routes.rb +62 -81
  45. data/lib/tcell_agent/rails/routes/grape.rb +25 -30
  46. data/lib/tcell_agent/rails/routes/route_id.rb +9 -14
  47. data/lib/tcell_agent/rails/settings_reporter.rb +44 -33
  48. data/lib/tcell_agent/rails/tcell_body_proxy.rb +15 -18
  49. data/lib/tcell_agent/routes/table.rb +31 -33
  50. data/lib/tcell_agent/rust/{libtcellagent-1.3.0.dylib → libtcellagent-1.3.1.dylib} +0 -0
  51. data/lib/tcell_agent/rust/{libtcellagent-1.3.0.so → libtcellagent-1.3.1.so} +0 -0
  52. data/lib/tcell_agent/rust/{libtcellagent-alpine-1.3.0.so → libtcellagent-alpine-1.3.1.so} +0 -0
  53. data/lib/tcell_agent/rust/models.rb +32 -37
  54. data/lib/tcell_agent/rust/tcellagent-1.3.1.dll +0 -0
  55. data/lib/tcell_agent/rust/whisperer.rb +101 -104
  56. data/lib/tcell_agent/sensor_events/app_config.rb +7 -7
  57. data/lib/tcell_agent/sensor_events/appsensor_event.rb +26 -27
  58. data/lib/tcell_agent/sensor_events/appsensor_meta_event.rb +20 -88
  59. data/lib/tcell_agent/sensor_events/command_injection.rb +52 -80
  60. data/lib/tcell_agent/sensor_events/discovery.rb +27 -27
  61. data/lib/tcell_agent/sensor_events/dlp.rb +50 -56
  62. data/lib/tcell_agent/sensor_events/honeytokens.rb +9 -9
  63. data/lib/tcell_agent/sensor_events/metrics.rb +20 -21
  64. data/lib/tcell_agent/sensor_events/patches.rb +10 -12
  65. data/lib/tcell_agent/sensor_events/sensor.rb +32 -36
  66. data/lib/tcell_agent/sensor_events/server_agent.rb +130 -127
  67. data/lib/tcell_agent/sensor_events/util/sanitizer_utilities.rb +60 -80
  68. data/lib/tcell_agent/sensor_events/util/utils.rb +3 -5
  69. data/lib/tcell_agent/servers/passenger.rb +5 -9
  70. data/lib/tcell_agent/servers/puma.rb +18 -27
  71. data/lib/tcell_agent/servers/rails_server.rb +5 -9
  72. data/lib/tcell_agent/servers/thin.rb +2 -4
  73. data/lib/tcell_agent/servers/unicorn.rb +18 -27
  74. data/lib/tcell_agent/servers/webrick.rb +2 -4
  75. data/lib/tcell_agent/settings_reporter.rb +126 -0
  76. data/lib/tcell_agent/sinatra.rb +24 -26
  77. data/lib/tcell_agent/start_background_thread.rb +21 -142
  78. data/lib/tcell_agent/system_info.rb +4 -3
  79. data/lib/tcell_agent/tcell_context.rb +150 -0
  80. data/lib/tcell_agent/userinfo.rb +3 -3
  81. data/lib/tcell_agent/utils/io.rb +19 -24
  82. data/lib/tcell_agent/utils/params.rb +9 -15
  83. data/lib/tcell_agent/utils/queue_with_timeout.rb +26 -32
  84. data/lib/tcell_agent/utils/strings.rb +4 -6
  85. data/lib/tcell_agent/version.rb +1 -1
  86. data/spec/lib/tcell_agent/agent/policy_manager_spec.rb +5 -5
  87. data/spec/lib/tcell_agent/agent/static_agent_spec.rb +7 -7
  88. data/spec/lib/tcell_agent/cmdi_spec.rb +21 -21
  89. data/spec/lib/tcell_agent/hooks/login_fraud_spec.rb +29 -24
  90. data/spec/lib/tcell_agent/instrumentation_spec.rb +4 -4
  91. data/spec/lib/tcell_agent/patches_spec.rb +8 -8
  92. data/spec/lib/tcell_agent/policies/appsensor_policy_spec.rb +23 -23
  93. data/spec/lib/tcell_agent/policies/patches_policy_spec.rb +2 -2
  94. data/spec/lib/tcell_agent/rails/csrf_exception_spec.rb +69 -0
  95. data/spec/lib/tcell_agent/rails/dlp_spec.rb +1039 -0
  96. data/spec/lib/tcell_agent/rails/js_agent_insert_spec.rb +271 -0
  97. data/spec/lib/tcell_agent/rails/logger_spec.rb +5 -5
  98. data/spec/lib/tcell_agent/rails/middleware/appsensor_middleware_spec.rb +3 -3
  99. data/spec/lib/tcell_agent/rails/middleware/dlp_middleware_spec.rb +4 -4
  100. data/spec/lib/tcell_agent/rails/middleware/global_middleware_spec.rb +5 -5
  101. data/spec/lib/tcell_agent/rails/middleware/redirect_middleware_spec.rb +1 -1
  102. data/spec/lib/tcell_agent/rails/middleware/tcell_body_proxy_spec.rb +11 -8
  103. data/spec/lib/tcell_agent/rails/responses_spec.rb +2 -2
  104. data/spec/lib/tcell_agent/rails/routes/grape_spec.rb +2 -2
  105. data/spec/lib/tcell_agent/rails/routes/route_id_spec.rb +1 -1
  106. data/spec/lib/tcell_agent/rails/routes/routes_spec.rb +4 -4
  107. data/spec/lib/tcell_agent/rust/models_spec.rb +83 -75
  108. data/spec/lib/tcell_agent/rust/whisperer_spec.rb +14 -14
  109. data/spec/lib/tcell_agent/sensor_events/appsensor_meta_event_spec.rb +19 -70
  110. data/spec/lib/tcell_agent/sensor_events/sessions_metric_spec.rb +1 -1
  111. data/spec/lib/tcell_agent/settings_reporter_spec.rb +162 -0
  112. data/spec/lib/tcell_agent/tcell_context_spec.rb +154 -0
  113. data/spec/spec_helper.rb +5 -0
  114. metadata +18 -10
  115. data/lib/tcell_agent/appsensor/meta_data.rb +0 -132
  116. data/lib/tcell_agent/patches/meta_data.rb +0 -59
  117. data/lib/tcell_agent/rust/tcellagent-1.3.0.dll +0 -0
  118. data/spec/lib/tcell_agent/appsensor/meta_data_spec.rb +0 -71
@@ -1,6 +1,6 @@
1
1
  # See the file "LICENSE" for the full license governing this code.
2
2
 
3
- #require 'tcell_agent/authlogic' if defined?(Authlogic)
3
+ # require 'tcell_agent/authlogic' if defined?(Authlogic)
4
4
 
5
5
  require 'rails'
6
6
 
@@ -12,7 +12,7 @@ require 'tcell_agent/rails/dlp/process_request'
12
12
  TCellAgent::Instrumentation::Rails.send_language_info
13
13
  TCellAgent::Instrumentation::Rails.send_framework_info
14
14
 
15
- if (Rails.application)
15
+ if Rails.application
16
16
  if TCellAgent.configuration.enabled && TCellAgent.configuration.should_instrument?
17
17
  TCellAgent::Instrumentation::Rails.send_settings(Rails.application)
18
18
  end
@@ -20,17 +20,17 @@ if (Rails.application)
20
20
  else
21
21
  module TCellAgent
22
22
  class MyRailtie < Rails::Railtie
23
- initializer 'activeservice.autoload', :after => :set_autoload_paths do |app|
23
+ initializer 'activeservice.autoload', :after => :set_autoload_paths do |_app|
24
24
  Rails.application.config.to_prepare do
25
25
  require 'tcell_agent/devise' if defined?(Devise)
26
26
  require 'tcell_agent/rails/auth/devise' if defined?(Devise)
27
27
  require 'tcell_agent/authlogic' if defined?(Authlogic)
28
- require 'tcell_agent/rails/auth/authlogic' if defined?(Authlogic)
28
+ require 'tcell_agent/rails/auth/authlogic' if defined?(Authlogic)
29
29
  require 'tcell_agent/rails/auth/doorkeeper'
30
30
  end
31
31
 
32
32
  # TODO: will this get run ever?
33
- if (TCellAgent.configuration.enabled)
33
+ if TCellAgent.configuration.enabled
34
34
  Rails.application.config.after_initialize do
35
35
  TCellAgent::Instrumentation::Rails.send_settings(Rails.application)
36
36
  end
@@ -1,26 +1,24 @@
1
1
  module TCellAgent
2
2
  module Utils
3
3
  module Rails
4
-
5
4
  STATUSES_MISSING_CONTENT_LENGTH = Set.new((100..199).to_a + [204, 205, 304])
6
5
 
7
6
  def self.empty_content?(status_code, headers)
8
- return STATUSES_MISSING_CONTENT_LENGTH.include?(status_code.to_i) ||
9
- (!!headers['Content-Length'] && headers['Content-Length'].to_i == 0)
7
+ STATUSES_MISSING_CONTENT_LENGTH.include?(status_code.to_i) ||
8
+ (headers['Content-Length'] && headers['Content-Length'].to_i.zero?)
10
9
  end
11
10
 
12
11
  def self.processable_response?(response_headers)
13
12
  content_disposition = response_headers['Content-Disposition']
14
- is_attachment = content_disposition && !!(content_disposition =~ /^attachment/i)
13
+ is_attachment = content_disposition && content_disposition =~ /^attachment/i
15
14
 
16
15
  content_type = response_headers['Content-Type']
17
16
  applicable_content_type = content_type &&
18
- (content_type == /application\/json/ ||
19
- content_type == /application\/xml/ ||
20
- !!(content_type =~ /^text/))
21
- return !is_attachment && applicable_content_type
17
+ (content_type =~ %r{application/json}i ||
18
+ content_type =~ %r{application/xml}i ||
19
+ content_type =~ /^text/i)
20
+ !is_attachment && applicable_content_type
22
21
  end
23
-
24
22
  end
25
23
  end
26
24
  end
@@ -1,6 +1,5 @@
1
1
  require 'tcell_agent/configuration'
2
2
  require 'tcell_agent/patches'
3
- require 'tcell_agent/patches/meta_data'
4
3
  require 'tcell_agent/rails/routes/grape'
5
4
  require 'tcell_agent/rails/routes/route_id'
6
5
 
@@ -8,9 +7,7 @@ require 'json'
8
7
 
9
8
  module TCellAgent
10
9
  module Instrumentation
11
-
12
10
  module Rails
13
-
14
11
  class TCellRoute
15
12
  attr_reader :route_id, :route_path, :route_path_raw, :route_destination
16
13
 
@@ -21,17 +18,15 @@ module TCellAgent
21
18
  @route_path = nil
22
19
  @route_destination = nil
23
20
 
24
- if route
25
- @route_path_raw = route.path.spec.to_s
21
+ return unless route
26
22
 
27
- @route_path = @route_path_raw
28
- @route_path = @route_path_raw.chomp("(.:format)")
23
+ @route_path_raw = route.path.spec.to_s
29
24
 
30
- @route_destination = nil
31
- if @route.defaults
32
- @route_destination = JSON.dump(@route.defaults)
33
- end
34
- end
25
+ @route_path = @route_path_raw
26
+ @route_path = @route_path_raw.chomp('(.:format)')
27
+
28
+ @route_destination = nil
29
+ @route_destination = JSON.dump(@route.defaults) if @route.defaults
35
30
  end
36
31
 
37
32
  def report?
@@ -43,32 +38,29 @@ module TCellAgent
43
38
  end
44
39
 
45
40
  def grape_route?
46
- TCellAgent::Instrumentation::grape_route?(@route)
41
+ TCellAgent::Instrumentation.grape_route?(@route)
47
42
  end
48
-
49
43
  end
50
44
 
51
45
  class TCellRoute5 < TCellRoute
52
-
53
46
  def report?
54
47
  TCellAgent::Utils::Strings.present?(@route.verb) || grape_route?
55
48
  end
56
49
 
57
50
  def route_methods
58
- (@route.verb || "").split('|')
51
+ (@route.verb || '').split('|')
59
52
  end
60
53
 
61
54
  def grape_routes
62
55
  @route.app.app.routes
63
56
  end
64
-
65
57
  end
66
58
 
67
59
  class TCellRoute4 < TCellRoute
68
- METHODS = %w[DELETE GET HEAD OPTIONS PATCH POST PUT TRACE CONNECT]
60
+ METHODS = %w[DELETE GET HEAD OPTIONS PATCH POST PUT TRACE CONNECT].freeze
69
61
 
70
62
  def report?
71
- @route.constraints.has_key?(:request_method) || grape_route?
63
+ @route.constraints.key?(:request_method) || grape_route?
72
64
  end
73
65
 
74
66
  def route_methods
@@ -85,49 +77,44 @@ module TCellAgent
85
77
  end
86
78
 
87
79
  def self.create_tcell_route(route)
88
- if route
89
- if ::Rails::VERSION::MAJOR == 5
90
- return TCellRoute5.new(route)
91
- elsif ::Rails::VERSION::MAJOR < 5
92
- return TCellRoute4.new(route)
93
- end
94
- end
80
+ return TCellRoute5.new(route) if route && ::Rails::VERSION::MAJOR == 5
81
+ return TCellRoute4.new(route) if route && ::Rails::VERSION::MAJOR < 5
95
82
 
96
83
  TCellRoute.new
97
84
  end
98
85
 
99
86
  def self.instrument_routes
100
- if ::Rails.application
101
- ::Rails.application.routes.routes.each do |route|
102
- self.instrument_route(route)
103
- end
87
+ return unless ::Rails.application
88
+
89
+ ::Rails.application.routes.routes.each do |route|
90
+ instrument_route(route)
104
91
  end
105
92
  end
106
93
 
107
94
  def self.instrument_route(route)
108
- if TCellAgent.configuration.enabled && TCellAgent.configuration.should_instrument?
109
- tcell_route = create_tcell_route(route)
110
-
111
- if tcell_route.report?
112
- if tcell_route.grape_route?
113
- TCellAgent::Instrumentation.instrument_grape_api(tcell_route.route_path, tcell_route.grape_routes)
114
-
115
- else
116
- tcell_route.route_methods.each do |route_method|
117
- route_id =
118
- TCellAgent::SensorEvents::Util.calculateRouteId(route_method, tcell_route.route_path_raw)
119
- TCellAgent.send_event(
120
- TCellAgent::SensorEvents::AppRoutesSensorEvent.new(
121
- tcell_route.route_path, route_method, route_id, nil, tcell_route.route_destination
122
- )
123
- )
124
- end
125
- end
95
+ return unless TCellAgent.configuration.enabled && TCellAgent.configuration.should_instrument?
96
+
97
+ tcell_route = create_tcell_route(route)
98
+
99
+ return unless tcell_route.report?
100
+
101
+ if tcell_route.grape_route?
102
+ TCellAgent::Instrumentation.instrument_grape_api(tcell_route.route_path, tcell_route.grape_routes)
103
+
104
+ else
105
+ tcell_route.route_methods.each do |route_method|
106
+ route_id =
107
+ TCellAgent::SensorEvents::Util.calculate_route_id(route_method, tcell_route.route_path_raw)
108
+ TCellAgent.send_event(
109
+ TCellAgent::SensorEvents::AppRoutesSensorEvent.new(
110
+ tcell_route.route_path, route_method, route_id, nil, tcell_route.route_destination
111
+ )
112
+ )
126
113
  end
127
114
  end
128
115
  end
129
116
 
130
- if (::Rails::VERSION::MAJOR == 3)
117
+ if ::Rails::VERSION::MAJOR == 3
131
118
  ActionDispatch::Routing::RouteSet.class_eval do
132
119
  alias_method :tcell_add_route, :add_route
133
120
  def add_route(app, conditions = {}, requirements = {}, defaults = {}, name = nil, anchor = true)
@@ -141,46 +128,42 @@ module TCellAgent
141
128
 
142
129
  ActiveSupport.on_load(:action_controller) do
143
130
  ActionController::Base.class_eval do
144
-
145
- if (::Rails::VERSION::MAJOR == 5)
131
+ if ::Rails::VERSION::MAJOR == 5
146
132
  prepend_around_action :tcell_around_filter_routes
147
- elsif (::Rails::VERSION::MAJOR < 5)
133
+ elsif ::Rails::VERSION::MAJOR < 5
148
134
  prepend_around_filter :tcell_around_filter_routes
149
135
  end
150
136
  def tcell_around_filter_routes
151
- begin
137
+ if TCellAgent.configuration.enabled &&
138
+ TCellAgent.configuration.should_instrument? &&
139
+ TCellAgent.configuration.should_intercept_requests?
140
+ TCellAgent::Instrumentation.safe_block('Determining Rails Route ID') do
141
+ _match, parameters, route = ::Rails.application.routes.router.recognize(request) { |r, _| r }.first
152
142
 
153
- if TCellAgent.configuration.enabled &&
154
- TCellAgent.configuration.should_instrument? &&
155
- TCellAgent.configuration.should_intercept_requests?
156
- TCellAgent::Instrumentation.safe_block("Determining Rails Route ID") do
157
- match, parameters, route = ::Rails.application.routes.router.recognize(request) { |r, _| r }.first
158
-
159
- TCellAgent::Instrumentation::RouteId.update_context(env, parameters, route)
160
- end
161
-
162
- if TCellAgent::Instrumentation::Patches.block?(request)
163
- return head(403)
164
- end
143
+ TCellAgent::Instrumentation::RouteId.update_context(env, parameters, route)
144
+ end
165
145
 
166
- TCellAgent::DLP.handle_request_dlp_parameters(request)
146
+ if TCellAgent::Instrumentation::Patches.block?(request)
147
+ return head(403)
167
148
  end
168
149
 
169
- yield
150
+ TCellAgent::DLP.handle_request_dlp_parameters(request)
170
151
  end
152
+
153
+ yield
171
154
  end
172
155
  end
173
156
  end
174
157
 
175
158
  end
176
159
 
177
- if (::Rails::VERSION::MAJOR == 4)
160
+ if ::Rails::VERSION::MAJOR == 4
178
161
  ActionDispatch::Journey::Routes.class_eval do
179
162
  alias_method :tcell_add_route, :add_route
180
163
  def add_route(app, path, conditions, defaults, name = nil)
181
164
  route = tcell_add_route(app, path, conditions, defaults, name)
182
165
 
183
- TCellAgent::Instrumentation.safe_block("Reporting new route") do
166
+ TCellAgent::Instrumentation.safe_block('Reporting new route') do
184
167
  TCellAgent::Instrumentation::Rails.instrument_route(route)
185
168
  end
186
169
 
@@ -189,13 +172,13 @@ module TCellAgent
189
172
  end
190
173
  end
191
174
 
192
- if (::Rails::VERSION::MAJOR == 5)
175
+ if ::Rails::VERSION::MAJOR == 5
193
176
  ActionDispatch::Journey::Routes.class_eval do
194
177
  alias_method :tcell_add_route, :add_route
195
178
  def add_route(name, mapping)
196
179
  route = tcell_add_route(name, mapping)
197
180
 
198
- TCellAgent::Instrumentation.safe_block("Reporting new route") do
181
+ TCellAgent::Instrumentation.safe_block('Reporting new route') do
199
182
  TCellAgent::Instrumentation::Rails.instrument_route(route)
200
183
  end
201
184
 
@@ -204,14 +187,14 @@ module TCellAgent
204
187
  end
205
188
  end
206
189
 
207
- if (::Rails::VERSION::MAJOR == 5 || (::Rails::VERSION::MAJOR == 4 && ::Rails::VERSION::MINOR >= 2))
190
+ if ::Rails::VERSION::MAJOR == 5 || (::Rails::VERSION::MAJOR == 4 && ::Rails::VERSION::MINOR >= 2)
208
191
  ActionDispatch::Journey::Router.class_eval do
209
192
  alias_method :tcell_serve, :serve
210
193
  def serve(req)
211
194
  if TCellAgent.configuration.enabled && TCellAgent.configuration.should_instrument? &&
212
- TCellAgent.configuration.should_intercept_requests?
213
- TCellAgent::Instrumentation.safe_block("Determining Rails Route ID") do
214
- match, parameters, route = find_routes(req).first
195
+ TCellAgent.configuration.should_intercept_requests?
196
+ TCellAgent::Instrumentation.safe_block('Determining Rails Route ID') do
197
+ _match, parameters, route = find_routes(req).first
215
198
 
216
199
  TCellAgent::Instrumentation::RouteId.update_context(req.env, parameters, route)
217
200
  end
@@ -225,11 +208,10 @@ module TCellAgent
225
208
 
226
209
  tcell_serve(req)
227
210
  end
228
-
229
211
  end
230
212
  end
231
213
 
232
- if (::Rails::VERSION::MAJOR == 4 && ::Rails::VERSION::MINOR < 2)
214
+ if ::Rails::VERSION::MAJOR == 4 && ::Rails::VERSION::MINOR < 2
233
215
  require 'action_dispatch/journey/router/utils'
234
216
 
235
217
  ActionDispatch::Journey::Router.class_eval do
@@ -238,9 +220,9 @@ module TCellAgent
238
220
  env['PATH_INFO'] = ActionDispatch::Journey::Router::Utils.normalize_path(env['PATH_INFO'])
239
221
 
240
222
  if TCellAgent.configuration.enabled && TCellAgent.configuration.should_instrument? &&
241
- TCellAgent.configuration.should_intercept_requests?
242
- TCellAgent::Instrumentation.safe_block("Determining Rails Route ID") do
243
- match, parameters, route = find_routes(env).first
223
+ TCellAgent.configuration.should_intercept_requests?
224
+ TCellAgent::Instrumentation.safe_block('Determining Rails Route ID') do
225
+ _match, parameters, route = find_routes(env).first
244
226
 
245
227
  TCellAgent::Instrumentation::RouteId.update_context(env, parameters, route)
246
228
  end
@@ -258,7 +240,6 @@ module TCellAgent
258
240
  end
259
241
  end
260
242
  end
261
-
262
243
  end
263
244
  end
264
245
  end
@@ -2,7 +2,6 @@ require 'tcell_agent/configuration'
2
2
 
3
3
  module TCellAgent
4
4
  module Instrumentation
5
-
6
5
  def self.grape_route?(route)
7
6
  if defined?(Grape::API)
8
7
  begin
@@ -15,7 +14,8 @@ module TCellAgent
15
14
  end
16
15
 
17
16
  return true
18
- rescue StandardError
17
+ rescue StandardError # rubocop:disable Lint/HandleExceptions
18
+ # do nothing
19
19
  end
20
20
  end
21
21
 
@@ -23,26 +23,26 @@ module TCellAgent
23
23
  end
24
24
 
25
25
  def self.instrument_grape_api(grape_mount_endpoint, routes)
26
- if routes
27
- routes.each do |route|
28
- route_info = grape_route_info(route)
29
-
30
- route_path = "#{grape_mount_endpoint}#{route_info[:path]}"
31
- route_method = route_info[:method]
32
-
33
- route_id = TCellAgent::SensorEvents::Util.calculateRouteId(route_method, route_path)
34
- TCellAgent.send_event(
35
- TCellAgent::SensorEvents::AppRoutesSensorEvent.new(
36
- route_path, route_method, route_id, nil, nil
37
- )
26
+ return unless routes
27
+
28
+ routes.each do |route|
29
+ route_info = grape_route_info(route)
30
+
31
+ route_path = "#{grape_mount_endpoint}#{route_info[:path]}"
32
+ route_method = route_info[:method]
33
+
34
+ route_id = TCellAgent::SensorEvents::Util.calculate_route_id(route_method, route_path)
35
+ TCellAgent.send_event(
36
+ TCellAgent::SensorEvents::AppRoutesSensorEvent.new(
37
+ route_path, route_method, route_id, nil, nil
38
38
  )
39
- end
39
+ )
40
40
  end
41
41
  end
42
42
 
43
43
  def self.grape_route_info(route)
44
- major, minor, tiny = Gem.loaded_specs['grape'].version.to_s.split('.')
45
- if major.to_i == 0 && minor.to_i < 16
44
+ major, minor, _tiny = Gem.loaded_specs['grape'].version.to_s.split('.')
45
+ if major.to_i.zero? && minor.to_i < 16
46
46
  {
47
47
  :method => route.route_method,
48
48
  :path => route.route_path
@@ -56,8 +56,8 @@ module TCellAgent
56
56
  end
57
57
 
58
58
  def self.grape_route_params(route)
59
- major, minor, tiny = Gem.loaded_specs['grape'].version.to_s.split('.')
60
- if major.to_i == 0 && minor.to_i < 16
59
+ major, minor, _tiny = Gem.loaded_specs['grape'].version.to_s.split('.')
60
+ if major.to_i.zero? && minor.to_i < 16
61
61
  route.route_params
62
62
  else
63
63
  route.params
@@ -68,25 +68,21 @@ module TCellAgent
68
68
  def self.grape_path_params(env, route)
69
69
  all_params = Grape::Request.new(env).params
70
70
 
71
- self.grape_route_params(route).keys.inject({})do |memo, key|
71
+ grape_route_params(route).keys.each_with_object({}) do |key, memo|
72
72
  memo[key] = all_params[key]
73
-
74
- memo
75
73
  end
76
74
  end
77
75
 
78
76
  Grape::Endpoint.class_eval do
79
-
80
77
  alias_method :tcell_call!, :call!
81
78
  def call!(env)
82
79
  if TCellAgent.configuration.enabled &&
83
- TCellAgent.configuration.should_instrument? &&
84
- TCellAgent.configuration.should_intercept_requests?
85
-
86
- TCellAgent::Instrumentation.safe_block("Determining Rails Route ID") do
80
+ TCellAgent.configuration.should_instrument? &&
81
+ TCellAgent.configuration.should_intercept_requests?
87
82
 
83
+ TCellAgent::Instrumentation.safe_block('Determining Rails Route ID') do
88
84
  tcell_context = env[TCellAgent::Instrumentation::TCELL_ID]
89
- if tcell_context && tcell_context.grape_mount_endpoint && self.respond_to?(:routes)
85
+ if tcell_context && tcell_context.grape_mount_endpoint && respond_to?(:routes)
90
86
  route = routes.first
91
87
 
92
88
  if route
@@ -96,7 +92,7 @@ module TCellAgent
96
92
  if route_path
97
93
  tcell_context.path_parameters = TCellAgent::Instrumentation.grape_path_params(env, route)
98
94
  tcell_context.route_id =
99
- TCellAgent::SensorEvents::Util.calculateRouteId(tcell_context.request_method, route_path)
95
+ TCellAgent::SensorEvents::Util.calculate_route_id(tcell_context.request_method, route_path)
100
96
  end
101
97
  end
102
98
  end
@@ -108,6 +104,5 @@ module TCellAgent
108
104
  end
109
105
 
110
106
  end
111
-
112
107
  end
113
108
  end