tcell_agent 0.4.0 → 1.0.0

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 (199) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +9 -22
  3. data/bin/tcell_agent +127 -132
  4. data/lib/tcell_agent/agent/event_processor.rb +23 -22
  5. data/lib/tcell_agent/agent/fork_pipe_manager.rb +7 -7
  6. data/lib/tcell_agent/agent/policy_manager.rb +20 -15
  7. data/lib/tcell_agent/agent/policy_types.rb +5 -11
  8. data/lib/tcell_agent/agent/static_agent.rb +5 -1
  9. data/lib/tcell_agent/agent.rb +6 -4
  10. data/lib/tcell_agent/api.rb +7 -9
  11. data/lib/tcell_agent/appsensor/meta_data.rb +11 -4
  12. data/lib/tcell_agent/authlogic.rb +3 -3
  13. data/lib/tcell_agent/cmdi.rb +6 -4
  14. data/lib/tcell_agent/config/unknown_options.rb +3 -1
  15. data/lib/tcell_agent/configuration.rb +47 -49
  16. data/lib/tcell_agent/devise.rb +2 -2
  17. data/lib/tcell_agent/hooks/login_fraud.rb +58 -29
  18. data/lib/tcell_agent/instrumentation.rb +11 -10
  19. data/lib/tcell_agent/logger.rb +2 -2
  20. data/lib/tcell_agent/patches/meta_data.rb +9 -13
  21. data/lib/tcell_agent/patches.rb +7 -10
  22. data/lib/tcell_agent/policies/clickjacking_policy.rb +4 -5
  23. data/lib/tcell_agent/policies/content_security_policy.rb +6 -12
  24. data/lib/tcell_agent/policies/dataloss_policy.rb +2 -2
  25. data/lib/tcell_agent/policies/http_redirect_policy.rb +2 -2
  26. data/lib/tcell_agent/policies/policy.rb +0 -2
  27. data/lib/tcell_agent/policies/rust_policies.rb +90 -0
  28. data/lib/tcell_agent/policies/secure_headers_policy.rb +2 -2
  29. data/lib/tcell_agent/rails/auth/authlogic.rb +42 -24
  30. data/lib/tcell_agent/rails/auth/devise.rb +44 -23
  31. data/lib/tcell_agent/rails/auth/doorkeeper.rb +33 -15
  32. data/lib/tcell_agent/rails/better_ip.rb +1 -1
  33. data/lib/tcell_agent/rails/csrf_exception.rb +2 -2
  34. data/lib/tcell_agent/rails/dlp/process_request.rb +1 -1
  35. data/lib/tcell_agent/rails/dlp.rb +6 -6
  36. data/lib/tcell_agent/rails/dlp_handler.rb +1 -1
  37. data/lib/tcell_agent/rails/js_agent_insert.rb +1 -1
  38. data/lib/tcell_agent/rails/middleware/body_filter_middleware.rb +1 -1
  39. data/lib/tcell_agent/rails/middleware/context_middleware.rb +3 -2
  40. data/lib/tcell_agent/rails/middleware/headers_middleware.rb +10 -9
  41. data/lib/tcell_agent/rails/routes/grape.rb +6 -6
  42. data/lib/tcell_agent/rails/routes.rb +8 -11
  43. data/lib/tcell_agent/rust/libtcellagent-0.11.1.dylib +0 -0
  44. data/lib/tcell_agent/rust/{libtcellagent-0.6.1.so → libtcellagent-0.11.1.so} +0 -0
  45. data/lib/tcell_agent/rust/models.rb +16 -0
  46. data/lib/tcell_agent/rust/tcellagent-0.11.1.dll +0 -0
  47. data/lib/tcell_agent/rust/whisperer.rb +119 -48
  48. data/lib/tcell_agent/sensor_events/appsensor_meta_event.rb +17 -20
  49. data/lib/tcell_agent/sensor_events/command_injection.rb +50 -5
  50. data/lib/tcell_agent/sensor_events/login_fraud.rb +34 -18
  51. data/lib/tcell_agent/sensor_events/patches.rb +21 -0
  52. data/lib/tcell_agent/sensor_events/server_agent.rb +3 -3
  53. data/lib/tcell_agent/sensor_events/util/utils.rb +4 -3
  54. data/lib/tcell_agent/servers/puma.rb +2 -2
  55. data/lib/tcell_agent/servers/unicorn.rb +1 -1
  56. data/lib/tcell_agent/utils/passwords.rb +28 -0
  57. data/lib/tcell_agent/version.rb +1 -1
  58. data/lib/tcell_agent.rb +1 -5
  59. data/spec/apps/rails-3.2/config/tcell_agent.config +15 -0
  60. data/spec/apps/rails-3.2/log/development.log +0 -0
  61. data/spec/apps/rails-3.2/log/test.log +12 -0
  62. data/spec/apps/rails-4.1/log/test.log +0 -0
  63. data/spec/lib/tcell_agent/agent/fork_pipe_manager_spec.rb +46 -45
  64. data/spec/lib/tcell_agent/agent/policy_manager_spec.rb +276 -164
  65. data/spec/lib/tcell_agent/agent/static_agent_spec.rb +44 -47
  66. data/spec/lib/tcell_agent/api/api_spec.rb +16 -16
  67. data/spec/lib/tcell_agent/appsensor/injections_reporter_spec.rb +131 -116
  68. data/spec/lib/tcell_agent/appsensor/meta_data_spec.rb +55 -51
  69. data/spec/lib/tcell_agent/cmdi_spec.rb +413 -436
  70. data/spec/lib/tcell_agent/config/unknown_options_spec.rb +145 -128
  71. data/spec/lib/tcell_agent/configuration_spec.rb +165 -169
  72. data/spec/lib/tcell_agent/hooks/login_fraud_spec.rb +144 -153
  73. data/spec/lib/tcell_agent/instrumentation_spec.rb +84 -85
  74. data/spec/lib/tcell_agent/patches_spec.rb +70 -111
  75. data/spec/lib/tcell_agent/policies/appsensor_policy_spec.rb +313 -244
  76. data/spec/lib/tcell_agent/policies/clickjacking_policy_spec.rb +28 -28
  77. data/spec/lib/tcell_agent/policies/command_injection_policy_spec.rb +643 -513
  78. data/spec/lib/tcell_agent/policies/content_security_policy_spec.rb +55 -102
  79. data/spec/lib/tcell_agent/policies/dataloss_policy_spec.rb +111 -134
  80. data/spec/lib/tcell_agent/policies/http_redirect_policy_spec.rb +141 -146
  81. data/spec/lib/tcell_agent/policies/http_tx_policy_spec.rb +8 -8
  82. data/spec/lib/tcell_agent/policies/login_policy_spec.rb +15 -17
  83. data/spec/lib/tcell_agent/policies/patches_policy_spec.rb +231 -559
  84. data/spec/lib/tcell_agent/policies/secure_headers_policy_spec.rb +27 -27
  85. data/spec/lib/tcell_agent/rails/better_ip_spec.rb +30 -34
  86. data/spec/lib/tcell_agent/rails/logger_spec.rb +50 -49
  87. data/spec/lib/tcell_agent/rails/middleware/appsensor_middleware_spec.rb +182 -199
  88. data/spec/lib/tcell_agent/rails/middleware/dlp_middleware_spec.rb +110 -84
  89. data/spec/lib/tcell_agent/rails/middleware/global_middleware_spec.rb +107 -85
  90. data/spec/lib/tcell_agent/rails/middleware/redirect_middleware_spec.rb +68 -40
  91. data/spec/lib/tcell_agent/rails/middleware/tcell_body_proxy_spec.rb +81 -67
  92. data/spec/lib/tcell_agent/rails/responses_spec.rb +33 -37
  93. data/spec/lib/tcell_agent/rails/routes/grape_spec.rb +116 -121
  94. data/spec/lib/tcell_agent/rails/routes/route_id_spec.rb +25 -28
  95. data/spec/lib/tcell_agent/rails/routes/routes_spec.rb +87 -85
  96. data/spec/lib/tcell_agent/rails_spec.rb +1 -6
  97. data/spec/lib/tcell_agent/rust/models_spec.rb +112 -0
  98. data/spec/lib/tcell_agent/rust/whisperer_spec.rb +502 -179
  99. data/spec/lib/tcell_agent/sensor_events/appsensor_meta_event_spec.rb +44 -33
  100. data/spec/lib/tcell_agent/sensor_events/dlp_spec.rb +4 -4
  101. data/spec/lib/tcell_agent/sensor_events/sessions_metric_spec.rb +183 -169
  102. data/spec/lib/tcell_agent/sensor_events/util/sanitizer_utilities_spec.rb +25 -25
  103. data/spec/lib/tcell_agent/utils/bounded_queue_spec.rb +17 -20
  104. data/spec/lib/tcell_agent/utils/params_spec.rb +28 -28
  105. data/spec/lib/tcell_agent/utils/passwords_spec.rb +143 -0
  106. data/spec/lib/tcell_agent/utils/strings_spec.rb +35 -35
  107. data/spec/lib/tcell_agent_spec.rb +8 -8
  108. data/spec/spec_helper.rb +4 -4
  109. data/spec/support/middleware_helper.rb +10 -10
  110. data/spec/support/static_agent_overrides.rb +16 -12
  111. data/tcell_agent.gemspec +17 -33
  112. metadata +43 -198
  113. data/LICENSE_libinjection +0 -32
  114. data/Readme.txt +0 -7
  115. data/ext/libinjection/extconf.rb +0 -3
  116. data/ext/libinjection/libinjection.h +0 -65
  117. data/ext/libinjection/libinjection_html5.c +0 -847
  118. data/ext/libinjection/libinjection_html5.h +0 -54
  119. data/ext/libinjection/libinjection_sqli.c +0 -2317
  120. data/ext/libinjection/libinjection_sqli.h +0 -295
  121. data/ext/libinjection/libinjection_sqli_data.h +0 -9004
  122. data/ext/libinjection/libinjection_wrap.c +0 -3525
  123. data/ext/libinjection/libinjection_xss.c +0 -531
  124. data/ext/libinjection/libinjection_xss.h +0 -21
  125. data/lib/tcell_agent/appsensor/injections_matcher.rb +0 -155
  126. data/lib/tcell_agent/appsensor/rules/appsensor_rule_manager.rb +0 -49
  127. data/lib/tcell_agent/appsensor/rules/appsensor_rule_set.rb +0 -67
  128. data/lib/tcell_agent/appsensor/rules/baserules.json +0 -467
  129. data/lib/tcell_agent/patches/block_rule.rb +0 -93
  130. data/lib/tcell_agent/patches/sensors_matcher.rb +0 -31
  131. data/lib/tcell_agent/policies/appsensor/cmdi_sensor.rb +0 -23
  132. data/lib/tcell_agent/policies/appsensor/fpt_sensor.rb +0 -23
  133. data/lib/tcell_agent/policies/appsensor/injection_sensor.rb +0 -117
  134. data/lib/tcell_agent/policies/appsensor/nullbyte_sensor.rb +0 -26
  135. data/lib/tcell_agent/policies/appsensor/retr_sensor.rb +0 -22
  136. data/lib/tcell_agent/policies/appsensor/sqli_sensor.rb +0 -34
  137. data/lib/tcell_agent/policies/appsensor/xss_sensor.rb +0 -34
  138. data/lib/tcell_agent/policies/appsensor_policy.rb +0 -49
  139. data/lib/tcell_agent/policies/command_injection_policy.rb +0 -196
  140. data/lib/tcell_agent/policies/honeytokens_policy.rb +0 -69
  141. data/lib/tcell_agent/policies/patches_policy.rb +0 -84
  142. data/lib/tcell_agent/rust/libtcellagent-0.6.1.dylib +0 -0
  143. data/lib/tcell_agent/rust/tcellagent-0.6.1.dll +0 -0
  144. data/spec/apps/rails-3.2/Gemfile +0 -25
  145. data/spec/apps/rails-3.2/Gemfile.lock +0 -126
  146. data/spec/apps/rails-3.2/Rakefile +0 -7
  147. data/spec/apps/rails-3.2/app/assets/images/rails.png +0 -0
  148. data/spec/apps/rails-3.2/app/assets/javascripts/application.js +0 -15
  149. data/spec/apps/rails-3.2/app/assets/stylesheets/application.css +0 -13
  150. data/spec/apps/rails-3.2/app/controllers/application_controller.rb +0 -3
  151. data/spec/apps/rails-3.2/app/controllers/t_cell_app_controller.rb +0 -5
  152. data/spec/apps/rails-3.2/app/helpers/application_helper.rb +0 -2
  153. data/spec/apps/rails-3.2/app/views/layouts/application.html.erb +0 -14
  154. data/spec/apps/rails-3.2/app/views/t_cell_app/index.html.erb +0 -1
  155. data/spec/apps/rails-3.2/config/application.rb +0 -63
  156. data/spec/apps/rails-3.2/config/boot.rb +0 -6
  157. data/spec/apps/rails-3.2/config/environment.rb +0 -5
  158. data/spec/apps/rails-3.2/config/environments/test.rb +0 -37
  159. data/spec/apps/rails-3.2/config/routes.rb +0 -11
  160. data/spec/apps/rails-3.2/config.ru +0 -4
  161. data/spec/apps/rails-4.1/Gemfile +0 -7
  162. data/spec/apps/rails-4.1/Gemfile.lock +0 -114
  163. data/spec/apps/rails-4.1/Rakefile +0 -6
  164. data/spec/apps/rails-4.1/app/assets/javascripts/application.js +0 -16
  165. data/spec/apps/rails-4.1/app/assets/stylesheets/application.css +0 -15
  166. data/spec/apps/rails-4.1/app/controllers/application_controller.rb +0 -5
  167. data/spec/apps/rails-4.1/app/controllers/t_cell_app_controller.rb +0 -5
  168. data/spec/apps/rails-4.1/app/helpers/application_helper.rb +0 -2
  169. data/spec/apps/rails-4.1/app/views/layouts/application.html.erb +0 -14
  170. data/spec/apps/rails-4.1/app/views/t_cell_app/index.html.erb +0 -1
  171. data/spec/apps/rails-4.1/config/application.rb +0 -24
  172. data/spec/apps/rails-4.1/config/boot.rb +0 -4
  173. data/spec/apps/rails-4.1/config/environment.rb +0 -5
  174. data/spec/apps/rails-4.1/config/environments/test.rb +0 -41
  175. data/spec/apps/rails-4.1/config/initializers/assets.rb +0 -8
  176. data/spec/apps/rails-4.1/config/initializers/backtrace_silencers.rb +0 -7
  177. data/spec/apps/rails-4.1/config/initializers/cookies_serializer.rb +0 -3
  178. data/spec/apps/rails-4.1/config/initializers/filter_parameter_logging.rb +0 -4
  179. data/spec/apps/rails-4.1/config/initializers/inflections.rb +0 -16
  180. data/spec/apps/rails-4.1/config/initializers/mime_types.rb +0 -4
  181. data/spec/apps/rails-4.1/config/initializers/session_store.rb +0 -3
  182. data/spec/apps/rails-4.1/config/initializers/wrap_parameters.rb +0 -14
  183. data/spec/apps/rails-4.1/config/locales/en.yml +0 -23
  184. data/spec/apps/rails-4.1/config/routes.rb +0 -12
  185. data/spec/apps/rails-4.1/config/secrets.yml +0 -22
  186. data/spec/apps/rails-4.1/config.ru +0 -4
  187. data/spec/controllers/application_controller.rb +0 -12
  188. data/spec/lib/tcell_agent/appsensor/injections_matcher_spec.rb +0 -522
  189. data/spec/lib/tcell_agent/appsensor/rules/appsensor_rule_manager_spec.rb +0 -23
  190. data/spec/lib/tcell_agent/appsensor/rules/appsensor_rule_set_spec.rb +0 -159
  191. data/spec/lib/tcell_agent/patches/block_rule_spec.rb +0 -458
  192. data/spec/lib/tcell_agent/patches/sensors_matcher_spec.rb +0 -35
  193. data/spec/lib/tcell_agent/policies/appsensor/cmdi_sensor_spec.rb +0 -139
  194. data/spec/lib/tcell_agent/policies/appsensor/fpt_sensor_spec.rb +0 -139
  195. data/spec/lib/tcell_agent/policies/appsensor/nullbyte_sensor_spec.rb +0 -167
  196. data/spec/lib/tcell_agent/policies/appsensor/retr_sensor_spec.rb +0 -139
  197. data/spec/lib/tcell_agent/policies/appsensor/sqli_sensor_spec.rb +0 -246
  198. data/spec/lib/tcell_agent/policies/appsensor/xss_sensor_spec.rb +0 -882
  199. data/spec/lib/tcell_agent/policies/honeytokens_policy_spec.rb +0 -22
