tcell_agent 1.1.3 → 1.1.4

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 (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
@@ -4,13 +4,13 @@ require 'tcell_agent/sensor_events/util/sanitizer_utilities'
4
4
  require 'tcell_agent/sensor_events/sensor'
5
5
 
6
6
  module TCellAgent
7
- module SensorEvents
8
- class HoneytokensSensorEvent < TCellSensorEvent
9
- def initialize(request, token_id)
10
- super("honeytoken")
11
- self["id"] = token_id
12
- self["ip"] = request.remote_ip
13
- end
14
- end
7
+ module SensorEvents
8
+ class HoneytokensSensorEvent < TCellSensorEvent
9
+ def initialize(request, token_id)
10
+ super('honeytoken')
11
+ self['id'] = token_id
12
+ self['ip'] = request.remote_ip
13
+ end
15
14
  end
16
- end
15
+ end
16
+ end
@@ -21,7 +21,7 @@ module TCellAgent
21
21
  attr_accessor :route_id
22
22
  attr_accessor :response_time
23
23
  def initialize(route_id, response_time)
24
- super("RequestRouteTimer")
24
+ super('RequestRouteTimer')
25
25
  self.route_id = route_id
26
26
  self.response_time = response_time
27
27
  @send = false
@@ -29,11 +29,12 @@ module TCellAgent
29
29
  end
30
30
 
31
31
  class MetricsEvent < TCellSensorEvent
32
- def initialize()
33
- super("metrics")
32
+ def initialize
33
+ super('metrics')
34
34
  end
35
+
35
36
  def set_route_count_table(route_count_table)
36
- self["rct"] = route_count_table
37
+ self['rct'] = route_count_table
37
38
  end
38
39
  end
39
40
 
@@ -42,12 +43,12 @@ module TCellAgent
42
43
  def initialize(object_counter, user_id)
43
44
  @object_counter = object_counter
44
45
  @user_agents = {}
45
- self["uid"] = user_id
46
- self["track"] = []
46
+ self['uid'] = user_id
47
+ self['track'] = []
47
48
  end
48
49
 
49
50
  def add_user_agent_ip(truncated_agent, ip_address)
50
- if @user_agents.has_key?(truncated_agent)
51
+ if @user_agents.key?(truncated_agent)
51
52
  tracked_agents = @user_agents[truncated_agent]
52
53
  ips = tracked_agents[1]
53
54
  unless ips.include?(ip_address)
@@ -57,7 +58,7 @@ module TCellAgent
57
58
  else
58
59
  @object_counter.add_object
59
60
  @user_agents[truncated_agent] = [truncated_agent, [ip_address]]
60
- self["track"].push(@user_agents[truncated_agent])
61
+ self['track'].push(@user_agents[truncated_agent])
61
62
  end
62
63
  end
63
64
  end
@@ -69,7 +70,7 @@ module TCellAgent
69
70
  end
70
71
 
71
72
  def add_user_id_user_agent_ip(user_id, truncated_agent, ip_address)
72
- if @user_ids.has_key?(user_id)
73
+ if @user_ids.key?(user_id)
73
74
  user_id_info = @user_ids[user_id]
74
75
  user_id_info.add_user_agent_ip(truncated_agent, ip_address)
75
76
  else
@@ -78,41 +79,39 @@ module TCellAgent
78
79
  @user_ids[user_id] = user_id_info = UserSessionTrackMetric.new(@object_counter, user_id)
79
80
  user_id_info.add_user_agent_ip(truncated_agent, ip_address)
80
81
 
81
- self.push(user_id_info)
82
+ push(user_id_info)
82
83
  end
83
84
  end
84
85
  end
85
86
 
86
- def initialize()
87
- super("metrics")
87
+ def initialize
88
+ super('metrics')
88
89
  @send = false
89
90
  @flush = false
90
91
 
91
- self["sessions"] = {}
92
+ self['sessions'] = {}
92
93
  @has_sessions = false
93
94
  @object_counter = Counter.new
94
95
  end
95
96
 
96
- def has_sessions?
97
+ def sessions?
97
98
  @has_sessions
98
99
  end
99
100
 
100
101
  def add_session_info(hmac_session_id, user_id, ip_address, user_agent)
101
102
  if @object_counter.counter >= 250
102
- TCellAgent.logger.warn("Sessions Metric is full. Information dropped")
103
+ TCellAgent.logger.warn('Sessions Metric is full. Information dropped')
103
104
 
104
105
  else
105
- self["sessions"][hmac_session_id] =
106
- self["sessions"].fetch(hmac_session_id, UserSessionMetric.new(@object_counter))
106
+ self['sessions'][hmac_session_id] =
107
+ self['sessions'].fetch(hmac_session_id, UserSessionMetric.new(@object_counter))
107
108
 
108
109
  @has_sessions = true
109
110
 
110
111
  truncated_agent = truncated_user_agent(user_agent)
111
- self["sessions"][hmac_session_id].add_user_id_user_agent_ip(user_id, truncated_agent, ip_address)
112
+ self['sessions'][hmac_session_id].add_user_id_user_agent_ip(user_id, truncated_agent, ip_address)
112
113
 
113
- if @object_counter.counter >= 200
114
- @flush = true
115
- end
114
+ @flush = true if @object_counter.counter >= 200
116
115
  end
117
116
  end
118
117
 
@@ -2,22 +2,20 @@ require 'tcell_agent/sensor_events/sensor'
2
2
 
3
3
  module TCellAgent
4
4
  module SensorEvents
5
-
6
5
  class PatchesEvent < TCellSensorEvent
7
6
  def initialize(rust_response, appsensor_meta)
8
- super("patches")
7
+ super('patches')
9
8
 
10
- self["patches_pid"] = rust_response["patches_policy_id"]
11
- self["rule_id"] = rust_response["rule_id"]
12
- self["action"] = "blocked"
13
- self["sz"] = appsensor_meta.request_content_bytes_len if appsensor_meta.request_content_bytes_len
14
- self["m"] = appsensor_meta.method if appsensor_meta.method
15
- self["remote_addr"] = appsensor_meta.remote_address if appsensor_meta.remote_address
16
- self["uri"] = TCellAgent::SensorEvents::Util.strip_uri_values(appsensor_meta.location) if appsensor_meta.location
17
- self["regex_pid"] = rust_response["regex_pid"] if rust_response["regex_pid"]
18
- self["payload"] = rust_response["payload"] if rust_response["payload"]
9
+ self['patches_pid'] = rust_response['patches_policy_id']
10
+ self['rule_id'] = rust_response['rule_id']
11
+ self['action'] = 'blocked'
12
+ self['sz'] = appsensor_meta.request_content_bytes_len if appsensor_meta.request_content_bytes_len
13
+ self['m'] = appsensor_meta.method if appsensor_meta.method
14
+ self['remote_addr'] = appsensor_meta.remote_address if appsensor_meta.remote_address
15
+ self['uri'] = TCellAgent::SensorEvents::Util.strip_uri_values(appsensor_meta.location) if appsensor_meta.location
16
+ self['regex_pid'] = rust_response['regex_pid'] if rust_response['regex_pid']
17
+ self['payload'] = rust_response['payload'] if rust_response['payload']
19
18
  end
20
19
  end
21
-
22
20
  end
23
21
  end
@@ -6,7 +6,6 @@ require 'uri'
6
6
 
7
7
  module TCellAgent
8
8
  module SensorEvents
9
-
10
9
  class TCellSensorEvent < Hash
11
10
  attr_accessor :send, :flush, :ensure
12
11
 
@@ -14,37 +13,35 @@ module TCellAgent
14
13
  @send = true
15
14
  @flush = false
16
15
  @ensure = false
17
- @timestamp = DateTime.now.to_time.to_i
18
- self["event_type"] = event_type
16
+ @timestamp = Time.now.to_i
17
+ self['event_type'] = event_type
19
18
  end
20
19
 
21
- def calculateOffset(from_timestamp)
22
- self["offset"] = from_timestamp - @timestamp
20
+ def calculate_offset(from_timestamp)
21
+ self['offset'] = from_timestamp - @timestamp
23
22
  end
24
23
 
25
24
  def post_process
26
25
  # This is called in the background thread, so any
27
- # santization, analysis, etc doesn't get in the way
26
+ # santization, analysis, etc doesn't get in the way
28
27
  end
29
28
 
30
29
  def bucket_key
31
- return nil
30
+ nil
32
31
  end
33
32
  end
34
33
 
35
34
  class TCellHttpTxSensorEvent < TCellSensorEvent
36
35
  def initialize(request, response)
37
- super("http_tx")
36
+ super('http_tx')
38
37
  @raw_request = request
39
38
  @raw_response = response
40
39
  end
40
+
41
41
  def post_process
42
- if defined?@raw_request
43
- self["request"] = Util.request_sanitized_json(@raw_request)
44
- end
45
- if defined?@raw_response
46
- self["response"] = Util.response_sanitized_json(@raw_response)
47
- end
42
+ self['request'] = Util.request_sanitized_json(@raw_request) if defined? @raw_request
43
+
44
+ self['response'] = Util.response_sanitized_json(@raw_response) if defined? @raw_response
48
45
  end
49
46
  end
50
47
 
@@ -56,38 +53,37 @@ module TCellAgent
56
53
  route_id,
57
54
  status_code,
58
55
  remote_addr,
59
- hmac_session_id=nil,
60
- user_id=nil)
61
- super("redirect")
62
- self["method"] = method
63
- self["from_domain"] = original_domain
64
- self["status_code"] = status_code
65
- self["remote_addr"] = remote_addr
66
- self["to"] = redirect_domain
67
- self["uid"] = user_id.to_s if user_id
68
- self["from"] = Util.strip_uri_values(original_url)
69
- self["rid"] = route_id if route_id
70
- self["sid"] = hmac_session_id if hmac_session_id
56
+ hmac_session_id = nil,
57
+ user_id = nil)
58
+ super('redirect')
59
+ self['method'] = method
60
+ self['from_domain'] = original_domain
61
+ self['status_code'] = status_code
62
+ self['remote_addr'] = remote_addr
63
+ self['to'] = redirect_domain
64
+ self['uid'] = user_id.to_s if user_id
65
+ self['from'] = Util.strip_uri_values(original_url)
66
+ self['rid'] = route_id if route_id
67
+ self['sid'] = hmac_session_id if hmac_session_id
71
68
  end
