active_stix 0.1.21

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 (289) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/config/active_stix_manifest.js +2 -0
  6. data/app/assets/javascripts/active_stix/application.js +15 -0
  7. data/app/assets/javascripts/active_stix/artifacts.js +2 -0
  8. data/app/assets/javascripts/active_stix/attack_patterns.js +2 -0
  9. data/app/assets/javascripts/active_stix/bcc_refs.js +2 -0
  10. data/app/assets/javascripts/active_stix/bundled_objects.js +2 -0
  11. data/app/assets/javascripts/active_stix/bundles.js +2 -0
  12. data/app/assets/javascripts/active_stix/campaigns.js +2 -0
  13. data/app/assets/javascripts/active_stix/course_of_actions.js +2 -0
  14. data/app/assets/javascripts/active_stix/cyber_observables.js +2 -0
  15. data/app/assets/javascripts/active_stix/email_messages.js +2 -0
  16. data/app/assets/javascripts/active_stix/external_references.js +2 -0
  17. data/app/assets/javascripts/active_stix/files.js +2 -0
  18. data/app/assets/javascripts/active_stix/identities.js +2 -0
  19. data/app/assets/javascripts/active_stix/indicator_labels.js +2 -0
  20. data/app/assets/javascripts/active_stix/indicators.js +2 -0
  21. data/app/assets/javascripts/active_stix/intrusion_sets.js +2 -0
  22. data/app/assets/javascripts/active_stix/kill_chain_phases.js +2 -0
  23. data/app/assets/javascripts/active_stix/kill_chains.js +2 -0
  24. data/app/assets/javascripts/active_stix/malwares.js +2 -0
  25. data/app/assets/javascripts/active_stix/marking_definitions.js +2 -0
  26. data/app/assets/javascripts/active_stix/observed_data.js +2 -0
  27. data/app/assets/javascripts/active_stix/open_vocabularies.js +2 -0
  28. data/app/assets/javascripts/active_stix/phases.js +2 -0
  29. data/app/assets/javascripts/active_stix/recipients.js +2 -0
  30. data/app/assets/javascripts/active_stix/relationships.js +2 -0
  31. data/app/assets/javascripts/active_stix/reports.js +2 -0
  32. data/app/assets/javascripts/active_stix/threat_actors.js +2 -0
  33. data/app/assets/javascripts/active_stix/tools.js +2 -0
  34. data/app/assets/javascripts/active_stix/urls.js +2 -0
  35. data/app/assets/javascripts/active_stix/users.js +2 -0
  36. data/app/assets/stylesheets/active_stix/application.css +15 -0
  37. data/app/assets/stylesheets/active_stix/artifacts.css +4 -0
  38. data/app/assets/stylesheets/active_stix/attack_patterns.css +4 -0
  39. data/app/assets/stylesheets/active_stix/bcc_refs.css +4 -0
  40. data/app/assets/stylesheets/active_stix/bundled_objects.css +4 -0
  41. data/app/assets/stylesheets/active_stix/bundles.css +4 -0
  42. data/app/assets/stylesheets/active_stix/campaigns.css +4 -0
  43. data/app/assets/stylesheets/active_stix/course_of_actions.css +4 -0
  44. data/app/assets/stylesheets/active_stix/cyber_observables.css +4 -0
  45. data/app/assets/stylesheets/active_stix/email_messages.css +4 -0
  46. data/app/assets/stylesheets/active_stix/external_references.css +4 -0
  47. data/app/assets/stylesheets/active_stix/files.css +4 -0
  48. data/app/assets/stylesheets/active_stix/identities.css +4 -0
  49. data/app/assets/stylesheets/active_stix/indicator_labels.css +4 -0
  50. data/app/assets/stylesheets/active_stix/indicators.css +4 -0
  51. data/app/assets/stylesheets/active_stix/intrusion_sets.css +4 -0
  52. data/app/assets/stylesheets/active_stix/kill_chain_phases.css +4 -0
  53. data/app/assets/stylesheets/active_stix/kill_chains.css +4 -0
  54. data/app/assets/stylesheets/active_stix/malwares.css +4 -0
  55. data/app/assets/stylesheets/active_stix/marking_definitions.css +4 -0
  56. data/app/assets/stylesheets/active_stix/observed_data.css +4 -0
  57. data/app/assets/stylesheets/active_stix/open_vocabularies.css +4 -0
  58. data/app/assets/stylesheets/active_stix/phases.css +4 -0
  59. data/app/assets/stylesheets/active_stix/recipients.css +4 -0
  60. data/app/assets/stylesheets/active_stix/relationships.css +4 -0
  61. data/app/assets/stylesheets/active_stix/reports.css +4 -0
  62. data/app/assets/stylesheets/active_stix/threat_actors.css +4 -0
  63. data/app/assets/stylesheets/active_stix/tools.css +4 -0
  64. data/app/assets/stylesheets/active_stix/urls.css +4 -0
  65. data/app/assets/stylesheets/active_stix/users.css +4 -0
  66. data/app/assets/stylesheets/scaffold.css +80 -0
  67. data/app/controllers/active_stix/application_controller.rb +5 -0
  68. data/app/controllers/active_stix/artifacts_controller.rb +62 -0
  69. data/app/controllers/active_stix/attack_patterns_controller.rb +27 -0
  70. data/app/controllers/active_stix/bcc_refs_controller.rb +62 -0
  71. data/app/controllers/active_stix/bundled_objects_controller.rb +62 -0
  72. data/app/controllers/active_stix/bundles_controller.rb +11 -0
  73. data/app/controllers/active_stix/campaigns_controller.rb +74 -0
  74. data/app/controllers/active_stix/course_of_actions_controller.rb +62 -0
  75. data/app/controllers/active_stix/cyber_observables_controller.rb +62 -0
  76. data/app/controllers/active_stix/email_addresses_controller.rb +74 -0
  77. data/app/controllers/active_stix/email_messages_controller.rb +26 -0
  78. data/app/controllers/active_stix/external_references_controller.rb +62 -0
  79. data/app/controllers/active_stix/files_controller.rb +74 -0
  80. data/app/controllers/active_stix/identities_controller.rb +128 -0
  81. data/app/controllers/active_stix/indicator_labels_controller.rb +62 -0
  82. data/app/controllers/active_stix/indicators_controller.rb +62 -0
  83. data/app/controllers/active_stix/intrusion_sets_controller.rb +62 -0
  84. data/app/controllers/active_stix/kill_chain_phases_controller.rb +62 -0
  85. data/app/controllers/active_stix/kill_chains_controller.rb +62 -0
  86. data/app/controllers/active_stix/malwares_controller.rb +62 -0
  87. data/app/controllers/active_stix/marking_definitions_controller.rb +62 -0
  88. data/app/controllers/active_stix/observed_data_controller.rb +62 -0
  89. data/app/controllers/active_stix/open_vocabularies_controller.rb +62 -0
  90. data/app/controllers/active_stix/phases_controller.rb +62 -0
  91. data/app/controllers/active_stix/recipients_controller.rb +62 -0
  92. data/app/controllers/active_stix/relationships_controller.rb +62 -0
  93. data/app/controllers/active_stix/reports_controller.rb +62 -0
  94. data/app/controllers/active_stix/threat_actors_controller.rb +75 -0
  95. data/app/controllers/active_stix/tools_controller.rb +62 -0
  96. data/app/controllers/active_stix/urls_controller.rb +62 -0
  97. data/app/controllers/active_stix/user_accounts_controller.rb +74 -0
  98. data/app/controllers/active_stix/users_controller.rb +62 -0
  99. data/app/helpers/active_stix/application_helper.rb +4 -0
  100. data/app/helpers/active_stix/artifacts_helper.rb +4 -0
  101. data/app/helpers/active_stix/attack_patterns_helper.rb +4 -0
  102. data/app/helpers/active_stix/bcc_refs_helper.rb +4 -0
  103. data/app/helpers/active_stix/bundled_objects_helper.rb +4 -0
  104. data/app/helpers/active_stix/bundles_helper.rb +4 -0
  105. data/app/helpers/active_stix/campaigns_helper.rb +4 -0
  106. data/app/helpers/active_stix/course_of_actions_helper.rb +4 -0
  107. data/app/helpers/active_stix/cyber_observables_helper.rb +4 -0
  108. data/app/helpers/active_stix/email_messages_helper.rb +4 -0
  109. data/app/helpers/active_stix/external_references_helper.rb +4 -0
  110. data/app/helpers/active_stix/files_helper.rb +4 -0
  111. data/app/helpers/active_stix/identities_helper.rb +4 -0
  112. data/app/helpers/active_stix/indicator_labels_helper.rb +4 -0
  113. data/app/helpers/active_stix/indicators_helper.rb +4 -0
  114. data/app/helpers/active_stix/intrusion_sets_helper.rb +4 -0
  115. data/app/helpers/active_stix/kill_chain_phases_helper.rb +4 -0
  116. data/app/helpers/active_stix/kill_chains_helper.rb +4 -0
  117. data/app/helpers/active_stix/malwares_helper.rb +4 -0
  118. data/app/helpers/active_stix/marking_definitions_helper.rb +4 -0
  119. data/app/helpers/active_stix/observed_data_helper.rb +4 -0
  120. data/app/helpers/active_stix/open_vocabularies_helper.rb +4 -0
  121. data/app/helpers/active_stix/phases_helper.rb +4 -0
  122. data/app/helpers/active_stix/recipients_helper.rb +4 -0
  123. data/app/helpers/active_stix/relationships_helper.rb +4 -0
  124. data/app/helpers/active_stix/reports_helper.rb +4 -0
  125. data/app/helpers/active_stix/threat_actors_helper.rb +4 -0
  126. data/app/helpers/active_stix/tools_helper.rb +4 -0
  127. data/app/helpers/active_stix/urls_helper.rb +4 -0
  128. data/app/helpers/active_stix/users_helper.rb +4 -0
  129. data/app/jobs/active_stix/application_job.rb +4 -0
  130. data/app/mailers/active_stix/application_mailer.rb +6 -0
  131. data/app/models/active_stix/application_record.rb +5 -0
  132. data/app/models/active_stix/artifact.rb +23 -0
  133. data/app/models/active_stix/attack_pattern.rb +150 -0
  134. data/app/models/active_stix/bcc_ref.rb +6 -0
  135. data/app/models/active_stix/bundle.rb +108 -0
  136. data/app/models/active_stix/bundled_object.rb +4 -0
  137. data/app/models/active_stix/campaign.rb +65 -0
  138. data/app/models/active_stix/cc_ref.rb +6 -0
  139. data/app/models/active_stix/course_of_action.rb +54 -0
  140. data/app/models/active_stix/cyber_observable.rb +4 -0
  141. data/app/models/active_stix/email_address.rb +27 -0
  142. data/app/models/active_stix/email_message.rb +339 -0
  143. data/app/models/active_stix/external_reference.rb +48 -0
  144. data/app/models/active_stix/file.rb +2 -0
  145. data/app/models/active_stix/identity.rb +141 -0
  146. data/app/models/active_stix/indicator.rb +58 -0
  147. data/app/models/active_stix/indicator_label.rb +4 -0
  148. data/app/models/active_stix/intrusion_set.rb +69 -0
  149. data/app/models/active_stix/kill_chain.rb +7 -0
  150. data/app/models/active_stix/kill_chain_phase.rb +6 -0
  151. data/app/models/active_stix/label.rb +17 -0
  152. data/app/models/active_stix/label_malware.rb +4 -0
  153. data/app/models/active_stix/label_report.rb +4 -0
  154. data/app/models/active_stix/label_tool.rb +4 -0
  155. data/app/models/active_stix/malware.rb +98 -0
  156. data/app/models/active_stix/marking_definition.rb +21 -0
  157. data/app/models/active_stix/markup.rb +6 -0
  158. data/app/models/active_stix/object_marking.rb +11 -0
  159. data/app/models/active_stix/observed_datum.rb +67 -0
  160. data/app/models/active_stix/open_vocabulary.rb +8 -0
  161. data/app/models/active_stix/phase.rb +41 -0
  162. data/app/models/active_stix/recipient.rb +4 -0
  163. data/app/models/active_stix/reference_item.rb +4 -0
  164. data/app/models/active_stix/relationship.rb +95 -0
  165. data/app/models/active_stix/report.rb +93 -0
  166. data/app/models/active_stix/report_object.rb +9 -0
  167. data/app/models/active_stix/threat_actor.rb +139 -0
  168. data/app/models/active_stix/to_ref.rb +6 -0
  169. data/app/models/active_stix/tool.rb +112 -0
  170. data/app/models/active_stix/url.rb +15 -0
  171. data/app/models/active_stix/user.rb +4 -0
  172. data/app/models/active_stix/user_account.rb +3 -0
  173. data/app/views/active_stix/artifacts/_form.html.erb +57 -0
  174. data/app/views/active_stix/artifacts/edit.html.erb +6 -0
  175. data/app/views/active_stix/artifacts/index.html.erb +41 -0
  176. data/app/views/active_stix/artifacts/new.html.erb +5 -0
  177. data/app/views/active_stix/artifacts/show.html.erb +44 -0
  178. data/app/views/active_stix/attack_patterns/_form.html.erb +37 -0
  179. data/app/views/active_stix/attack_patterns/edit.html.erb +2 -0
  180. data/app/views/active_stix/attack_patterns/index.html.erb +2 -0
  181. data/app/views/active_stix/attack_patterns/new.html.erb +2 -0
  182. data/app/views/active_stix/attack_patterns/show.html.erb +140 -0
  183. data/app/views/active_stix/bcc_refs/_form.html.erb +27 -0
  184. data/app/views/active_stix/bcc_refs/edit.html.erb +6 -0
  185. data/app/views/active_stix/bcc_refs/index.html.erb +29 -0
  186. data/app/views/active_stix/bcc_refs/new.html.erb +5 -0
  187. data/app/views/active_stix/bcc_refs/show.html.erb +14 -0
  188. data/app/views/active_stix/bundles/index.html.erb +1 -0
  189. data/app/views/active_stix/bundles/show.html.erb +7 -0
  190. data/app/views/active_stix/campaigns/_form.html.erb +42 -0
  191. data/app/views/active_stix/campaigns/_stix_campaign.json.jbuilder +2 -0
  192. data/app/views/active_stix/campaigns/edit.html.erb +6 -0
  193. data/app/views/active_stix/campaigns/index.html.erb +35 -0
  194. data/app/views/active_stix/campaigns/index.json.jbuilder +1 -0
  195. data/app/views/active_stix/campaigns/new.html.erb +5 -0
  196. data/app/views/active_stix/campaigns/show.html.erb +29 -0
  197. data/app/views/active_stix/campaigns/show.json.jbuilder +1 -0
  198. data/app/views/active_stix/email_messages/_form.html.erb +62 -0
  199. data/app/views/active_stix/email_messages/_stix_email_message.json.jbuilder +2 -0
  200. data/app/views/active_stix/email_messages/edit.html.erb +6 -0
  201. data/app/views/active_stix/email_messages/index.html.erb +43 -0
  202. data/app/views/active_stix/email_messages/index.json.jbuilder +1 -0
  203. data/app/views/active_stix/email_messages/new.html.erb +5 -0
  204. data/app/views/active_stix/email_messages/show.html.erb +165 -0
  205. data/app/views/active_stix/email_messages/show.json.jbuilder +1 -0
  206. data/app/views/active_stix/files/_form.html.erb +92 -0
  207. data/app/views/active_stix/files/_stix_file.json.jbuilder +2 -0
  208. data/app/views/active_stix/files/edit.html.erb +6 -0
  209. data/app/views/active_stix/files/index.html.erb +55 -0
  210. data/app/views/active_stix/files/index.json.jbuilder +1 -0
  211. data/app/views/active_stix/files/new.html.erb +5 -0
  212. data/app/views/active_stix/files/show.html.erb +79 -0
  213. data/app/views/active_stix/files/show.json.jbuilder +1 -0
  214. data/app/views/active_stix/identities/_form.html.erb +27 -0
  215. data/app/views/active_stix/identities/_individual.html.erb +100 -0
  216. data/app/views/active_stix/identities/_organization.html.erb +72 -0
  217. data/app/views/active_stix/identities/_received_email_messages.html.erb +27 -0
  218. data/app/views/active_stix/identities/_sent_email_messages.html.erb +27 -0
  219. data/app/views/active_stix/identities/_threat_icons.html.erb +3 -0
  220. data/app/views/active_stix/identities/edit.html.erb +2 -0
  221. data/app/views/active_stix/identities/index.html.erb +37 -0
  222. data/app/views/active_stix/identities/new.html.erb +5 -0
  223. data/app/views/active_stix/identities/show.html.erb +15 -0
  224. data/app/views/active_stix/layouts/active_stix/application.html.erb +16 -0
  225. data/app/views/active_stix/recipients/_form.html.erb +27 -0
  226. data/app/views/active_stix/recipients/edit.html.erb +6 -0
  227. data/app/views/active_stix/recipients/index.html.erb +29 -0
  228. data/app/views/active_stix/recipients/new.html.erb +5 -0
  229. data/app/views/active_stix/recipients/show.html.erb +14 -0
  230. data/app/views/active_stix/threat_actors/_form.html.erb +32 -0
  231. data/app/views/active_stix/threat_actors/_stix_threat_actor.json.jbuilder +2 -0
  232. data/app/views/active_stix/threat_actors/edit.html.erb +6 -0
  233. data/app/views/active_stix/threat_actors/flags.html.erb +184 -0
  234. data/app/views/active_stix/threat_actors/index.html.erb +26 -0
  235. data/app/views/active_stix/threat_actors/index.json.jbuilder +1 -0
  236. data/app/views/active_stix/threat_actors/new.html.erb +5 -0
  237. data/app/views/active_stix/threat_actors/show.html.erb +4 -0
  238. data/app/views/active_stix/threat_actors/show.json.jbuilder +1 -0
  239. data/app/views/layouts/active_stix/application.html.erb +16 -0
  240. data/config/routes.rb +39 -0
  241. data/db/migrate/20191204200025_create_active_stix_bundled_objects.rb +11 -0
  242. data/db/migrate/20191204213707_create_active_stix_bundles.rb +10 -0
  243. data/db/migrate/20191204213802_create_active_stix_campaigns.rb +15 -0
  244. data/db/migrate/20191204213926_create_active_stix_course_of_actions.rb +12 -0
  245. data/db/migrate/20191204214020_create_active_stix_cyber_observables.rb +11 -0
  246. data/db/migrate/20191204214955_create_active_stix_email_messages.rb +20 -0
  247. data/db/migrate/20191204215029_create_active_stix_external_references.rb +12 -0
  248. data/db/migrate/20191204215302_create_active_stix_files.rb +23 -0
  249. data/db/migrate/20191204215419_create_active_stix_identities.rb +13 -0
  250. data/db/migrate/20191204215542_create_active_stix_indicator_labels.rb +10 -0
  251. data/db/migrate/20191204215637_create_active_stix_indicators.rb +16 -0
  252. data/db/migrate/20191204215849_create_active_stix_intrusion_sets.rb +15 -0
  253. data/db/migrate/20191204215929_create_active_stix_kill_chain_phases.rb +10 -0
  254. data/db/migrate/20191204215951_create_active_stix_kill_chains.rb +9 -0
  255. data/db/migrate/20191204220149_create_active_stix_malwares.rb +12 -0
  256. data/db/migrate/20191204220539_create_active_stix_marking_definitions.rb +12 -0
  257. data/db/migrate/20191204220853_create_active_stix_observed_data.rb +12 -0
  258. data/db/migrate/20191204220917_create_active_stix_open_vocabularies.rb +9 -0
  259. data/db/migrate/20191204220952_create_active_stix_phases.rb +11 -0
  260. data/db/migrate/20191204221129_create_active_stix_recipients.rb +10 -0
  261. data/db/migrate/20191204221227_create_active_stix_relationships.rb +16 -0
  262. data/db/migrate/20191204221323_create_active_stix_report_objects.rb +11 -0
  263. data/db/migrate/20191204221359_create_active_stix_reports.rb +14 -0
  264. data/db/migrate/20191204221425_create_active_stix_threat_actors.rb +11 -0
  265. data/db/migrate/20191204221454_create_active_stix_tools.rb +12 -0
  266. data/db/migrate/20191204221639_create_active_stix_urls.rb +9 -0
  267. data/db/migrate/20191204221849_create_active_stix_users.rb +22 -0
  268. data/db/migrate/20191205182234_create_active_stix_bcc_refs.rb +10 -0
  269. data/db/migrate/20191205182255_create_active_stix_cc_refs.rb +10 -0
  270. data/db/migrate/20191205182316_create_active_stix_to_refs.rb +10 -0
  271. data/db/migrate/20191212203611_add_spec_version_to_bundles.rb +5 -0
  272. data/db/migrate/20191212215136_create_active_stix_attack_patterns.rb +12 -0
  273. data/db/migrate/20191212220222_create_active_stix_reference_items.rb +11 -0
  274. data/db/migrate/20191213135204_create_active_stix_labels.rb +10 -0
  275. data/db/migrate/20191213140951_create_active_stix_markups.rb +11 -0
  276. data/db/migrate/20191221210537_fix_observed_data.rb +6 -0
  277. data/db/migrate/20191221223602_create_active_stix_artifacts.rb +16 -0
  278. data/db/migrate/20191223075550_change_artifact_ref_to_string.rb +5 -0
  279. data/db/migrate/20191223154000_add_stix_id_to_email_messages.rb +5 -0
  280. data/db/migrate/20200114162245_add_labels_to_active_stix_identities.rb +5 -0
  281. data/db/migrate/20200404223006_add_aliases_to_tools.rb +5 -0
  282. data/db/migrate/20200404223047_add_aliases_to_attack_patterns.rb +5 -0
  283. data/db/migrate/20200404223158_add_aliases_to_malwares.rb +5 -0
  284. data/db/migrate/20200404223210_add_aliases_to_threat_actors.rb +5 -0
  285. data/lib/active_stix.rb +8 -0
  286. data/lib/active_stix/engine.rb +13 -0
  287. data/lib/active_stix/version.rb +3 -0
  288. data/lib/tasks/active_stix_tasks.rake +4 -0
  289. metadata +358 -0