@@ -2,195 +2,212 @@ require 'spec_helper'
2
2
 
3
3
  module TCellAgent
4
4
  module Config
5
-
6
5
  describe Validate do
7
- describe ".get_unknown_options" do
8
- context "with an unknown tcell environment variable set" do
9
- it "should return a message about the unknown variable" do
10
-
11
- orig_allow_uap = ENV.fetch("TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS", nil)
12
- orig_allow_uafp = ENV.fetch("TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS", nil)
13
- orig_allow_ap = ENV.fetch("TCELL_AGENT_ALLOW_PAYLOADS", nil)
14
- orig_demomode = ENV.fetch("TCELL_DEMOMODE", nil)
15
- orig_agent_home = ENV.fetch("TCELL_AGENT_HOME", nil)
16
- orig_agent_log_dir = ENV.fetch("TCELL_AGENT_LOG_DIR", nil)
17
- orig_agent_config = ENV.fetch("TCELL_AGENT_CONFIG", nil)
18
- orig_agent_app_id = ENV.fetch("TCELL_AGENT_APP_ID", nil)
19
- orig_agent_api_key = ENV.fetch("TCELL_AGENT_API_KEY", nil)
20
- orig_agent_host_identifier = ENV.fetch("TCELL_AGENT_HOST_IDENTIFIER", nil)
21
- orig_input_url = ENV.fetch("TCELL_INPUT_URL", nil)
22
- orig_hmac_key = ENV.fetch("TCELL_HMAC_KEY", nil)
23
- orig_api_url = ENV.fetch("TCELL_API_URL", nil)
24
-
25
- ENV["TCELL_HACK"] = "hack the system"
26
- ENV["TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS"] = "valid"
27
- ENV["TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS"] = "valid"
28
- ENV["TCELL_AGENT_ALLOW_PAYLOADS"] = "valid"
29
- ENV["TCELL_DEMOMODE"] = "valid"
30
- ENV["TCELL_AGENT_HOME"] = "valid"
31
- ENV["TCELL_AGENT_LOG_DIR"] = "valid"
32
- ENV["TCELL_AGENT_CONFIG"] = "valid"
33
- ENV["TCELL_AGENT_APP_ID"] = "valid"
34
- ENV["TCELL_AGENT_API_KEY"] = "valid"
35
- ENV["TCELL_AGENT_HOST_IDENTIFIER"] = "valid"
36
- ENV["TCELL_INPUT_URL"] = "valid"
37
- ENV["TCELL_HMAC_KEY"] = "valid"
38
- ENV["TCELL_API_URL"] = "valid"
6
+ describe '.get_unknown_options' do
7
+ context 'with an unknown tcell environment variable set' do
8
+ it 'should return a message about the unknown variable' do
9
+ orig_allow_uap = ENV.fetch('TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS', nil)
10
+ orig_allow_uafp = ENV.fetch('TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS', nil)
11
+ orig_allow_ap = ENV.fetch('TCELL_AGENT_ALLOW_PAYLOADS', nil)
12
+ orig_demomode = ENV.fetch('TCELL_DEMOMODE', nil)
13
+ orig_agent_home = ENV.fetch('TCELL_AGENT_HOME', nil)
14
+ orig_agent_log_dir = ENV.fetch('TCELL_AGENT_LOG_DIR', nil)
15
+ orig_agent_config = ENV.fetch('TCELL_AGENT_CONFIG', nil)
16
+ orig_agent_app_id = ENV.fetch('TCELL_AGENT_APP_ID', nil)
17
+ orig_agent_api_key = ENV.fetch('TCELL_AGENT_API_KEY', nil)
18
+ orig_agent_host_identifier = ENV.fetch('TCELL_AGENT_HOST_IDENTIFIER', nil)
19
+ orig_input_url = ENV.fetch('TCELL_INPUT_URL', nil)
20
+ orig_hmac_key = ENV.fetch('TCELL_HMAC_KEY', nil)
21
+ orig_api_url = ENV.fetch('TCELL_API_URL', nil)
22
+ orig_password_hmac_key = ENV.fetch('TCELL_PASSWORD_HMAC_KEY', nil)
23
+
24
+ ENV['TCELL_HACK'] = 'hack the system'
25
+ ENV['TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS'] = 'valid'
26
+ ENV['TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS'] = 'valid'
27
+ ENV['TCELL_AGENT_ALLOW_PAYLOADS'] = 'valid'
28
+ ENV['TCELL_DEMOMODE'] = 'valid'
29
+ ENV['TCELL_AGENT_HOME'] = 'valid'
30
+ ENV['TCELL_AGENT_LOG_DIR'] = 'valid'
31
+ ENV['TCELL_AGENT_CONFIG'] = 'valid'
32
+ ENV['TCELL_AGENT_APP_ID'] = 'valid'
33
+ ENV['TCELL_AGENT_API_KEY'] = 'valid'
34
+ ENV['TCELL_AGENT_HOST_IDENTIFIER'] = 'valid'
35
+ ENV['TCELL_INPUT_URL'] = 'valid'
36
+ ENV['TCELL_HMAC_KEY'] = 'valid'
37
+ ENV['TCELL_API_URL'] = 'valid'
38
+ ENV['TCELL_PASSWORD_HMAC_KEY'] = 'valid'
39
39
 