72
69
  end
73
70
 
74
71
  class TCellFingerprintSensorEvent < TCellSensorEvent
75
- def initialize(request, hmac_session_id, user_id=nil)
76
- super("fingerprint")
72
+ def initialize(request, hmac_session_id, user_id = nil)
73
+ super('fingerprint')
77
74
  @raw_request = request
78
75
  @hmac_session_id = hmac_session_id
79
76
  @user_id = user_id
80
77
  end
78
+
81
79
  def post_process
82
- if !(@raw_request.headers.key?("HTTP_USER_AGENT"))
83
- raise "User Agent not Found!"
84
- end
85
- self["ua"] = @raw_request.headers["HTTP_USER_AGENT"]
86
- self["ip"] = @raw_request.remote_ip
87
- self["sid"] = @hmac_session_id
88
- if @user_id
89
- self["uid"] = @user_id
80
+ unless @raw_request.headers.key?('HTTP_USER_AGENT')
81
+ raise 'User Agent not Found!'
90
82
  end
83
+ self['ua'] = @raw_request.headers['HTTP_USER_AGENT']
84
+ self['ip'] = @raw_request.remote_ip
85
+ self['sid'] = @hmac_session_id
86
+ self['uid'] = @user_id if @user_id
91
87
  end
92
88
  end
