contentctl 5.5.0__tar.gz → 5.5.3__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.
- {contentctl-5.5.0 → contentctl-5.5.3}/PKG-INFO +1 -1
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/build.py +4 -2
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/abstract_security_content_objects/security_content_object_abstract.py +10 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/api_json_output.py +19 -7
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/savedsearches_detections.j2 +1 -1
- {contentctl-5.5.0 → contentctl-5.5.3}/pyproject.toml +1 -1
- {contentctl-5.5.0 → contentctl-5.5.3}/LICENSE.md +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/README.md +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/__init__.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/deploy_acs.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/DetectionTestingManager.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/GitService.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/generate_detection_coverage_badge.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/infrastructures/DetectionTestingInfrastructure.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/infrastructures/DetectionTestingInfrastructureContainer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/infrastructures/DetectionTestingInfrastructureServer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/progress_bar.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/views/DetectionTestingView.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/views/DetectionTestingViewCLI.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/views/DetectionTestingViewFile.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/detection_testing/views/DetectionTestingViewWeb.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/doc_gen.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/initialize.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/inspect.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/new_content.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/release_notes.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/reporting.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/test.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/actions/validate.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/api.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/contentctl.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/enrichments/attack_enrichment.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/enrichments/cve_enrichment.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/enrichments/splunk_app_enrichment.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/helper/link_validator.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/helper/logger.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/helper/splunk_app.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/helper/utils.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/input/director.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/input/new_content_questions.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/input/yml_reader.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/abstract_security_content_objects/detection_abstract.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/alert_action.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/annotated_types.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/atomic.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/base_security_event.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/base_test.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/base_test_result.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/baseline.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/baseline_tags.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/config.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/constants.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/content_versioning_service.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/correlation_search.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/dashboard.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/data_source.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment_email.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment_notable.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment_phantom.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment_rba.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment_scheduling.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/deployment_slack.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/detection.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/detection_metadata.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/detection_stanza.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/detection_tags.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/drilldown.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/enums.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/errors.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/integration_test.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/integration_test_result.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/investigation.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/investigation_tags.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/lookup.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/macro.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/manual_test.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/manual_test_result.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/mitre_attack_enrichment.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/notable_action.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/notable_event.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/playbook.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/playbook_tags.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/rba.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/removed_security_content_object.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/risk_analysis_action.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/risk_event.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/risk_object.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/savedsearches_conf.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/security_content_object.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/story.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/story_tags.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/test_attack_data.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/test_group.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/threat_object.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/throttling.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/unit_test.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/unit_test_baseline.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/objects/unit_test_result.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/attack_nav_output.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/attack_nav_writer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/conf_output.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/conf_writer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/doc_md_output.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/jinja_writer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/json_writer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/runtime_csv_writer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/svg_output.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/analyticstories_detections.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/analyticstories_investigations.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/analyticstories_stories.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/app.conf.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/app.manifest.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/collections.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/content-version.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/detection_count.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/detection_coverage.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_detection_page.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_detections.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_navigation.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_navigation_pages.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_playbooks.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_playbooks_page.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_stories.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/doc_story_page.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/es_investigations_investigations.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/es_investigations_stories.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/header.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/macros.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/panel.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/savedsearches_baselines.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/savedsearches_investigations.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/server.conf.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/transforms.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/workflow_actions.j2 +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/yml_writer.py +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/README.md +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_default.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/README/essoc_story_detail.txt +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/README/essoc_summary.txt +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/README/essoc_usage_dashboard.txt +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/README.md +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/analytic_stories.conf +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/commands.conf +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/data/ui/nav/default.xml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/data/ui/views/escu_summary.xml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/data/ui/views/feedback.xml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/use_case_library.conf +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/lookups/mitre_enrichment.csv +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/metadata/default.meta +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIcon.png +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIconAlt.png +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIconAlt_2x.png +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIcon_2x.png +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/data_sources/sysmon_eventid_1.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/datamodels_cim.conf +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/datamodels_custom.conf +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/deployments/escu_default_configuration_anomaly.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/deployments/escu_default_configuration_baseline.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/deployments/escu_default_configuration_correlation.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/deployments/escu_default_configuration_hunting.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/deployments/escu_default_configuration_ttp.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/detections/application/.gitkeep +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/detections/cloud/.gitkeep +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/detections/endpoint/anomalous_usage_of_7zip.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/detections/network/.gitkeep +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/detections/web/.gitkeep +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/macros/security_content_ctime.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/macros/security_content_summariesonly.yml +0 -0
- {contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/stories/cobalt_strike.yml +0 -0
|
@@ -6,7 +6,7 @@ from dataclasses import dataclass
|
|
|
6
6
|
|
|
7
7
|
from contentctl.input.director import DirectorOutputDto
|
|
8
8
|
from contentctl.objects.config import build
|
|
9
|
-
from contentctl.output.api_json_output import ApiJsonOutput
|
|
9
|
+
from contentctl.output.api_json_output import JSON_API_VERSION, ApiJsonOutput
|
|
10
10
|
from contentctl.output.conf_output import ConfOutput
|
|
11
11
|
from contentctl.output.conf_writer import ConfWriter
|
|
12
12
|
|
|
@@ -76,7 +76,9 @@ class Build:
|
|
|
76
76
|
api_json_output.writeDeployments(input_dto.director_output_dto.deployments)
|
|
77
77
|
|
|
78
78
|
# create version file for sse api
|
|
79
|
-
version_file =
|
|
79
|
+
version_file = (
|
|
80
|
+
input_dto.config.getAPIPath() / f"version_v{JSON_API_VERSION}.json"
|
|
81
|
+
)
|
|
80
82
|
utc_time = (
|
|
81
83
|
datetime.datetime.now(datetime.timezone.utc)
|
|
82
84
|
.replace(microsecond=0, tzinfo=None)
|
|
@@ -12,6 +12,7 @@ import pathlib
|
|
|
12
12
|
import pprint
|
|
13
13
|
import uuid
|
|
14
14
|
from abc import abstractmethod
|
|
15
|
+
from collections import Counter
|
|
15
16
|
from difflib import get_close_matches
|
|
16
17
|
from functools import cached_property
|
|
17
18
|
from typing import List, Optional, Tuple, Union
|
|
@@ -708,6 +709,15 @@ class SecurityContentObject_Abstract(BaseModel, abc.ABC):
|
|
|
708
709
|
"an error in the contentctl codebase which must be resolved."
|
|
709
710
|
)
|
|
710
711
|
|
|
712
|
+
# Catch all for finding duplicates in mapped content
|
|
713
|
+
if (
|
|
714
|
+
len(duplicates := [name for name, count in Counter(v).items() if count > 1])
|
|
715
|
+
> 0
|
|
716
|
+
):
|
|
717
|
+
raise ValueError(
|
|
718
|
+
f"Duplicate {cls.__name__} ({duplicates}) found in list: {v}."
|
|
719
|
+
)
|
|
720
|
+
|
|
711
721
|
mappedObjects: list[Self] = []
|
|
712
722
|
mistyped_objects: list[SecurityContentObject_Abstract] = []
|
|
713
723
|
missing_objects: list[str] = []
|
|
@@ -16,6 +16,8 @@ import pathlib
|
|
|
16
16
|
|
|
17
17
|
from contentctl.output.json_writer import JsonWriter
|
|
18
18
|
|
|
19
|
+
JSON_API_VERSION = 2
|
|
20
|
+
|
|
19
21
|
|
|
20
22
|
class ApiJsonOutput:
|
|
21
23
|
output_path: pathlib.Path
|
|
@@ -70,7 +72,9 @@ class ApiJsonOutput:
|
|
|
70
72
|
# del()
|
|
71
73
|
|
|
72
74
|
JsonWriter.writeJsonObject(
|
|
73
|
-
os.path.join(self.output_path, "
|
|
75
|
+
os.path.join(self.output_path, f"detections_v{JSON_API_VERSION}.json"),
|
|
76
|
+
"detections",
|
|
77
|
+
detections,
|
|
74
78
|
)
|
|
75
79
|
|
|
76
80
|
def writeMacros(
|
|
@@ -86,7 +90,9 @@ class ApiJsonOutput:
|
|
|
86
90
|
if k in macro:
|
|
87
91
|
del macro[k]
|
|
88
92
|
JsonWriter.writeJsonObject(
|
|
89
|
-
os.path.join(self.output_path, "
|
|
93
|
+
os.path.join(self.output_path, f"macros_v{JSON_API_VERSION}.json"),
|
|
94
|
+
"macros",
|
|
95
|
+
macros,
|
|
90
96
|
)
|
|
91
97
|
|
|
92
98
|
def writeStories(
|
|
@@ -132,7 +138,9 @@ class ApiJsonOutput:
|
|
|
132
138
|
]
|
|
133
139
|
|
|
134
140
|
JsonWriter.writeJsonObject(
|
|
135
|
-
os.path.join(self.output_path, "
|
|
141
|
+
os.path.join(self.output_path, f"stories_v{JSON_API_VERSION}.json"),
|
|
142
|
+
"stories",
|
|
143
|
+
stories,
|
|
136
144
|
)
|
|
137
145
|
|
|
138
146
|
def writeBaselines(
|
|
@@ -163,7 +171,9 @@ class ApiJsonOutput:
|
|
|
163
171
|
]
|
|
164
172
|
|
|
165
173
|
JsonWriter.writeJsonObject(
|
|
166
|
-
os.path.join(self.output_path, "
|
|
174
|
+
os.path.join(self.output_path, f"baselines_v{JSON_API_VERSION}.json"),
|
|
175
|
+
"baselines",
|
|
176
|
+
baselines,
|
|
167
177
|
)
|
|
168
178
|
|
|
169
179
|
def writeInvestigations(
|
|
@@ -195,7 +205,7 @@ class ApiJsonOutput:
|
|
|
195
205
|
for investigation in objects
|
|
196
206
|
]
|
|
197
207
|
JsonWriter.writeJsonObject(
|
|
198
|
-
os.path.join(self.output_path, "
|
|
208
|
+
os.path.join(self.output_path, f"response_tasks_v{JSON_API_VERSION}.json"),
|
|
199
209
|
"response_tasks",
|
|
200
210
|
investigations,
|
|
201
211
|
)
|
|
@@ -227,7 +237,9 @@ class ApiJsonOutput:
|
|
|
227
237
|
if k in lookup:
|
|
228
238
|
del lookup[k]
|
|
229
239
|
JsonWriter.writeJsonObject(
|
|
230
|
-
os.path.join(self.output_path, "
|
|
240
|
+
os.path.join(self.output_path, f"lookups_v{JSON_API_VERSION}.json"),
|
|
241
|
+
"lookups",
|
|
242
|
+
lookups,
|
|
231
243
|
)
|
|
232
244
|
|
|
233
245
|
def writeDeployments(
|
|
@@ -255,7 +267,7 @@ class ApiJsonOutput:
|
|
|
255
267
|
# references are not to be included, but have been deleted in the
|
|
256
268
|
# model_serialization logic
|
|
257
269
|
JsonWriter.writeJsonObject(
|
|
258
|
-
os.path.join(self.output_path, "
|
|
270
|
+
os.path.join(self.output_path, f"deployments_v{JSON_API_VERSION}.json"),
|
|
259
271
|
"deployments",
|
|
260
272
|
deployments,
|
|
261
273
|
)
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/savedsearches_detections.j2
RENAMED
|
@@ -42,7 +42,7 @@ action.correlationsearch.metadata = {{ detection.metadata | tojson }}
|
|
|
42
42
|
schedule_window = {{ detection.deployment.scheduling.schedule_window }}
|
|
43
43
|
{% if detection.deployment.alert_action.notable %}
|
|
44
44
|
action.notable = 1
|
|
45
|
-
action.notable.param._entities = [{"risk_object_field": "N/A", "risk_object_type": "N/A", "risk_score":
|
|
45
|
+
action.notable.param._entities = [{"risk_object_field": "N/A", "risk_object_type": "N/A", "risk_score": 0}]
|
|
46
46
|
action.notable.param.nes_fields = {{ detection.nes_fields }}
|
|
47
47
|
action.notable.param.rule_description = {{ detection.deployment.alert_action.notable.rule_description | custom_jinja2_enrichment_filter(detection) | escapeNewlines()}}
|
|
48
48
|
action.notable.param.rule_title = {% if detection.type | lower == "correlation" %}RBA: {{ detection.deployment.alert_action.notable.rule_title | custom_jinja2_enrichment_filter(detection) }}{% else %}{{ detection.deployment.alert_action.notable.rule_title | custom_jinja2_enrichment_filter(detection) }}{% endif +%}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/analyticstories_detections.j2
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/analyticstories_investigations.j2
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/analyticstories_stories.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/es_investigations_stories.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/savedsearches_baselines.j2
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/output/templates/savedsearches_investigations.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/README/essoc_summary.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/default/commands.conf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/lookups/mitre_enrichment.csv
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/metadata/default.meta
RENAMED
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIconAlt.png
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIconAlt_2x.png
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/app_template/static/appIcon_2x.png
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/data_sources/sysmon_eventid_1.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/macros/security_content_ctime.yml
RENAMED
|
File without changes
|
{contentctl-5.5.0 → contentctl-5.5.3}/contentctl/templates/macros/security_content_summariesonly.yml
RENAMED
|
File without changes
|
|
File without changes
|