40
40
  messages = Validate.get_unknown_options(nil)
41
41
 
42
- ENV.delete "TCELL_HACK"
42
+ ENV.delete 'TCELL_HACK'
43
43
  if orig_allow_uap
44
- ENV["TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS"] = orig_allow_uap
44
+ ENV['TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS'] = orig_allow_uap
45
45
  else
46
- ENV.delete "TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS"
46
+ ENV.delete 'TCELL_AGENT_ALLOW_UNENCRYPTED_APPSENSOR_PAYLOADS'
47
47
  end
48
48
 
49
49
  if orig_allow_uafp
50
- ENV["TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS"] = orig_allow_uafp
50
+ ENV['TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS'] = orig_allow_uafp
51
51
  else
52
- ENV.delete "TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS"
52
+ ENV.delete 'TCELL_AGENT_ALLOW_UNENCRYPTED_APPFIREWALL_PAYLOADS'
53
53
  end
54
54
  if orig_allow_ap
55
- ENV["TCELL_AGENT_ALLOW_PAYLOADS"] = orig_allow_ap
55
+ ENV['TCELL_AGENT_ALLOW_PAYLOADS'] = orig_allow_ap
56
56
  else
57
- ENV.delete "TCELL_AGENT_ALLOW_PAYLOADS"
57
+ ENV.delete 'TCELL_AGENT_ALLOW_PAYLOADS'
58
58
  end