93
89
  end
@@ -7,141 +7,144 @@ require 'tcell_agent/sensor_events/util/utils'
7
7
  require 'etc'
8
8
 
9
9
  module TCellAgent
10
- module SensorEvents
11
- class FlushDummyEvent < TCellSensorEvent
12
- def initialize
13
- super("dummy")
14
- @send = false
15
- @flush = true
10
+ module SensorEvents
11
+ class FlushDummyEvent < TCellSensorEvent
12
+ def initialize
13
+ super('dummy')
14
+ @send = false
15
+ @flush = true
16
+ end
17
+ end
18
+
19
+ class ServerAgentDetailsSensorEvent < TCellSensorEvent
20
+ def initialize
21
+ super('server_agent_details')
22
+ @flush = true
23
+ @ensure = true
24
+
25
+ self['user'] = 'unknown'
26
+ self['group'] = 'unknown'
27
+
28
+ begin
29
+ login = Etc.getlogin
30
+ if login
31
+ self['user'] = login
32
+ begin
33
+ info = Etc.getpwnam(login)
34
+ self['group'] = info.gid.to_s
35
+ rescue StandardError => te
36
+ TCellAgent.logger.warn("Exception finding group id: #{te.message}")
37
+ TCellAgent.logger.debug(te.backtrace)
38
+ end
16
39
  end