@@ -0,0 +1,26 @@
1
+ class ActiveStix::EmailMessagesController < ApplicationController
2
+ before_action :set_stix_email_message, only: [:show, :edit, :update, :destroy]
3
+
4
+ # GET /stix/email_messages
5
+ # GET /stix/email_messages.json
6
+ def index
7
+ @email_messages = ActiveStix::EmailMessage.order("created_at DESC").page params[:page]
8
+ end
9
+
10
+ # GET /stix/email_messages/1
11
+ # GET /stix/email_messages/1.json
12
+ def show
13
+ end
14
+
15
+ private
16
+
17
+ # Use callbacks to share common setup or constraints between actions.
18
+ def set_stix_email_message
19
+ @email_message = ActiveStix::EmailMessage.find(params[:id])
20
+ end
21
+
22
+ # Never trust parameters from the scary internet, only allow the white list through.
23
+ def stix_email_message_params
24
+ params.require(:email_message).permit(:type, :is_multipart, :date, :content_type, :from_ref, :sender_ref, :to_refs_link_id, :cc_refs_link_id, :bcc_refs_link_id, :subject, :received_lines_link_id, :body, :body_multipart_link_id, :raw_email_ref)
25
+ end
26
+ end
@@ -0,0 +1,62 @@
1
+ require_dependency "active_stix/application_controller"
2
+
3
+ module ActiveStix
4
+ class ExternalReferencesController < ApplicationController
5
+ before_action :set_external_reference, only: [:show, :edit, :update, :destroy]
6
+
7
+ # GET /external_references
8
+ def index
9
+ @external_references = ExternalReference.all
10
+ end
11
+
12
+ # GET /external_references/1
13
+ def show
14
+ end
15
+
16
+ # GET /external_references/new
17
+ def new
18
+ @external_reference = ExternalReference.new
19
+ end
20
+
21
+ # GET /external_references/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /external_references
26
+ def create
27
+ @external_reference = ExternalReference.new(external_reference_params)
28
+
29
+ if @external_reference.save
30
+ redirect_to @external_reference, notice: 'External reference was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /external_references/1
37
+ def update
38
+ if @external_reference.update(external_reference_params)
39
+ redirect_to @external_reference, notice: 'External reference was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /external_references/1
46
+ def destroy
47
+ @external_reference.destroy
48
+ redirect_to external_references_url, notice: 'External reference was successfully destroyed.'
49
+ end
50
+
51
+ private
52
+ # Use callbacks to share common setup or constraints between actions.
53
+ def set_external_reference
54
+ @external_reference = ExternalReference.find(params[:id])
55
+ end
56
+
57
+ # Only allow a trusted parameter "white list" through.
58
+ def external_reference_params
59
+ params.require(:external_reference).permit(:source_name, :description, :url, :external_id)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,74 @@
1
+ class ActiveStix::FilesController < ApplicationController
2
+ before_action :set_stix_file, only: [:show, :edit, :update, :destroy]
3
+
4
+ # GET /stix/files
5
+ # GET /stix/files.json
6
+ def index
7
+ @files = ActiveStix::File.all
8
+ end
9
+
10
+ # GET /stix/files/1
11
+ # GET /stix/files/1.json
12
+ def show
13
+ end
14
+
15
+ # GET /stix/files/new
16
+ def new
17
+ @file = ActiveStix::File.new
18
+ end
19
+
20
+ # GET /stix/files/1/edit
21
+ def edit
22
+ end
23
+
24
+ # POST /stix/files
25
+ # POST /stix/files.json
26
+ def create
27
+ @file = ActiveStix::File.new(stix_file_params)
28
+
29
+ respond_to do |format|
30
+ if @file.save
31
+ format.html { redirect_to @file, notice: 'File was successfully created.' }
32
+ format.json { render :show, status: :created, location: @file }
33
+ else
34
+ format.html { render :new }
35
+ format.json { render json: @file.errors, status: :unprocessable_entity }
36
+ end
37
+ end
38
+ end
39
+
40
+ # PATCH/PUT /stix/files/1
41
+ # PATCH/PUT /stix/files/1.json
42
+ def update
43
+ respond_to do |format|
44
+ if @file.update(stix_file_params)
45
+ format.html { redirect_to @file, notice: 'File was successfully updated.' }
46
+ format.json { render :show, status: :ok, location: @file }
47
+ else
48
+ format.html { render :edit }
49
+ format.json { render json: @file.errors, status: :unprocessable_entity }
50
+ end
51
+ end
52
+ end
53
+
54
+ # DELETE /stix/files/1
55
+ # DELETE /stix/files/1.json
56
+ def destroy
57
+ @file.destroy
58
+ respond_to do |format|
59
+ format.html { redirect_to stix_files_url, notice: 'File was successfully destroyed.' }
60
+ format.json { head :no_content }
61
+ end
62
+ end
63
+
64
+ private
65
+ # Use callbacks to share common setup or constraints between actions.
66
+ def set_stix_file
67
+ @file = ActiveStix::File.find(params[:id])
68
+ end
69
+
70
+ # Never trust parameters from the scary internet, only allow the white list through.
71
+ def stix_file_params
72
+ params.require(:file).permit(:extensions, :hashes, :size, :name, :name_enc, :magic_number_hex, :mime_type, :created_file, :modified_file, :accessed_file, :parent_directory_ref, :is_encrypted, :encryption_algorithm, :decryption_key, :content_ref)
73
+ end
74
+ end
@@ -0,0 +1,128 @@
1
+ class ActiveStix::IdentitiesController < ApplicationController
2
+ before_action :set_stix_identity, only: [:show, :edit, :update, :destroy, :corpus]
3
+
4
+ # GET /stix/identities
5
+ # GET /stix/identities.json
6
+ def index
7
+ @identities = ActiveStix::Identity.where("name like ?", "%#{params[:search]}%").order("name").page params[:page]
8
+ end
9
+
10
+ # GET /stix/identities/1
11
+ # GET /stix/identities/1.json
12
+ def show
13
+ if @identity.identity_class == 'organization'
14
+ @employment_records = @identity.source_relationships.where(relationship_type: "employs").page(params[:page])
15
+ @threat_groups = @identity.threat_groups
16
+ @attack_patterns = @identity.attack_patterns
17
+ else
18
+ case params[:mailbox]
19
+ when 'sent'
20
+ @mailbox = "Sent"
21
+ @sent_email_messages = @identity.email_messages.includes(:eml).order("created_at DESC").page(params[:page])
22
+ when 'received'
23
+ @mailbox = "Received"
24
+ @received_email_messages = @identity.to_refs.order("created_at DESC").page(params[:page])
25
+ else
26
+ @mailbox = "Sent"
27
+ @sent_email_messages = @identity.email_messages.includes(:eml).order("created_at DESC").page(params[:page])
28
+ end
29
+ end
30
+ end
31
+
32
+ # GET /stix/identities/new
33
+ def new
34
+ @identity = ActiveStix::Identity.new
35
+ end
36
+
37
+ # GET /stix/identities/1/edit
38
+ def edit
39
+ end
40
+
41
+ # POST /stix/identities
42
+ # POST /stix/identities.json
43
+ def create
44
+ @identity = ActiveStix::Identity.new(stix_identity_params)
45
+ @identity.identity_class = "organization"
46
+
47
+ respond_to do |format|
48
+ if @identity.save
49
+ Ldap.stix_ingest(@identity, params[:identity][:uploaded_file].path)
50
+ format.html {redirect_to @identity, notice: 'Identity was successfully created.'}
51
+ format.json {render :show, status: :created, location: @identity}
52
+ else
53
+ format.html {render :new}
54
+ format.json {render json: @identity.errors, status: :unprocessable_entity}
55
+ end
56
+ end
57
+ end
58
+
59
+ # PATCH/PUT /stix/identities/1
60
+ # PATCH/PUT /stix/identities/1.json
61
+ def update
62
+ respond_to do |format|
63
+ if @identity.update(stix_identity_params)
64
+ format.html {redirect_to @identity, notice: 'Identity was successfully updated.'}
65
+ format.json {render :show, status: :ok, location: @identity}
66
+ else
67
+ format.html {render :edit}
68
+ format.json {render json: @identity.errors, status: :unprocessable_entity}
69
+ end
70
+ end
71
+ end
72
+
73
+ # DELETE /stix/identities/1
74
+ # DELETE /stix/identities/1.json
75
+ def destroy
76
+ @identity.destroy
77
+ respond_to do |format|
78
+ format.html {redirect_to stix_identities_url, notice: 'Identity was successfully destroyed.'}
79
+ format.json {head :no_content}
80
+ end
81
+ end
82
+
83
+ def employment
84
+ organization = ActiveStix::Identity.find(params[:organization_id])
85
+ @identity = ActiveStix::Identity.find(params[:identity_id])
86
+
87
+ respond_to do |format|
88
+ if ActiveStix::Identity.employ(@identity, organization)
89
+ format.html {redirect_to @identity, notice: 'Identity was successfully updated.'}
90
+ format.json {render :show, status: :ok, location: @identity}
91
+ else
92
+ format.html {render @identity, notice: 'Could not create employment.'}
93
+ format.json {render json: @identity.errors, status: :unprocessable_entity}
94
+ end
95
+ end
96
+
97
+ end
98
+
99
+ def attribution
100
+
101
+ organization = ActiveStix::Identity.find(params[:identity_id])
102
+ threat_actor = ActiveStix::ThreatActor.find(params[:threat_actor_id])
103
+ ActiveStix::Relationship.relate(threat_actor, organization, "attributed-to")
104
+
105
+ respond_to do |format|
106
+ format.html {redirect_to organization, notice: 'Identity was successfully updated.'}
107
+ format.json {render :show, status: :ok, location: organization}
108
+ end
109
+ end
110
+
111
+ def corpus
112
+ #download all the email attachments in an evaluation
113
+ send_data(File.read(@identity.corpus(params[:mailbox])), :type => 'application/zip', :disposition => "attachment")
114
+ end
115
+
116
+ private
117
+
118
+ # Use callbacks to share common setup or constraints between actions.
119
+ def set_stix_identity
120
+ @identity = ActiveStix::Identity.find(params[:id] || params[:identity_id])
121
+ end
122
+
123
+ # Never trust parameters from the scary internet, only allow the white list through.
124
+ def stix_identity_params
125
+ params.require(:identity).permit(:name, :description, :identity_class, :contact_information, :known_person, :legitimate_organization)
126
+ end
127
+
128
+ end
@@ -0,0 +1,62 @@
1
+ require_dependency "active_stix/application_controller"
2
+
3
+ module ActiveStix
4
+ class IndicatorLabelsController < ApplicationController
5
+ before_action :set_indicator_label, only: [:show, :edit, :update, :destroy]
6
+
7
+ # GET /indicator_labels
8
+ def index
9
+ @indicator_labels = IndicatorLabel.all
10
+ end
11
+
12
+ # GET /indicator_labels/1
13
+ def show
14
+ end
15
+
16
+ # GET /indicator_labels/new
17
+ def new
18
+ @indicator_label = IndicatorLabel.new
19
+ end
20
+
21
+ # GET /indicator_labels/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /indicator_labels
26
+ def create
27
+ @indicator_label = IndicatorLabel.new(indicator_label_params)
28
+
29
+ if @indicator_label.save
30
+ redirect_to @indicator_label, notice: 'Indicator label was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /indicator_labels/1
37
+ def update
38
+ if @indicator_label.update(indicator_label_params)
39
+ redirect_to @indicator_label, notice: 'Indicator label was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /indicator_labels/1
46
+ def destroy
47
+ @indicator_label.destroy
48
+ redirect_to indicator_labels_url, notice: 'Indicator label was successfully destroyed.'
49
+ end
50
+
51
+ private
52
+ # Use callbacks to share common setup or constraints between actions.
53
+ def set_indicator_label
54
+ @indicator_label = IndicatorLabel.find(params[:id])
55
+ end
56
+
57
+ # Only allow a trusted parameter "white list" through.
58
+ def indicator_label_params
59
+ params.require(:indicator_label).permit(:label_id, :indicator_id)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,62 @@
1
+ require_dependency "active_stix/application_controller"
2
+
3
+ module ActiveStix
4
+ class IndicatorsController < ApplicationController
5
+ before_action :set_indicator, only: [:show, :edit, :update, :destroy]
6
+
7
+ # GET /indicators
8
+ def index
9
+ @indicators = Indicator.all
10
+ end
11
+
12
+ # GET /indicators/1
13
+ def show
14
+ end
15
+
16
+ # GET /indicators/new
17
+ def new
18
+ @indicator = Indicator.new
19
+ end
20
+
21
+ # GET /indicators/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /indicators
26
+ def create
27
+ @indicator = Indicator.new(indicator_params)
28
+
29
+ if @indicator.save
30
+ redirect_to @indicator, notice: 'Indicator was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /indicators/1
37
+ def update
38
+ if @indicator.update(indicator_params)
39
+ redirect_to @indicator, notice: 'Indicator was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /indicators/1
46
+ def destroy
47
+ @indicator.destroy
48
+ redirect_to indicators_url, notice: 'Indicator was successfully destroyed.'
49
+ end
50
+
51
+ private
52
+ # Use callbacks to share common setup or constraints between actions.
53
+ def set_indicator
54
+ @indicator = Indicator.find(params[:id])
55
+ end
56
+
57
+ # Only allow a trusted parameter "white list" through.
58
+ def indicator_params
59
+ params.require(:indicator).permit(:name, :labels, :description, :pattern, :valid_from, :valid_until, :kill_chain_phases, :active_stix_id)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,62 @@
1
+ require_dependency "active_stix/application_controller"
2
+
3
+ module ActiveStix
4
+ class IntrusionSetsController < ApplicationController
5
+ before_action :set_intrusion_set, only: [:show, :edit, :update, :destroy]
6
+
7
+ # GET /intrusion_sets
8
+ def index
9
+ @intrusion_sets = IntrusionSet.all
10
+ end
11
+
12
+ # GET /intrusion_sets/1
13
+ def show
14
+ end
15
+
16
+ # GET /intrusion_sets/new
17
+ def new
18
+ @intrusion_set = IntrusionSet.new
19
+ end
20
+
21
+ # GET /intrusion_sets/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /intrusion_sets
26
+ def create
27
+ @intrusion_set = IntrusionSet.new(intrusion_set_params)
28
+
29
+ if @intrusion_set.save
30
+ redirect_to @intrusion_set, notice: 'Intrusion set was successfully created.'
31
+ else
32
+ render :new
33
+ end
34
+ end
35
+
36
+ # PATCH/PUT /intrusion_sets/1
37
+ def update
38
+ if @intrusion_set.update(intrusion_set_params)
39
+ redirect_to @intrusion_set, notice: 'Intrusion set was successfully updated.'
40
+ else
41
+ render :edit
42
+ end
43
+ end
44
+
45
+ # DELETE /intrusion_sets/1
46
+ def destroy
47
+ @intrusion_set.destroy
48
+ redirect_to intrusion_sets_url, notice: 'Intrusion set was successfully destroyed.'
49
+ end
50
+
51
+ private
52
+ # Use callbacks to share common setup or constraints between actions.
53
+ def set_intrusion_set
54
+ @intrusion_set = IntrusionSet.find(params[:id])
55
+ end
56
+
57
+ # Only allow a trusted parameter "white list" through.
58
+ def intrusion_set_params
59
+ params.require(:intrusion_set).permit(:name, :description, :first_seen, :last_seen, :active_stix_id, :aliases, :object_marking_refs)
60
+ end
61
+ end
62
+ end