59
59
  if orig_demomode
60
- ENV["TCELL_DEMOMODE"] = orig_demomode
60
+ ENV['TCELL_DEMOMODE'] = orig_demomode
61
61
  else
62
- ENV.delete "TCELL_DEMOMODE"
62
+ ENV.delete 'TCELL_DEMOMODE'
63
63
  end
64
64
  if orig_agent_home
65
- ENV["TCELL_AGENT_HOME"] = orig_agent_home
65
+ ENV['TCELL_AGENT_HOME'] = orig_agent_home
66
66
  else
67
- ENV.delete "TCELL_AGENT_HOME"
67
+ ENV.delete 'TCELL_AGENT_HOME'
68
68
  end
69
69
  if orig_agent_log_dir
70
- ENV["TCELL_AGENT_LOG_DIR"] = orig_agent_log_dir
70
+ ENV['TCELL_AGENT_LOG_DIR'] = orig_agent_log_dir
71
71
  else
72
- ENV.delete "TCELL_AGENT_LOG_DIR"
72
+ ENV.delete 'TCELL_AGENT_LOG_DIR'
73
73
  end
74
74
  if orig_agent_config
75
- ENV["TCELL_AGENT_CONFIG"] = orig_agent_config
75
+ ENV['TCELL_AGENT_CONFIG'] = orig_agent_config
76
76
  else
