contentctl 4.0.4__tar.gz → 4.0.5__tar.gz

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 (171) hide show
  1. {contentctl-4.0.4 → contentctl-4.0.5}/PKG-INFO +1 -1
  2. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/new_content.py +12 -4
  3. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/input/new_content_questions.py +0 -5
  4. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/story_tags.py +2 -0
  5. contentctl-4.0.5/contentctl/templates/detections/application/.gitkeep +0 -0
  6. contentctl-4.0.5/contentctl/templates/detections/cloud/.gitkeep +0 -0
  7. contentctl-4.0.5/contentctl/templates/detections/network/.gitkeep +0 -0
  8. contentctl-4.0.5/contentctl/templates/detections/web/.gitkeep +0 -0
  9. {contentctl-4.0.4 → contentctl-4.0.5}/pyproject.toml +1 -1
  10. {contentctl-4.0.4 → contentctl-4.0.5}/LICENSE.md +0 -0
  11. {contentctl-4.0.4 → contentctl-4.0.5}/README.md +0 -0
  12. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/__init__.py +0 -0
  13. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/acs_deploy.py +0 -0
  14. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/apav_deploy.py +0 -0
  15. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/api_deploy.py +0 -0
  16. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/build.py +0 -0
  17. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/convert.py +0 -0
  18. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/DetectionTestingManager.py +0 -0
  19. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/GitService.py +0 -0
  20. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/generate_detection_coverage_badge.py +0 -0
  21. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/infrastructures/DetectionTestingInfrastructure.py +0 -0
  22. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/infrastructures/DetectionTestingInfrastructureContainer.py +0 -0
  23. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/infrastructures/DetectionTestingInfrastructureServer.py +0 -0
  24. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/progress_bar.py +0 -0
  25. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/views/DetectionTestingView.py +0 -0
  26. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/views/DetectionTestingViewCLI.py +0 -0
  27. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/views/DetectionTestingViewFile.py +0 -0
  28. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/detection_testing/views/DetectionTestingViewWeb.py +0 -0
  29. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/doc_gen.py +0 -0
  30. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/initialize.py +0 -0
  31. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/initialize_old.py +0 -0
  32. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/inspect.py +0 -0
  33. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/release_notes.py +0 -0
  34. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/reporting.py +0 -0
  35. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/test.py +0 -0
  36. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/actions/validate.py +0 -0
  37. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/contentctl.py +0 -0
  38. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/enrichments/attack_enrichment.py +0 -0
  39. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/enrichments/cve_enrichment.py +0 -0
  40. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/enrichments/splunk_app_enrichment.py +0 -0
  41. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/helper/link_validator.py +0 -0
  42. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/helper/logger.py +0 -0
  43. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/helper/utils.py +0 -0
  44. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/input/backend_splunk_ba.py +0 -0
  45. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/input/director.py +0 -0
  46. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/input/sigma_converter.py +0 -0
  47. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/input/ssa_detection_builder.py +0 -0
  48. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/input/yml_reader.py +0 -0
  49. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/abstract_security_content_objects/detection_abstract.py +0 -0
  50. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/abstract_security_content_objects/security_content_object_abstract.py +0 -0
  51. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/alert_action.py +0 -0
  52. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/atomic.py +0 -0
  53. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/base_test.py +0 -0
  54. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/base_test_result.py +0 -0
  55. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/baseline.py +0 -0
  56. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/baseline_tags.py +0 -0
  57. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/config.py +0 -0
  58. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/constants.py +0 -0
  59. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/correlation_search.py +0 -0
  60. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/data_source.py +0 -0
  61. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment.py +0 -0
  62. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment_email.py +0 -0
  63. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment_notable.py +0 -0
  64. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment_phantom.py +0 -0
  65. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment_rba.py +0 -0
  66. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment_scheduling.py +0 -0
  67. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/deployment_slack.py +0 -0
  68. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/detection.py +0 -0
  69. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/detection_tags.py +0 -0
  70. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/enums.py +0 -0
  71. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/integration_test.py +0 -0
  72. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/integration_test_result.py +0 -0
  73. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/investigation.py +0 -0
  74. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/investigation_tags.py +0 -0
  75. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/lookup.py +0 -0
  76. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/macro.py +0 -0
  77. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/mitre_attack_enrichment.py +0 -0
  78. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/notable_action.py +0 -0
  79. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/observable.py +0 -0
  80. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/playbook.py +0 -0
  81. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/playbook_tags.py +0 -0
  82. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/risk_analysis_action.py +0 -0
  83. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/risk_object.py +0 -0
  84. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/security_content_object.py +0 -0
  85. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/ssa_detection.py +0 -0
  86. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/ssa_detection_tags.py +0 -0
  87. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/story.py +0 -0
  88. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/test_group.py +0 -0
  89. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/threat_object.py +0 -0
  90. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/unit_test.py +0 -0
  91. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/unit_test_attack_data.py +0 -0
  92. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/unit_test_baseline.py +0 -0
  93. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/unit_test_old.py +0 -0
  94. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/unit_test_result.py +0 -0
  95. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/objects/unit_test_ssa.py +0 -0
  96. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/api_json_output.py +0 -0
  97. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/attack_nav_output.py +0 -0
  98. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/attack_nav_writer.py +0 -0
  99. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/ba_yml_output.py +0 -0
  100. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/conf_output.py +0 -0
  101. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/conf_writer.py +0 -0
  102. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/detection_writer.py +0 -0
  103. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/doc_md_output.py +0 -0
  104. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/finding_report_writer.py +0 -0
  105. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/jinja_writer.py +0 -0
  106. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/json_writer.py +0 -0
  107. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/new_content_yml_output.py +0 -0
  108. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/svg_output.py +0 -0
  109. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/analyticstories_detections.j2 +0 -0
  110. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/analyticstories_investigations.j2 +0 -0
  111. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/analyticstories_stories.j2 +0 -0
  112. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/app.conf.j2 +0 -0
  113. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/app.manifest.j2 +0 -0
  114. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/collections.j2 +0 -0
  115. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/content-version.j2 +0 -0
  116. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/detection_count.j2 +0 -0
  117. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/detection_coverage.j2 +0 -0
  118. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_detection_page.j2 +0 -0
  119. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_detections.j2 +0 -0
  120. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_navigation.j2 +0 -0
  121. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_navigation_pages.j2 +0 -0
  122. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_playbooks.j2 +0 -0
  123. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_playbooks_page.j2 +0 -0
  124. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_stories.j2 +0 -0
  125. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/doc_story_page.j2 +0 -0
  126. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/es_investigations_investigations.j2 +0 -0
  127. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/es_investigations_stories.j2 +0 -0
  128. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/finding_report.j2 +0 -0
  129. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/header.j2 +0 -0
  130. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/macros.j2 +0 -0
  131. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/panel.j2 +0 -0
  132. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/savedsearches_baselines.j2 +0 -0
  133. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/savedsearches_detections.j2 +0 -0
  134. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/savedsearches_investigations.j2 +0 -0
  135. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/transforms.j2 +0 -0
  136. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/templates/workflow_actions.j2 +0 -0
  137. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/yml_output.py +0 -0
  138. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/output/yml_writer.py +0 -0
  139. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/README +0 -0
  140. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_default.yml +0 -0
  141. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/README/essoc_story_detail.txt +0 -0
  142. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/README/essoc_summary.txt +0 -0
  143. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/README/essoc_usage_dashboard.txt +0 -0
  144. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/README.md +0 -0
  145. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/analytic_stories.conf +0 -0
  146. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/app.conf +0 -0
  147. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/commands.conf +0 -0
  148. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/content-version.conf +0 -0
  149. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/data/ui/nav/default.xml +0 -0
  150. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/data/ui/views/escu_summary.xml +0 -0
  151. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/data/ui/views/feedback.xml +0 -0
  152. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/distsearch.conf +0 -0
  153. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/usage_searches.conf +0 -0
  154. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/default/use_case_library.conf +0 -0
  155. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/lookups/mitre_enrichment.csv +0 -0
  156. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/metadata/default.meta +0 -0
  157. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/static/appIcon.png +0 -0
  158. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/static/appIconAlt.png +0 -0
  159. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/static/appIconAlt_2x.png +0 -0
  160. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/app_template/static/appIcon_2x.png +0 -0
  161. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/datamodels_cim.conf +0 -0
  162. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/datamodels_custom.conf +0 -0
  163. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/deployments/escu_default_configuration_anomaly.yml +0 -0
  164. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/deployments/escu_default_configuration_baseline.yml +0 -0
  165. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/deployments/escu_default_configuration_correlation.yml +0 -0
  166. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/deployments/escu_default_configuration_hunting.yml +0 -0
  167. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/deployments/escu_default_configuration_ttp.yml +0 -0
  168. {contentctl-4.0.4/contentctl/templates/detections → contentctl-4.0.5/contentctl/templates/detections/endpoint}/anomalous_usage_of_7zip.yml +0 -0
  169. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/macros/security_content_ctime.yml +0 -0
  170. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/macros/security_content_summariesonly.yml +0 -0
  171. {contentctl-4.0.4 → contentctl-4.0.5}/contentctl/templates/stories/cobalt_strike.yml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: contentctl