40
+ rescue StandardError => to
41
+ TCellAgent.logger.warn("Exception finding user & group: #{to.message}")
42
+ TCellAgent.logger.debug(te.backtrace)
17
43
  end
18
- class ServerAgentDetailsSensorEvent < TCellSensorEvent
19
- def initialize
20
- super("server_agent_details")
21
- @flush = true
22
- @ensure = true
23
44
 
24
- self["user"] = "unknown"
25
- self["group"] = "unknown"
45
+ TCellAgent.logger.debug("User #{self['user']}")
46
+ TCellAgent.logger.debug("Group #{self['group']}")
47
+ end
48
+ end
26
49
 
27
- begin
28
- login = Etc.getlogin
29
- if login
30
- self["user"] = login
31
- begin
32
- info = Etc.getpwnam(login)
33
- self["group"] = info.gid.to_s
34
- rescue StandardError => te
35
- TCellAgent.logger.warn("Exception finding group id: #{te.message}")
36
- TCellAgent.logger.debug(te.backtrace)
37
- end
38
- end
50
+ class ServerAgentDetailsLanguageEvent < TCellSensorEvent
51
+ def initialize(language, language_version)
52
+ super('server_agent_details')
53
+ @flush = true
54
+ @ensure = true
55
+ self['language'] = language
56
+ self['language_version'] = language_version
57
+ end
58
+ end
39
59
 
40
- rescue StandardError => to
41
- TCellAgent.logger.warn("Exception finding user & group: #{to.message}")
42
- TCellAgent.logger.debug(te.backtrace)
43
- end
60
+ class ServerAgentAppFrameworkEvent < TCellSensorEvent
61
+ def initialize(framework_name, framework_version)
62
+ super('server_agent_details')
63
+ @flush = true
64
+ @ensure = true
65
+ self['app_framework'] = framework_name
66
+ self['app_framework_version'] = framework_version
67
+ end
68
+ end
44
69
 
45
- TCellAgent.logger.debug("User #{self["user"]}")
46
- TCellAgent.logger.debug("Group #{self["group"]}")
47
- end
48
- end
49
- class ServerAgentDetailsLanguageEvent < TCellSensorEvent
50
- def initialize(language, language_version)
51
- super("server_agent_details")
52
- @flush = true
53
- @ensure = true
54
- self["language"] = language
55
- self["language_version"] = language_version
70
+ class ServerAgentPackagesSensorEvent < TCellSensorEvent
71
+ def initialize
72
+ super('server_agent_packages')
73
+ @flush = true
74
+ @ensure = true
75
+ packages = []
76
+ Gem.loaded_specs.values.map do |x|
77
+ begin
78
+ if x.name
79
+ package = { 'n' => x.name, 'v' => x.version.version }
80
+ packages.push(package)
81
+ TCellAgent.logger.debug("Adding packages #{x.name}")
56
82
  end
83
+ rescue StandardError => te
84
+ TCellAgent.logger.error("Exception adding package: #{te.message}")
85
+ TCellAgent.logger.debug(te.backtrace)
86
+ end
57
87
  end
88
+ self['packages'] = packages
89
+ end
90
+ end
58
91
 