77
- ENV.delete "TCELL_AGENT_CONFIG"
77
+ ENV.delete 'TCELL_AGENT_CONFIG'
78
78
  end
79
79
  if orig_agent_app_id
80
- ENV["TCELL_AGENT_APP_ID"] = orig_agent_app_id
80
+ ENV['TCELL_AGENT_APP_ID'] = orig_agent_app_id
81
81
  else
82
- ENV.delete "TCELL_AGENT_APP_ID"
82
+ ENV.delete 'TCELL_AGENT_APP_ID'
83
83
  end
84
84
  if orig_agent_api_key
85
- ENV["TCELL_AGENT_API_KEY"] = orig_agent_api_key
85
+ ENV['TCELL_AGENT_API_KEY'] = orig_agent_api_key
86
86
  else
87
- ENV.delete "TCELL_AGENT_API_KEY"
87
+ ENV.delete 'TCELL_AGENT_API_KEY'
88
88
  end
89
89
  if orig_agent_host_identifier
90
- ENV["TCELL_AGENT_HOST_IDENTIFIER"] = orig_agent_host_identifier
90
+ ENV['TCELL_AGENT_HOST_IDENTIFIER'] = orig_agent_host_identifier
91
91
  else
92
- ENV.delete "TCELL_AGENT_HOST_IDENTIFIER"
92
+ ENV.delete 'TCELL_AGENT_HOST_IDENTIFIER'
93
93
  end