3
- Version: 4.0.4
3
+ Version: 4.0.5
4
4
  Summary: Splunk Content Control Tool
5
5
  License: Apache 2.0
6
6
  Author: STRT
@@ -19,16 +19,21 @@ class NewContent:
19
19
  answers = questionary.prompt(questions)
20
20
  answers.update(answers)
21
21
  answers['name'] = answers['detection_name']
22
+ del answers['detection_name']
22
23
  answers['id'] = str(uuid.uuid4())
23
24
  answers['version'] = 1
24
25
  answers['date'] = datetime.today().strftime('%Y-%m-%d')
25
26
  answers['author'] = answers['detection_author']
27
+ del answers['detection_author']
26
28
  answers['data_source'] = answers['data_source']
27
29
  answers['type'] = answers['detection_type']
30
+ del answers['detection_type']
28
31
  answers['status'] = "production" #start everything as production since that's what we INTEND the content to become
29
32
  answers['description'] = 'UPDATE_DESCRIPTION'
30
33
  file_name = answers['name'].replace(' ', '_').replace('-','_').replace('.','_').replace('/','_').lower()
34
+ answers['kind'] = answers['detection_kind']
31
35
  answers['search'] = answers['detection_search'] + ' | `' + file_name + '_filter`'
36
+ del answers['detection_search']
32
37
  answers['how_to_implement'] = 'UPDATE_HOW_TO_IMPLEMENT'