59
- class ServerAgentAppFrameworkEvent < TCellSensorEvent
60
- def initialize(framework_name, framework_version)
61
- super("server_agent_details")
62
- @flush = true
63
- @ensure = true
64
- self["app_framework"] = framework_name
65
- self["app_framework_version"] = framework_version
66
- end
67
- end
68
- class ServerAgentPackagesSensorEvent < TCellSensorEvent
69
- def initialize
70
- super("server_agent_packages")
71
- @flush = true
72
- @ensure = true
73
- packages = []
74
- Gem.loaded_specs.values.map { |x|
75
- begin
76
- if x.name
77
- package = {"n"=>x.name, "v"=>x.version.version}
78
- packages.push(package)
79
- TCellAgent.logger.debug("Adding packages #{x.name}")
80
- end
81
- rescue StandardError => te
82
- TCellAgent.logger.error("Exception adding package: #{te.message}")
83
- TCellAgent.logger.debug(te.backtrace)
84
- end
85
- }
86
- self["packages"] = packages
87
- end
88
- end
89
- class AppFramework < TCellSensorEvent
90
- def initialize(name, version)
91
- super("appserver_framework")
92
- @flush = false
93
- @ensure = true
94
- self["n"] = name
95
- self["v"] = version
96
- end
97
- end
98
- class AppAuthFramework < TCellSensorEvent
99
- def initialize(name, version)
100
- super("appserver_auth_framework")
101
- @flush = false
102
- @ensure = true
103
- self["n"] = name
104
- self["v"] = version
105
- end
106
- end
107
- class AppFrameworkSetting < TCellSensorEvent
108
- def initialize(framework_name, setting, value)
109
- super("appserver_framework_setting")
110
- @flush = false
111
- @ensure = true
112
- self["framework"] = framework_name
113
- self["s"] = setting
114
- self["v"] = value
115
- end
116
- end
117
- class AppCookie < TCellSensorEvent
118
- def initialize(name, value, secure, http_only, session)
119
- super("appserver_framework_setting")
120
- @flush = false
121
- @ensure = true
122
- self["n"] = name
123
- self["v"] = value
124
- self["http_only"] = http_only
125
- self["secure"] = secure
126
- self["session"] = session
127
- end
128
- end
129
- class AppRoutesSensorEvent < TCellSensorEvent
130
- def initialize(uri, method, route_id, params=nil, destination=nil)
131
- super("appserver_routes")
132
- @flush = false
133
- @ensure = true
134
- method = method.downcase
135
- self["uri"] = uri
136
- self["method"] = method
137
- self["rid"] = route_id
138
- if (params)
139
- self["params"] = params
140
- end
141
- if (destination)
142
- self["destination"] = destination
143
- end
144
- end
145
- end
92
+ class AppFramework < TCellSensorEvent
93
+ def initialize(name, version)
94
+ super('appserver_framework')
95
+ @flush = false
96
+ @ensure = true
97
+ self['n'] = name
98
+ self['v'] = version
99
+ end
100
+ end
101
+
102
+ class AppAuthFramework < TCellSensorEvent
103
+ def initialize(name, version)
104
+ super('appserver_auth_framework')
105
+ @flush = false
106
+ @ensure = true
107
+ self['n'] = name
108
+ self['v'] = version
109
+ end
110
+ end
111
+
112
+ class AppFrameworkSetting < TCellSensorEvent
113
+ def initialize(framework_name, setting, value)
114
+ super('appserver_framework_setting')
115
+ @flush = false
116
+ @ensure = true
117
+ self['framework'] = framework_name
118
+ self['s'] = setting
119
+ self['v'] = value
120
+ end
121
+ end
122
+
123
+ class AppCookie < TCellSensorEvent
124
+ def initialize(name, value, secure, http_only, session)
125
+ super('appserver_framework_setting')
126
+ @flush = false
127
+ @ensure = true
128
+ self['n'] = name
129
+ self['v'] = value
130
+ self['http_only'] = http_only
131
+ self['secure'] = secure
132
+ self['session'] = session
133
+ end
134
+ end
135
+
136
+ class AppRoutesSensorEvent < TCellSensorEvent
137
+ def initialize(uri, method, route_id, params = nil, destination = nil)
138
+ super('appserver_routes')
139
+ @flush = false
140
+ @ensure = true
141
+ method = method.downcase
142
+ self['uri'] = uri
143
+ self['method'] = method
144
+ self['rid'] = route_id
145
+ self['params'] = params if params
146
+ self['destination'] = destination if destination
147
+ end
146
148
  end
149
+ end
147
150
  end