94
94
  if orig_input_url
95
- ENV["TCELL_INPUT_URL"] = orig_input_url
95
+ ENV['TCELL_INPUT_URL'] = orig_input_url
96
96
  else
97
- ENV.delete "TCELL_INPUT_URL"
97
+ ENV.delete 'TCELL_INPUT_URL'
98
98
  end
99
99
  if orig_hmac_key
100
- ENV["TCELL_HMAC_KEY"] = orig_hmac_key
100
+ ENV['TCELL_HMAC_KEY'] = orig_hmac_key
101
101
  else
102
- ENV.delete "TCELL_HMAC_KEY"
102
+ ENV.delete 'TCELL_HMAC_KEY'
103
+ end
104
+ if orig_password_hmac_key
105
+ ENV['TCELL_PASSWORD_HMAC_KEY'] = orig_password_hmac_key
106
+ else
107
+ ENV.delete 'TCELL_PASSWORD_HMAC_KEY'
103
108
  end
104
109
  if orig_api_url
105
- ENV["TCELL_API_URL"] = orig_api_url
110
+ ENV['TCELL_API_URL'] = orig_api_url
106
111
  else
107
- ENV.delete "TCELL_API_URL"
112
+ ENV.delete 'TCELL_API_URL'
108
113
  end
109
114
 
