contentctl 4.2.4__py3-none-any.whl → 4.2.5__py3-none-any.whl

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.
@@ -37,8 +37,9 @@ class Initialize:
37
37
  #Throw an exception if the target exists
38
38
  shutil.copytree(source_directory, target_directory, dirs_exist_ok=False)
39
39
 
40
- #Create the config file as well
41
- shutil.copyfile(pathlib.Path(os.path.dirname(__file__))/'../templates/README','README')
40
+ # Create a README.md file. Note that this is the README.md for the repository, not the
41
+ # one which will actually be packaged into the app. That is located in the app_template folder.
42
+ shutil.copyfile(pathlib.Path(os.path.dirname(__file__))/'../templates/README.md','README.md')
42
43
 
43
44
 
44
45
  print(f"The app '{config.app.title}' has been initialized. "
contentctl/contentctl.py CHANGED
@@ -229,4 +229,7 @@ def main():
229
229
  print(e)
230
230
 
231
231
  sys.exit(1)
232
-
232
+
233
+
234
+ if __name__ == "__main__":
235
+ main()
@@ -104,8 +104,12 @@ class TimeoutConfig(int, Enum):
104
104
  # base amount to sleep for before beginning exponential backoff during testing
105
105
  BASE_SLEEP = 60
106
106
 
107
- # max amount to wait before timing out during exponential backoff
108
- MAX_SLEEP = 210
107
+ # NOTE: Some detections take longer to generate their risk/notables than other; testing has
108
+ # shown 270s to likely be sufficient for all detections in 99% of runs; however we have
109
+ # encountered a handful of transient failures in the last few months. Since our success rate
110
+ # is at 100% now, we will round this to a flat 300s to accomodate these outliers.
111
+ # Max amount to wait before timing out during exponential backoff
112
+ MAX_SLEEP = 300
109
113
 
110
114
 
111
115
  # TODO (#226): evaluate sane defaults for timeframe for integration testing (e.g. 5y is good
@@ -169,15 +169,8 @@ class ConfOutput:
169
169
 
170
170
  def packageAppSlim(self) -> None:
171
171
 
172
-
173
- # input_app_path = pathlib.Path(self.config.build.path_root)/f"{self.config.build.name}"
174
-
175
- # readme_file = pathlib.Path("README")
176
- # if not readme_file.is_file():
177
- # raise Exception("The README file does not exist in this directory. Cannot build app.")
178
- # shutil.copyfile(readme_file, input_app_path/readme_file.name)
179
-
180
-
172
+ raise Exception("Packaging with splunk-packaging-toolkit not currently supported as slim only supports Python 3.7. "
173
+ "Please raise an issue in the contentctl GitHub if you encounter this exception.")
181
174
  try:
182
175
  import slim
183
176
  from slim.utils import SlimLogger
@@ -0,0 +1,10 @@
1
+ # Contentctl App Readme
2
+
3
+ This README file was automatically created by contentctl init.
4
+ Please fill it with meaningful information that describes your app.
5
+
6
+ Note that this file can contain Markdown and will be richly rendered in GitHub or most other Version Control Systems.
7
+
8
+
9
+ Note: This readme file is actually DIFFERENT from the one that will be packaged as part of your App.
10
+ That file is located at app_template/README.md.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: contentctl
3
- Version: 4.2.4
3
+ Version: 4.2.5
4
4
  Summary: Splunk Content Control Tool
5
5
  License: Apache 2.0
6
6
  Author: STRT
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3.11
12
12
  Classifier: Programming Language :: Python :: 3.12
13
13
  Requires-Dist: Jinja2 (>=3.1.4,<4.0.0)
14
14
  Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
15
- Requires-Dist: attackcti (>=0.3.7,<0.4.0)
15
+ Requires-Dist: attackcti (>=0.3.7,<0.5.0)
16
16
  Requires-Dist: bottle (>=0.12.25,<0.13.0)
17
17
  Requires-Dist: docker (>=7.1.0,<8.0.0)
18
18
  Requires-Dist: gitpython (>=3.1.43,<4.0.0)
@@ -14,7 +14,7 @@ contentctl/actions/detection_testing/views/DetectionTestingViewCLI.py,sha256=Mos
14
14
  contentctl/actions/detection_testing/views/DetectionTestingViewFile.py,sha256=OJgmQgoVnzy7p1MN9bDyKGUhFWKzQc6ejc4F87uZG1I,1123
15
15
  contentctl/actions/detection_testing/views/DetectionTestingViewWeb.py,sha256=6mecacXFoTJxcHiRZSnlHos5Hca1jdedEEZfiIAhaJg,4706
16
16
  contentctl/actions/doc_gen.py,sha256=YNc1VYA0ikL1hWDHYjfEOmUkfhy8PEIdvTyC4ZLxQRY,863
17
- contentctl/actions/initialize.py,sha256=BRKmvLr50dnL4SnUEGM6jRfAghfZAmk0hFFWIZcKpxg,1809
17
+ contentctl/actions/initialize.py,sha256=Ifi13REBwQyUfCHma6IzjM_Z8uYEZ3Qz8kmP0WIFbJQ,1975
18
18
  contentctl/actions/initialize_old.py,sha256=0qXbW_fNDvkcnEeL6Zpte8d-hpTu1REyzHsXOCY-YB8,9333
19
19
  contentctl/actions/inspect.py,sha256=6gVVKmV5CUUYOkNNVTMPKj9bM1uXVthgGCoFKZGDeS8,12628
20
20
  contentctl/actions/new_content.py,sha256=o5ZYBQ216RN6TnW_wRxVGJybx2SsJ7ht4PAi1dw45Yg,6076
@@ -23,7 +23,7 @@ contentctl/actions/reporting.py,sha256=MJEmvmoA1WnSFZEU9QM6daL_W94oOX0WXAcX1qAM2
23
23
  contentctl/actions/test.py,sha256=dx7f750_MrlvysxOmOdIro1bH0iVKF4K54TSwhvU2MU,5146
24
24
  contentctl/actions/validate.py,sha256=2iFhyhh_LXyMAXtkxnYai7CONSVx4Hb8RftEs_Z_7mI,5649
25
25
  contentctl/api.py,sha256=FBOpRhbBCBdjORmwe_8MPQ3PRZ6T0KrrFcfKovVFkug,6343
26
- contentctl/contentctl.py,sha256=Vr2cuvaPjpJpYvD9kVoYq7iD6rhLQEpTKmcGoq4emhA,10470
26
+ contentctl/contentctl.py,sha256=SxWFMYquSYQAATrTBpvfj4j5DRedsOF2xO96ASs74wA,10505
27
27
  contentctl/enrichments/attack_enrichment.py,sha256=dVwXcULSeZJuQbeTlPpKDyEB9Y6uCy0UGWI83gPLTI0,6735
28
28
  contentctl/enrichments/cve_enrichment.py,sha256=SjiytaZktVNbfICXcZ2vZzBiQpOkug5taPtiJK-S1OE,2313
29
29
  contentctl/enrichments/splunk_app_enrichment.py,sha256=zDNHFLZTi2dJ1gdnh0sHkD6F1VtkblqFnhacFcCMBfc,3418
@@ -47,7 +47,7 @@ contentctl/objects/baseline.py,sha256=Lb1vJKtDdlDrzWgrdkC9oQao_TnRrOxSwOWHf4trta
47
47
  contentctl/objects/baseline_tags.py,sha256=fVhLF-NmisavybB_idu3N0Con0Ymj8clKfRMkWzBB-k,1762
48
48
  contentctl/objects/config.py,sha256=ha18aqKmkYqAvM8YI124q6JYxesYRon9rc0NMWFzCS4,43762
49
49
  contentctl/objects/constants.py,sha256=1LjiK9A7t0aHHkJz2mrW-DImdW1P98GPssTwmwNNI_M,3468
50
- contentctl/objects/correlation_search.py,sha256=QmYUS_yIkLT6sdAodsbc_aHuLHcL9CmY1uBcQZJB8OY,47933
50
+ contentctl/objects/correlation_search.py,sha256=QZp1u-dwTZl9hkUOlJdHQ9h4Hp2bDHWWCKtrp3mvIUY,48310
51
51
  contentctl/objects/data_source.py,sha256=aRr6lHu-EtGmi6J2nXKD7i2ozUPtp7X-vDkQiutvD3I,1545
52
52
  contentctl/objects/deployment.py,sha256=Qc6M4yeOvxjqFKR8sfjd4CG06AbVheTOqP1mwqo4t8s,2651
53
53
  contentctl/objects/deployment_email.py,sha256=Zu9cXZdfOP6noa_mZpiK1GrYCTgi3Mim94iLGjE674c,147
@@ -93,7 +93,7 @@ contentctl/output/api_json_output.py,sha256=n3OTd5z-Vkmsn7ny6QCAar_jSMNuuJfzAQa7
93
93
  contentctl/output/attack_nav_output.py,sha256=95iKV8U9BMMgqh6cCOw1S89Ln73xmJGgJPHTYR0L7hA,2304
94
94
  contentctl/output/attack_nav_writer.py,sha256=64ILZLmNbh2XLmbopgENkeo6t-4SRRG8xZXBmtpNd4g,2219
95
95
  contentctl/output/ba_yml_output.py,sha256=Lrk13Q9-f71i3c0oNrT50G94PxdogG4k4-MI-rTMOAo,5950
96
- contentctl/output/conf_output.py,sha256=qCRT77UKNFCe4AufeBV8Uz9lkPqgpGzU1Y149RuEnis,10147
96
+ contentctl/output/conf_output.py,sha256=7HcHM9pJLNnan1Kq_7ozvs5iOgfzqdKbO6gwxUZJVnc,9994
97
97
  contentctl/output/conf_writer.py,sha256=2TaCAPEtU-bMa7A2m7xOxh93PMpzIdhwiHiPLUCeCB4,8281
98
98
  contentctl/output/data_source_writer.py,sha256=ubFjm6XJ4T2d3oqfKwDFasITHeDj3HFmegqVN--5_ME,1635
99
99
  contentctl/output/detection_writer.py,sha256=AzxbssNLmsNIOaYKotew5-ONoyq1cQpKSGy3pe191B0,960
@@ -133,7 +133,7 @@ contentctl/output/templates/transforms.j2,sha256=-cSoie0LgJwibtW-GMhc9BQlmS6h1s1
133
133
  contentctl/output/templates/workflow_actions.j2,sha256=DFoZVnCa8dMRHjW2AdpoydBC0THgiH_W-Nx7WI4-uR4,925
134
134
  contentctl/output/yml_output.py,sha256=xtTD3f_WWy8O6Joi4S8gG9paot8JpQFRlwt17_ek5B4,2682
135
135
  contentctl/output/yml_writer.py,sha256=zZJ3aK-l0YQXbDweS-XZKejHblyhy2eliSthZZEogUs,1668
136
- contentctl/templates/README,sha256=Hg4LI9g_ss8o3u060woDkhunLXHMtKOhuFK2i-xJpuM,133
136
+ contentctl/templates/README.md,sha256=GoRmywUqwnjaehY_GLmGqxsFXCLP9plpDYwB6W6nVPs,428
137
137
  contentctl/templates/app_default.yml,sha256=kDeYdJbfMADQPcho8iH1nqgTFrHNt4EXnIJjPHc2unI,6390
138
138
  contentctl/templates/app_template/README/essoc_story_detail.txt,sha256=7hFPBfPpRH28TFl7QchKceZLewQqgFjRWDlmxZzwpmo,897
139
139
  contentctl/templates/app_template/README/essoc_summary.txt,sha256=u6wYNYBqmmm7Kn_g_Uex8rRzMQ995MUXCavla95Y1dw,2538
@@ -169,8 +169,8 @@ contentctl/templates/detections/web/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
169
169
  contentctl/templates/macros/security_content_ctime.yml,sha256=Gg1YNllHVsX_YB716H1SJLWzxXZEfuJlnsgB2fuyoHU,159
170
170
  contentctl/templates/macros/security_content_summariesonly.yml,sha256=9BYUxAl2E4Nwh8K19F3AJS8Ka7ceO6ZDBjFiO3l3LY0,162
171
171
  contentctl/templates/stories/cobalt_strike.yml,sha256=rlaXxMN-5k8LnKBLPafBoksyMtlmsPMHPJOjTiMiZ-M,3063
172
- contentctl-4.2.4.dist-info/LICENSE.md,sha256=hQWUayRk-pAiOZbZnuy8djmoZkjKBx8MrCFpW-JiOgo,11344
173
- contentctl-4.2.4.dist-info/METADATA,sha256=3RsDM2IVtmjpNfbLXXS8MTkQnLYEjngx6yQyJxOeJoY,19386
174
- contentctl-4.2.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
175
- contentctl-4.2.4.dist-info/entry_points.txt,sha256=5bjZ2NkbQfSwK47uOnA77yCtjgXhvgxnmCQiynRF_-U,57
176
- contentctl-4.2.4.dist-info/RECORD,,
172
+ contentctl-4.2.5.dist-info/LICENSE.md,sha256=hQWUayRk-pAiOZbZnuy8djmoZkjKBx8MrCFpW-JiOgo,11344
173
+ contentctl-4.2.5.dist-info/METADATA,sha256=AKuXizf44e0rPSDHXX6viX88kBtY4M8RMh01jOEucqU,19386
174
+ contentctl-4.2.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
175
+ contentctl-4.2.5.dist-info/entry_points.txt,sha256=5bjZ2NkbQfSwK47uOnA77yCtjgXhvgxnmCQiynRF_-U,57
176
+ contentctl-4.2.5.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- This README file was automatically created by contentctl init.
2
- Please fill it with meaningful information that describes your app.