33
38
  answers['known_false_positives'] = 'UPDATE_KNOWN_FALSE_POSITIVES'
34
39
  answers['references'] = ['REFERENCE']
@@ -52,7 +57,7 @@ class NewContent:
52
57
  'name': "True Positive Test",
53
58
  'attack_data': [
54
59
  {
55
- 'data': "Enter URL for Dataset Here. This may also be a relative or absolute path on your local system for testing.",
60
+ 'data': "https://github.com/splunk/contentctl/wiki",
56
61
  "sourcetype": "UPDATE SOURCETYPE",
57
62
  "source": "UPDATE SOURCE"
58
63
  }
@@ -65,18 +70,21 @@ class NewContent:
65
70
  questions = NewContentQuestions.get_questions_story()
66
71
  answers = questionary.prompt(questions)
67
72
  answers['name'] = answers['story_name']
73
+ del answers['story_name']
68
74
  answers['id'] = str(uuid.uuid4())
69
75
  answers['version'] = 1
70
76
  answers['date'] = datetime.today().strftime('%Y-%m-%d')
71
77
  answers['author'] = answers['story_author']
78
+ del answers['story_author']
72
79
  answers['description'] = 'UPDATE_DESCRIPTION'
73
80
  answers['narrative'] = 'UPDATE_NARRATIVE'
74
81
  answers['references'] = []
75
82
  answers['tags'] = dict()
76
- answers['tags']['analytic_story'] = answers['name']
77
83
  answers['tags']['category'] = answers['category']
84
+ del answers['category']
78
85
  answers['tags']['product'] = ['Splunk Enterprise','Splunk Enterprise Security','Splunk Cloud']
79
86
  answers['tags']['usecase'] = answers['usecase']
87
+ del answers['usecase']
80
88
  answers['tags']['cve'] = ['UPDATE WITH CVE(S) IF APPLICABLE']
81
89
  return answers
82
90
 
@@ -84,13 +92,13 @@ class NewContent:
84
92
  def execute(self, input_dto: new) -> None:
85
93
  if input_dto.type == NewContentType.detection:
86
94
  content_dict = self.buildDetection()
87
- subdirectory = pathlib.Path('detections') / content_dict.get('type')
95
+ subdirectory = pathlib.Path('detections') / content_dict.pop('detection_kind')
88
96
  elif input_dto.type == NewContentType.story:
89
97
  content_dict = self.buildStory()
90
98
  subdirectory = pathlib.Path('stories')
91
99
  else:
92
100
  raise Exception(f"Unsupported new content type: [{input_dto.type}]")
93
-
101
+
94
102
  full_output_path = input_dto.path / subdirectory / SecurityContentObject_Abstract.contentNameToFileName(content_dict.get('name'))
95
103
  YmlWriter.writeYmlFile(str(full_output_path), content_dict)
96
104
 
@@ -27,11 +27,6 @@ class NewContentQuestions:
27
27
  'message': 'enter author name',
28
28
  'name': 'detection_author',
29
29
  },
30
- {
31
- "type": "text",
32
- "message": "enter author name",
33
- "name": "detection_author",
34
- },
35
30
  {
36
31
  "type": "select",
37
32
  "message": "select a detection type",
@@ -14,6 +14,8 @@ class StoryUseCase(str,Enum):
14
14
  APPLICATION_SECURITY = "Application Security"
15
15
  SECURITY_MONITORING = "Security Monitoring"
16
16
  ADVANCED_THREAD_DETECTION = "Advanced Threat Detection"
17
+ INSIDER_THREAT = "Insider Threat"
18
+ OTHER = "Other"
17
19
 
18
20
  class StoryTags(BaseModel):
19
21
  model_config = ConfigDict(extra='forbid', use_enum_values=True)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "contentctl"
3
- version = "4.0.4"
3
+ version = "4.0.5"
4
4
  description = "Splunk Content Control Tool"
5
5
  authors = ["STRT <research@splunk.com>"]
6
6
  license = "Apache 2.0"
File without changes
File without changes