110
- expect(messages.sort).to eq([
111
- "Unrecognized environment parameter (TCELL_*) found: TCELL_HACK"
112
- ])
115
+ expect(messages.sort).to eq(
116
+ [
117
+ 'Unrecognized environment parameter (TCELL_*) found: TCELL_HACK'
118
+ ]
119
+ )
113
120
  end
114
121
  end
115
122
 
116
- context "with a config json with all options including some extra ones" do
117
- it "should report the extra options in messages" do
123
+ context 'with a config json with all options including some extra ones' do
124
+ it 'should report the extra options in messages' do
118
125
  config_json = {
119
- "first_level" => "boo",
120
- "version" => 1,
121
- "applications" => [{
122
- "second_level" => "boo",
123
- "name" => "name",
124
- "app_id" => "app id",
125
- "api_key" => "api key",
126
- "fetch_policies_from_tcell" => true,
127
- "preload_policy_filename" => "preload policy filename",
128
- "log_dir" => "custom log dir",
129
- "logging_options" => {
130
- "logging_level" => "boo",
131
- "enabled" => true,
132
- "level" => "DEBUG",
133
- "filename" => "filename"},
134
- "tcell_api_url" => "tcell api url",
135
- "tcell_input_url" => "tcell input url",
136
- "host_identifier" => "host identifier",
137
- "hipaaSafeMode" => "hipaa safe mode",
138
- "hmac_key" => "hmac key",
139
- "js_agent_api_base_url" => "js agent api base url",
140
- "js_agent_url" => "js agent url",
141
- "max_csp_header_bytes" => 512,
142
- "event_batch_size_limit" => 50,
143
- "allow_unencrypted_appsensor_payloads" => true,
144
- "allow_unencrypted_appfirewall_payloads" => true,
145
- "allow_payloads" => true,
146
- "data_exposure" => {
147
- "data_ex_level" => "boo",
148
- "max_data_ex_db_records_per_request" => 10000},
149
- "reverse_proxy" => true,
150
- "reverse_proxy_ip_address_header" => "reverse proxy ip address header",
151
- "demomode" => true,
152
- # Ruby only
153
- "disable_all" => false,
154
- "enabled" => true,
155
- "enable_event_manager" => true,
156
- "enable_event_consumer" => true,
157
- "enable_policy_polling" => true,
158
- "enable_instrumentation" => true,
159
- "enable_intercept_requests" => true,
160
- "instrument_for_events" => true,
161
- "agent_home_owner" => true,
162
- "enabled_instrumentations" => {
163
- "enabled_instrumentations_level" => "blah",
164
- "doorkeeper" => true,
165
- "devise" => true,
166
- "authlogic" => true}}]}
126
+ 'first_level' => 'boo',
127
+ 'version' => 1,
128
+ 'applications' => [
129
+ {
130
+ 'second_level' => 'boo',
131
+ 'name' => 'name',
132
+ 'app_id' => 'app id',
133
+ 'api_key' => 'api key',
134
+ 'fetch_policies_from_tcell' => true,
135
+ 'preload_policy_filename' => 'preload policy filename',
136
+ 'log_dir' => 'custom log dir',
137
+ 'logging_options' => {
138
+ 'logging_level' => 'boo',
139
+ 'enabled' => true,
140
+ 'level' => 'DEBUG',
141
+ 'filename' => 'filename'
142
+ },
143
+ 'tcell_api_url' => 'tcell api url',
144
+ 'tcell_input_url' => 'tcell input url',
145
+ 'host_identifier' => 'host identifier',
146
+ 'hipaaSafeMode' => 'hipaa safe mode',
147
+ 'hmac_key' => 'hmac key',
148
+ 'password_hmac_key' => 'password_hmac_key',
149
+ 'js_agent_api_base_url' => 'js agent api base url',
150
+ 'js_agent_url' => 'js agent url',
151
+ 'max_csp_header_bytes' => 512,
152
+ 'event_batch_size_limit' => 50,
153
+ 'allow_unencrypted_appsensor_payloads' => true,
154
+ 'allow_unencrypted_appfirewall_payloads' => true,
155
+ 'allow_payloads' => true,
156
+ 'data_exposure' => {
157
+ 'data_ex_level' => 'boo',
158
+ 'max_data_ex_db_records_per_request' => 10_000
159
+ },
160
+ 'reverse_proxy' => true,
161
+ 'reverse_proxy_ip_address_header' => 'reverse proxy ip address header',
162
+ 'demomode' => true,
163
+ # Ruby only
164
+ 'disable_all' => false,
165
+ 'enabled' => true,
166
+ 'enable_event_manager' => true,
167
+ 'enable_event_consumer' => true,
168
+ 'enable_policy_polling' => true,
169
+ 'enable_instrumentation' => true,
170
+ 'enable_intercept_requests' => true,
171
+ 'instrument_for_events' => true,
172
+ 'agent_home_owner' => true,
173
+ 'enabled_instrumentations' => {
174
+ 'enabled_instrumentations_level' => 'blah',
175
+ 'doorkeeper' => true,
176
+ 'devise' => true,
177
+ 'authlogic' => true
178
+ }
179
+ }
180
+ ]
181
+ }
167
182
 
168
183
  messages = Validate.get_unknown_options(config_json)
169
184
 
170
- expect(messages.sort).to eq([
171
- "Unrecognized config setting key: data_ex_level",
172
- "Unrecognized config setting key: enabled_instrumentations_level",
173
- "Unrecognized config setting key: first_level",
174
- "Unrecognized config setting key: logging_level",
175
- "Unrecognized config setting key: second_level"
176
- ])
185
+ expect(messages.sort).to eq(
186
+ [
187
+ 'Unrecognized config setting key: data_ex_level',
188
+ 'Unrecognized config setting key: enabled_instrumentations_level',
189
+ 'Unrecognized config setting key: first_level',
190
+ 'Unrecognized config setting key: logging_level',
191
+ 'Unrecognized config setting key: second_level'
192
+ ]
193
+ )
177
194
  end
178
195
  end
179
196
 
180
- context "with a config json that has more than one application" do
181
- it "should report the misconfiguration" do
182
- config_json = {"version" => 1, "applications" => [{}, {}]}
197
+ context 'with a config json that has more than one application' do
198
+ it 'should report the misconfiguration' do
199
+ config_json = { 'version' => 1, 'applications' => [{}, {}] }
183
200
 
184
201
  messages = Validate.get_unknown_options(config_json)
185
202
 
186
- expect(messages.sort).to eq([
187
- "Multiple applications detected in config file"
188
- ])
203
+ expect(messages.sort).to eq(
204
+ [
205
+ 'Multiple applications detected in config file'
206
+ ]
207
+ )
189
208
  end
190
209
  end
191
210
  end
192
211
  end
193
-
194
212
  end
195
213
  end
196
-