devsecops-engine-tools 1.99.0__py3-none-any.whl → 1.100.0__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.
Potentially problematic release.
This version of devsecops-engine-tools might be problematic. Click here for more details.
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +1 -5
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +198 -20
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +1 -1
- devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py +4 -1
- devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/oauth/generic_oauth.py +1 -1
- devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py +1 -1
- devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py +1 -2
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_tool.py +1 -1
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +1 -1
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +1 -2
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +7 -7
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py +1 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py +1 -1
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py +1 -1
- devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +6 -2
- devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py +0 -1
- devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/sonarqube_report.py +0 -2
- devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py +7 -3
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/METADATA +2 -1
- {devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/RECORD +24 -24
- {devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/top_level.txt +0 -0
|
@@ -117,9 +117,6 @@ class HandleRisk:
|
|
|
117
117
|
print(
|
|
118
118
|
f"Services to exclude: {[engagement.name for engagement in excluded_engagements]}"
|
|
119
119
|
)
|
|
120
|
-
logger.info(
|
|
121
|
-
f"Services to exclude: {[engagement.name for engagement in excluded_engagements]}"
|
|
122
|
-
)
|
|
123
120
|
|
|
124
121
|
return remaining_engagements
|
|
125
122
|
return service_list
|
|
@@ -226,8 +223,7 @@ class HandleRisk:
|
|
|
226
223
|
)
|
|
227
224
|
|
|
228
225
|
for engagement in new_service_list:
|
|
229
|
-
print(
|
|
230
|
-
logger.info(
|
|
226
|
+
print(
|
|
231
227
|
f"Service to analyze: {engagement.name}, URL: {engagement.vm_url}"
|
|
232
228
|
)
|
|
233
229
|
|
|
@@ -7,24 +7,126 @@ from devsecops_engine_tools.engine_core.src.infrastructure.helpers.aws import (
|
|
|
7
7
|
import boto3
|
|
8
8
|
import logging
|
|
9
9
|
import datetime
|
|
10
|
+
import io
|
|
11
|
+
import pyarrow as pa
|
|
12
|
+
import pyarrow.parquet as pq
|
|
13
|
+
import json
|
|
10
14
|
|
|
11
15
|
boto3.set_stream_logger(name="botocore.credentials", level=logging.WARNING)
|
|
12
16
|
|
|
13
17
|
|
|
14
18
|
class S3Manager(MetricsManagerGateway):
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
# ---- Events ----
|
|
21
|
+
event_schema = pa.struct(
|
|
22
|
+
[
|
|
23
|
+
("timestamp", pa.string()),
|
|
24
|
+
("level", pa.string()),
|
|
25
|
+
("message", pa.string()),
|
|
26
|
+
("module", pa.string()),
|
|
27
|
+
("funcName", pa.string()),
|
|
28
|
+
("lineno", pa.int64()),
|
|
29
|
+
]
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# ---- Findings Excluded ----
|
|
33
|
+
finding_excluded_schema = pa.struct(
|
|
34
|
+
[
|
|
35
|
+
("id", pa.string()),
|
|
36
|
+
("severity", pa.string()),
|
|
37
|
+
("category", pa.string()),
|
|
38
|
+
]
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# ---- Vulnerabilities ----
|
|
42
|
+
vuln_threshold_schema = pa.struct(
|
|
43
|
+
[
|
|
44
|
+
("critical", pa.int64()),
|
|
45
|
+
("high", pa.int64()),
|
|
46
|
+
("medium", pa.int64()),
|
|
47
|
+
("low", pa.int64()),
|
|
48
|
+
]
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
vuln_found_schema = pa.struct(
|
|
52
|
+
[
|
|
53
|
+
("id", pa.string()),
|
|
54
|
+
("severity", pa.string()),
|
|
55
|
+
]
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
vulnerabilities_schema = pa.struct(
|
|
59
|
+
[
|
|
60
|
+
("threshold", vuln_threshold_schema),
|
|
61
|
+
("status", pa.string()),
|
|
62
|
+
("found", pa.list_(vuln_found_schema)),
|
|
63
|
+
]
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
# ---- Compliances ----
|
|
67
|
+
compliances_schema = pa.struct(
|
|
68
|
+
[
|
|
69
|
+
("threshold", pa.struct([("critical", pa.int64())])),
|
|
70
|
+
("status", pa.string()),
|
|
71
|
+
("found", pa.list_(vuln_found_schema)),
|
|
72
|
+
]
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
# ---- Risk ----
|
|
76
|
+
risk_control_schema = pa.struct(
|
|
77
|
+
[
|
|
78
|
+
("remediation_rate", pa.float64()),
|
|
79
|
+
("blacklisted", pa.int64()),
|
|
80
|
+
("max_risk_score", pa.float64()),
|
|
81
|
+
]
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
risk_found_schema = pa.struct(
|
|
85
|
+
[
|
|
86
|
+
("id", pa.string()),
|
|
87
|
+
("severity", pa.string()),
|
|
88
|
+
("risk_score", pa.string()),
|
|
89
|
+
("reason", pa.string()),
|
|
90
|
+
]
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
risk_schema = pa.struct(
|
|
94
|
+
[
|
|
95
|
+
("risk_control", risk_control_schema),
|
|
96
|
+
("status", pa.string()),
|
|
97
|
+
("found", pa.list_(risk_found_schema)),
|
|
98
|
+
]
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
# ---- Scan Result ----
|
|
102
|
+
scan_result_schema = pa.struct(
|
|
103
|
+
[
|
|
104
|
+
("findings_excluded", pa.list_(finding_excluded_schema)),
|
|
105
|
+
("vulnerabilities", vulnerabilities_schema),
|
|
106
|
+
("compliances", compliances_schema),
|
|
107
|
+
("risk", risk_schema),
|
|
108
|
+
]
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
record_schema = pa.schema(
|
|
112
|
+
[
|
|
113
|
+
("id", pa.string()),
|
|
114
|
+
("date", pa.string()),
|
|
115
|
+
("component", pa.string()),
|
|
116
|
+
("stage", pa.string()),
|
|
117
|
+
("check_type", pa.string()),
|
|
118
|
+
("environment", pa.string()),
|
|
119
|
+
("events", pa.list_(event_schema)),
|
|
120
|
+
("scan_result", scan_result_schema),
|
|
121
|
+
]
|
|
122
|
+
)
|
|
25
123
|
|
|
26
124
|
def send_metrics(self, config_tool, module, file_path):
|
|
27
|
-
credentials_role =
|
|
125
|
+
credentials_role = (
|
|
126
|
+
assume_role(config_tool["METRICS_MANAGER"]["AWS"]["ROLE_ARN"])
|
|
127
|
+
if config_tool["METRICS_MANAGER"]["AWS"]["USE_ROLE"]
|
|
128
|
+
else None
|
|
129
|
+
)
|
|
28
130
|
session = boto3.session.Session()
|
|
29
131
|
|
|
30
132
|
if credentials_role:
|
|
@@ -38,20 +140,96 @@ class S3Manager(MetricsManagerGateway):
|
|
|
38
140
|
else:
|
|
39
141
|
client = session.client(
|
|
40
142
|
service_name="s3",
|
|
41
|
-
region_name=config_tool["METRICS_MANAGER"]["AWS"]["REGION_NAME"]
|
|
143
|
+
region_name=config_tool["METRICS_MANAGER"]["AWS"]["REGION_NAME"],
|
|
42
144
|
)
|
|
43
145
|
date = datetime.datetime.now()
|
|
44
|
-
|
|
146
|
+
type_format = config_tool["METRICS_MANAGER"]["AWS"]["TYPE_FORMAT_BUCKET_FILE"]
|
|
147
|
+
path_bucket_metrics = config_tool["METRICS_MANAGER"]["AWS"]["PATH_BUCKET"]
|
|
148
|
+
filename = file_path.split("/")[-1]
|
|
149
|
+
base_path = f"{path_bucket_metrics}/module={module}/year={date:%Y}/month={date:%m}" if type_format == "parquet" else f"{path_bucket_metrics}/{module}/{date:%Y}/{date:%m}/{date:%d}"
|
|
150
|
+
path_bucket = f"{base_path}/{filename.rsplit('.', 1)[0]}.{type_format}"
|
|
45
151
|
|
|
46
|
-
|
|
152
|
+
existing_data = self._get_s3_data(
|
|
47
153
|
client, config_tool["METRICS_MANAGER"]["AWS"]["BUCKET"], path_bucket
|
|
48
154
|
)
|
|
49
155
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
156
|
+
if (
|
|
157
|
+
type_format
|
|
158
|
+
== "parquet"
|
|
159
|
+
):
|
|
160
|
+
buffer = io.BytesIO()
|
|
161
|
+
with open(file_path, "rb") as new_data:
|
|
162
|
+
new_json_data = json.load(new_data)
|
|
163
|
+
|
|
164
|
+
new_table = self._to_arrow_record(new_json_data)
|
|
165
|
+
|
|
166
|
+
if existing_data:
|
|
167
|
+
existing_table = pq.read_table(
|
|
168
|
+
io.BytesIO(existing_data), schema=self.record_schema
|
|
169
|
+
)
|
|
170
|
+
final_table = pa.concat_tables([existing_table, new_table])
|
|
171
|
+
else:
|
|
172
|
+
final_table = new_table
|
|
173
|
+
|
|
174
|
+
pq.write_table(
|
|
175
|
+
final_table,
|
|
176
|
+
buffer,
|
|
177
|
+
compression="snappy",
|
|
178
|
+
use_deprecated_int96_timestamps=False,
|
|
179
|
+
)
|
|
180
|
+
buffer.seek(0)
|
|
181
|
+
data = buffer.getvalue()
|
|
182
|
+
elif type_format == "json":
|
|
183
|
+
with open(file_path, "rb") as new_data:
|
|
184
|
+
new_data_content = new_data.read().decode("utf-8")
|
|
185
|
+
data = (
|
|
186
|
+
existing_data.decode("utf-8") + "\n" + new_data_content
|
|
187
|
+
if existing_data
|
|
188
|
+
else new_data_content
|
|
189
|
+
)
|
|
190
|
+
else:
|
|
191
|
+
raise ValueError(
|
|
192
|
+
"Unsupported TYPE_FORMAT_BUCKET_FILE. Use 'parquet' or 'json'."
|
|
57
193
|
)
|
|
194
|
+
|
|
195
|
+
client.put_object(
|
|
196
|
+
Bucket=config_tool["METRICS_MANAGER"]["AWS"]["BUCKET"],
|
|
197
|
+
Key=path_bucket,
|
|
198
|
+
Body=data,
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
def _get_s3_data(self, client, bucket, path):
|
|
202
|
+
try:
|
|
203
|
+
response = client.get_object(
|
|
204
|
+
Bucket=bucket,
|
|
205
|
+
Key=path,
|
|
206
|
+
)
|
|
207
|
+
return response["Body"].read()
|
|
208
|
+
except client.exceptions.NoSuchKey:
|
|
209
|
+
return ""
|
|
210
|
+
|
|
211
|
+
def _to_arrow_record(self, event: dict) -> pa.Table:
|
|
212
|
+
event = dict(event)
|
|
213
|
+
|
|
214
|
+
data = {
|
|
215
|
+
"id": [event.get("id")],
|
|
216
|
+
"date": [event.get("date")], # "YYYY-MM-DD"
|
|
217
|
+
"component": [event.get("component")],
|
|
218
|
+
"stage": [event.get("stage")],
|
|
219
|
+
"check_type": [event.get("check_type")],
|
|
220
|
+
"environment": [event.get("environment")],
|
|
221
|
+
"events": [event.get("events", [])],
|
|
222
|
+
"scan_result": [
|
|
223
|
+
event.get(
|
|
224
|
+
"scan_result",
|
|
225
|
+
{
|
|
226
|
+
"findings_excluded": [],
|
|
227
|
+
"vulnerabilities": None,
|
|
228
|
+
"compliances": None,
|
|
229
|
+
"risk": None,
|
|
230
|
+
},
|
|
231
|
+
)
|
|
232
|
+
],
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
return pa.Table.from_pydict(data, schema=self.record_schema)
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -578,7 +578,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
578
578
|
response = Component.create_component(
|
|
579
579
|
session=session_manager, request=request
|
|
580
580
|
)
|
|
581
|
-
logger.
|
|
581
|
+
logger.debug(
|
|
582
582
|
f"Component created: {response.name} - {response.version} found with id: {response.id}"
|
|
583
583
|
)
|
|
584
584
|
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py
CHANGED
|
@@ -33,9 +33,12 @@ class NucleiConfig:
|
|
|
33
33
|
with open(template_name, "r") as template_file: # abrir archivo
|
|
34
34
|
template_data = self.yaml.load(template_file)
|
|
35
35
|
if "http" in template_data:
|
|
36
|
+
parm_path = ""
|
|
37
|
+
if "parm" in new_template_data["operation"]:
|
|
38
|
+
parm_path = f"?{'&'.join([str(key) + '=' + str(value) for key, value in new_template_data['operation']['parm'].items()])}"
|
|
36
39
|
template_data["http"][0]["method"] = new_template_data["operation"]["method"]
|
|
37
40
|
template_data["http"][0]["path"] = [
|
|
38
|
-
"{{BaseURL}}" + new_template_data["operation"]["path"]
|
|
41
|
+
"{{BaseURL}}" + new_template_data["operation"]["path"] + parm_path
|
|
39
42
|
]
|
|
40
43
|
if "headers" in new_template_data["operation"]:
|
|
41
44
|
if "headers" not in template_data["http"][0]:
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/oauth/generic_oauth.py
CHANGED
|
@@ -64,7 +64,7 @@ class GenericOauth(AuthenticationGateway):
|
|
|
64
64
|
result = response.json()["access_token"]
|
|
65
65
|
return ("Authorization",f"Bearer {result}")
|
|
66
66
|
else:
|
|
67
|
-
|
|
67
|
+
logger.warning(
|
|
68
68
|
"OAuth: Can't obtain access token"
|
|
69
69
|
"token Unknown status "
|
|
70
70
|
"code {0}: -> {1}".format(response.status_code, response.text)
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py
CHANGED
|
@@ -26,12 +26,11 @@ class FirstCsv(AddEpssGateway):
|
|
|
26
26
|
if response.status_code == 200:
|
|
27
27
|
with gzip.open(io.BytesIO(response.content), "rt") as f:
|
|
28
28
|
data = f.read()
|
|
29
|
-
|
|
29
|
+
print(f"EPSS data downloaded for date: {formatted_date}")
|
|
30
30
|
return data
|
|
31
31
|
else:
|
|
32
32
|
date -= datetime.timedelta(days=1)
|
|
33
33
|
attempts += 1
|
|
34
|
-
print("Could not find EPSS data from de last 2 days. Skipping add EPS data...")
|
|
35
34
|
logger.error(
|
|
36
35
|
"Could not find EPSS data from de last 2 days. Skipping add EPS data..."
|
|
37
36
|
)
|
|
@@ -59,7 +59,7 @@ class GitleaksTool(ToolGateway):
|
|
|
59
59
|
with open(file_path, 'r', encoding='utf-8') as f:
|
|
60
60
|
return json.load(f)
|
|
61
61
|
else:
|
|
62
|
-
|
|
62
|
+
logger.warning(f"File {file_path} does not exist")
|
|
63
63
|
return []
|
|
64
64
|
|
|
65
65
|
def _create_report(self, output_file, combined_data):
|
|
@@ -92,7 +92,7 @@ class DockerImages(ImagesGateway):
|
|
|
92
92
|
specific_use_value = label_keys["specific_use"]
|
|
93
93
|
is_uso_especifico = labels.get("repository") == specific_use_value
|
|
94
94
|
if source_image and matching_image:
|
|
95
|
-
|
|
95
|
+
print(f"Base image for '{matching_image}' found: {source_image}")
|
|
96
96
|
elif matching_image:
|
|
97
97
|
logger.warning(f"Base image not found for '{matching_image}'.")
|
|
98
98
|
return source_image, is_uso_especifico
|
|
@@ -2,7 +2,6 @@ import stat
|
|
|
2
2
|
import requests
|
|
3
3
|
import os
|
|
4
4
|
import subprocess
|
|
5
|
-
import logging
|
|
6
5
|
import base64
|
|
7
6
|
import json
|
|
8
7
|
import platform
|
|
@@ -57,7 +56,7 @@ class PrismaCloudManagerScan(ToolGateway):
|
|
|
57
56
|
file.write(response.content)
|
|
58
57
|
|
|
59
58
|
os.chmod(file_path, stat.S_IRWXU)
|
|
60
|
-
|
|
59
|
+
logger.info(f"twistcli downloaded and saved to: {file_path}")
|
|
61
60
|
return 0
|
|
62
61
|
|
|
63
62
|
except Exception as e:
|
|
@@ -48,7 +48,7 @@ class ImportScanUserCase:
|
|
|
48
48
|
response = None
|
|
49
49
|
if api_scan_bool:
|
|
50
50
|
response = self.__rest_import_scan.import_scan_api(request)
|
|
51
|
-
logger.
|
|
51
|
+
logger.debug(f"End process Succesfull!!!: {response}")
|
|
52
52
|
else:
|
|
53
53
|
try:
|
|
54
54
|
file_type = self.get_file_type(request.file)
|
|
@@ -56,7 +56,7 @@ class ImportScanUserCase:
|
|
|
56
56
|
raise ApiError("File format not allowed")
|
|
57
57
|
|
|
58
58
|
with open(request.file, "rb") as file:
|
|
59
|
-
logger.
|
|
59
|
+
logger.debug(f"read {file_type} file successful !!!")
|
|
60
60
|
files = [("file", (request.file, file, file_type))]
|
|
61
61
|
response = self.__rest_import_scan.import_scan(request, files)
|
|
62
62
|
|
|
@@ -74,7 +74,7 @@ class ImportScanUserCase:
|
|
|
74
74
|
logger.error(log)
|
|
75
75
|
raise ApiError(log)
|
|
76
76
|
|
|
77
|
-
logger.
|
|
77
|
+
logger.debug(f"Match {request.scan_type}")
|
|
78
78
|
products = self.__rest_product.get_products({"name": request.product_name})
|
|
79
79
|
if len(products.results) == 0 and request.product_name != "Orphan_Product":
|
|
80
80
|
products = self.__rest_product.get_products({"name": request.code_app})
|
|
@@ -82,27 +82,27 @@ class ImportScanUserCase:
|
|
|
82
82
|
product_id = products.results[0].id
|
|
83
83
|
request.product_name = products.results[0].name
|
|
84
84
|
request.product_type_name = self.__rest_product_type.get_product_type_id(products.results[0].prod_type).name
|
|
85
|
-
logger.
|
|
85
|
+
logger.debug(f"product found: {request.product_name} with id: {product_id}")
|
|
86
86
|
else:
|
|
87
87
|
product_type_id = None
|
|
88
88
|
product_types = self.__rest_product_type.get_product_types(request.product_type_name)
|
|
89
89
|
if product_types.results == []:
|
|
90
90
|
product_type = self.__rest_product_type.post_product_type(request.product_type_name)
|
|
91
91
|
product_type_id = product_type.id
|
|
92
|
-
logger.
|
|
92
|
+
logger.debug(f"product_type created: {product_type.name} with id {product_type.id}")
|
|
93
93
|
else:
|
|
94
94
|
if len(product_types.results) != 1:
|
|
95
95
|
logger.warning(f"there is more than one product type with the name: {product_types.results}")
|
|
96
96
|
|
|
97
97
|
product_type_id = product_types.results[0].id
|
|
98
|
-
logger.
|
|
98
|
+
logger.debug(
|
|
99
99
|
f"product_type found: {product_types.results[0].name}\
|
|
100
100
|
with id {product_type_id}"
|
|
101
101
|
)
|
|
102
102
|
|
|
103
103
|
product = self.__rest_product.post_product(request, product_type_id)
|
|
104
104
|
product_id = product.id
|
|
105
|
-
logger.
|
|
105
|
+
logger.debug(
|
|
106
106
|
f"product created: {product.name}\
|
|
107
107
|
found with id: {product.id}"
|
|
108
108
|
)
|
|
@@ -121,7 +121,7 @@ class CmdbRestConsumer:
|
|
|
121
121
|
|
|
122
122
|
data = self.get_nested_data(response, response_format)
|
|
123
123
|
data_map = self.mapping_cmdb(data)
|
|
124
|
-
logger.
|
|
124
|
+
logger.debug(data_map)
|
|
125
125
|
cmdb_object = Cmdb.from_dict(data_map)
|
|
126
126
|
cmdb_object.codigo_app = code_app
|
|
127
127
|
return cmdb_object
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py
CHANGED
|
@@ -123,7 +123,7 @@ class ImportScanRestConsumer:
|
|
|
123
123
|
logger.error(response.json())
|
|
124
124
|
logger.error(response)
|
|
125
125
|
raise ApiError(response.json())
|
|
126
|
-
logger.
|
|
126
|
+
logger.debug(f"Sucessfull {response}")
|
|
127
127
|
response = ImportScanRequest.from_dict(response.json())
|
|
128
128
|
except Exception as e:
|
|
129
129
|
logger.error(f"from dict import Scan: {response.json()}")
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py
CHANGED
|
@@ -52,7 +52,7 @@ class ProductTypeRestConsumer:
|
|
|
52
52
|
response = self.__session.get(url, headers=headers, data={}, verify=VERIFY_CERTIFICATE)
|
|
53
53
|
if response.status_code != 200:
|
|
54
54
|
raise ApiError(response.json())
|
|
55
|
-
logger.
|
|
55
|
+
logger.debug(response)
|
|
56
56
|
product_type_object = ProductType.from_dict(response.json())
|
|
57
57
|
except Exception as e:
|
|
58
58
|
raise ApiError(e)
|
|
@@ -4,6 +4,10 @@ import json
|
|
|
4
4
|
from github import Github, GithubIntegration
|
|
5
5
|
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
6
6
|
|
|
7
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
8
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
9
|
+
|
|
10
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
7
11
|
|
|
8
12
|
class GithubApi:
|
|
9
13
|
|
|
@@ -40,11 +44,11 @@ class GithubApi:
|
|
|
40
44
|
file.write(chunk)
|
|
41
45
|
self.unzip_file(f"{download_path}/{asset_name}", download_path)
|
|
42
46
|
else:
|
|
43
|
-
|
|
47
|
+
logger.warning(
|
|
44
48
|
f"Error downloading asset {asset_name}. status code: {response.status_code}"
|
|
45
49
|
)
|
|
46
50
|
else:
|
|
47
|
-
|
|
51
|
+
logger.warning(
|
|
48
52
|
f"Error getting the assets of the last release. Status code: {response.status_code}"
|
|
49
53
|
)
|
|
50
54
|
|
|
@@ -90,7 +90,6 @@ class ReportSonar:
|
|
|
90
90
|
if get_components:
|
|
91
91
|
project_keys = [f"{pipeline_name}_{component}" for component in get_components]
|
|
92
92
|
print(f"Multiple project keys detected: {project_keys}")
|
|
93
|
-
logger.info(f"Multiple project keys detected: {project_keys}")
|
|
94
93
|
else:
|
|
95
94
|
project_keys = self.sonar_gateway.get_project_keys(pipeline_name)
|
|
96
95
|
|
|
@@ -35,14 +35,12 @@ class SonarAdapter(SonarGateway):
|
|
|
35
35
|
file_content = f.read()
|
|
36
36
|
print(f"[SQ] Parse Task report file:\n{file_content}")
|
|
37
37
|
if not file_content or len(file_content) <= 0:
|
|
38
|
-
print("[SQ] Error reading file")
|
|
39
38
|
logger.warning("[SQ] Error reading file")
|
|
40
39
|
return None
|
|
41
40
|
try:
|
|
42
41
|
settings = self.create_task_report_from_string(file_content)
|
|
43
42
|
return settings.get("projectKey")
|
|
44
43
|
except Exception as err:
|
|
45
|
-
print(f"[SQ] Parse Task report error: {err}")
|
|
46
44
|
logger.warning(f"[SQ] Parse Task report error: {err}")
|
|
47
45
|
return None
|
|
48
46
|
except Exception as err:
|
|
@@ -2,6 +2,10 @@ import os
|
|
|
2
2
|
import pexpect
|
|
3
3
|
import base64
|
|
4
4
|
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
6
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
7
|
+
|
|
8
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
5
9
|
|
|
6
10
|
def decode_base64(secret_data):
|
|
7
11
|
return base64.b64decode(secret_data).decode("utf-8")
|
|
@@ -22,7 +26,7 @@ def config_knowns_hosts(host, ssh_key):
|
|
|
22
26
|
with open(known_hosts_file_path, "a") as known_hosts_file:
|
|
23
27
|
known_hosts_file.write(line_to_add)
|
|
24
28
|
except Exception as e:
|
|
25
|
-
|
|
29
|
+
logger.error(f"An error ocurred while configuring file: {e}")
|
|
26
30
|
|
|
27
31
|
|
|
28
32
|
def create_ssh_private_file(ssh_key_file_path, ssh_key_content):
|
|
@@ -33,7 +37,7 @@ def create_ssh_private_file(ssh_key_file_path, ssh_key_content):
|
|
|
33
37
|
|
|
34
38
|
os.chmod(ssh_key_file_path, permisos)
|
|
35
39
|
except Exception as e:
|
|
36
|
-
|
|
40
|
+
logger.error(f"An error ocurred creating file: {e}")
|
|
37
41
|
|
|
38
42
|
|
|
39
43
|
def add_ssh_private_key(ssh_key_file_path, ssh_key_password):
|
|
@@ -63,4 +67,4 @@ def add_ssh_private_key(ssh_key_file_path, ssh_key_password):
|
|
|
63
67
|
|
|
64
68
|
return agent_env
|
|
65
69
|
except Exception as e:
|
|
66
|
-
|
|
70
|
+
logger.error(f"An error ocurred adding private key: {e}")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.100.0'
|
{devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: devsecops-engine-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.100.0
|
|
4
4
|
Summary: Tool for DevSecOps strategy
|
|
5
5
|
Home-page: https://github.com/bancolombia/devsecops-engine-tools
|
|
6
6
|
Author: Bancolombia DevSecOps Team
|
|
@@ -34,6 +34,7 @@ Requires-Dist: PyJWT==2.9.0
|
|
|
34
34
|
Requires-Dist: sympy==1.13.3
|
|
35
35
|
Requires-Dist: urllib3<2.0.0
|
|
36
36
|
Requires-Dist: holidays==0.58
|
|
37
|
+
Requires-Dist: pyarrow==21.0.0
|
|
37
38
|
|
|
38
39
|
# DevSecOps Engine Tools
|
|
39
40
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
devsecops_engine_tools/version.py,sha256=
|
|
2
|
+
devsecops_engine_tools/version.py,sha256=hIzjWYlNtUeXtdSoXSoJDxH2TJvhN6KQW_wyjH9yDPQ,20
|
|
3
3
|
devsecops_engine_tools/engine_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
devsecops_engine_tools/engine_core/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
devsecops_engine_tools/engine_core/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -27,20 +27,20 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gate
|
|
|
27
27
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=CB6KMjSNNgOEGdmzsxMLMMhs1MRf_C3GFsrEP77gOIo,1432
|
|
28
28
|
devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
29
|
devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=619MnIok_PAsgEinxBSioiveQYHuK6UidiUwRqpUWY8,11839
|
|
30
|
-
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=
|
|
30
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=_vTTHOKBHsWQFPmL4j41fMonp6DLu8U4FCylDsw5-1Q,10053
|
|
31
31
|
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=qZKz8jc5k3IEd97vsTXB-4dQOFaiOdPd9zawgPhSFV8,11432
|
|
32
32
|
devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=xfaGrDf9rnN32qG_zOD9NN-a62reqQ5KOd2bP6xoRnw,2417
|
|
33
33
|
devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
34
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
35
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=
|
|
36
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=G5RFUFXMmDFJfqJnbeGQPkHO0u01KMFU0pfGRINlgLI,7313
|
|
37
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py,sha256=ELihQBgSPH4f9QCyg2dgjudsFitaqgdsljnVOmaA_v4,1972
|
|
38
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
39
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=qErfsFIfcXQJlizxCWwi9V7qGXPYccp4e5SJgkD5mzY,5931
|
|
40
40
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
41
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/cdxgen/cdxgen.py,sha256=t1CTeQG2ePBwUdeNinSYEi3vyMjufD0KuHUIxRZCsAU,4370
|
|
42
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=
|
|
43
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=Ff-LLHhqWhyhQ5xYj_e4sW3OXKpmCDtvAdrKRTR0JvY,33061
|
|
44
44
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
45
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=sko3NAnLcVeB1-2YQQQ7I8S9vK6MA2s2Ylv0XDv3T0E,4279
|
|
46
46
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -81,11 +81,11 @@ devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/jwt/__init
|
|
|
81
81
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/jwt/jwt_object.py,sha256=YSPPVt7NTq5LasLPJZolc-Y44remOEroiqL79nqRXC8,2219
|
|
82
82
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/jwt/jwt_tool.py,sha256=9Yh7lOd6lsHcvl8exgWW7N8qTP55w-Znl0kid7IlKrM,5431
|
|
83
83
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
-
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py,sha256=
|
|
84
|
+
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py,sha256=lcpGAETmZ1yHkQWK8KKCKAdrCifvDLZFTxXeG4R-Vf0,3985
|
|
85
85
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_deserealizer.py,sha256=qqoBMXr350ItzabSU6a_fD2-9kB6pAmtWioFP5AvCIE,1346
|
|
86
86
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_tool.py,sha256=KQKEq06izKut2VMhD9nfc-CFPdvT8wOcar3COB7x6ZA,6843
|
|
87
87
|
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/oauth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
88
|
-
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/oauth/generic_oauth.py,sha256=
|
|
88
|
+
devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/oauth/generic_oauth.py,sha256=5OvS-XKrSuqHnG64GFd4XqzEGPjwAhn3xfcGgL1ATW4,2965
|
|
89
89
|
devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
90
|
devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/entry_point_dast.py,sha256=rm0Ao-nFrIvzbrfUBrPUEyJJV_eVaEdzYDnnwumOAsw,484
|
|
91
91
|
devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -113,14 +113,14 @@ devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py,sha256=
|
|
|
113
113
|
devsecops_engine_tools/engine_risk/src/domain/model/gateways/add_epss_gateway.py,sha256=cTm4QSxiaUt7ETCdXWZxKEus8pmEDA3e9k5b39SLDDE,178
|
|
114
114
|
devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
115
115
|
devsecops_engine_tools/engine_risk/src/domain/usecases/add_data.py,sha256=4wqDj-q7hJfJscvrbMDcy7tONqxdxl-CSl_TWTRUGKA,402
|
|
116
|
-
devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=
|
|
116
|
+
devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=Lm4pYeGmqs9VIm2PbzttN5KMDHK6bLCw3_0Mm9mxd88,17057
|
|
117
117
|
devsecops_engine_tools/engine_risk/src/domain/usecases/check_threshold.py,sha256=VYdmcbAuNNvdHCegRfvza7YJ8FHbFNyDosrKJrMW93I,765
|
|
118
118
|
devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py,sha256=UNULFNbGAgQKxUQ7buEgL8uIzyVP3GEpGKguDIuZTUc,4113
|
|
119
119
|
devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py,sha256=npd5MQus_cf6sv7JIAi5YGURyXJDSXxX1big7ts7MjY,2948
|
|
120
120
|
devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
121
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
122
|
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
123
|
-
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py,sha256=
|
|
123
|
+
devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py,sha256=EiiNdcl2I8cedIYsp8GijpwQCwx8IvYKk2j7cMLZtt0,2066
|
|
124
124
|
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
125
125
|
devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=6-qnhftZ8bH0KGt_-KhD1lRO2ft71JaSqAPOiX_e1s0,2639
|
|
126
126
|
devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -194,7 +194,7 @@ devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py,
|
|
|
194
194
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
195
195
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
196
196
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_deserealizator.py,sha256=IERIxeHhtQj0npBoL4_qb2mRlNgEUjg603DqGA49RQ4,1617
|
|
197
|
-
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_tool.py,sha256=
|
|
197
|
+
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/gitleaks/gitleaks_tool.py,sha256=YGm6KhbFu06wzvTESuZnctmuyJEMQDiwMww3bO6SsC8,6015
|
|
198
198
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
199
199
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py,sha256=mrSqPrkMiikxQ_uY-rF2I8QvicsOMdMBzTC8CTV3Wk8,2392
|
|
200
200
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=icO8so_bB92hilWknivQPt1qi0QHGzZNDBIXMwVfMII,8160
|
|
@@ -221,9 +221,9 @@ devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input
|
|
|
221
221
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
222
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
223
223
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
|
-
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py,sha256=
|
|
224
|
+
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py,sha256=SbPuZbhIIIN2w84iTZ8eOChwjqOt8jXIe5rEjEgvb9g,6365
|
|
225
225
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
226
|
-
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py,sha256=
|
|
226
|
+
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py,sha256=bgwHV4wd6dITrlLCoQctAW4lVJT0nSmOhEKLt3w9TRk,7831
|
|
227
227
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py,sha256=FXb0jUReJVUdZq_H_Zz-gCueMmWf0AwMiwJB-Ceqv2A,2695
|
|
228
228
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
229
229
|
devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py,sha256=Pg0Q0CKEQ-mE8u47H7ts1q3l0JOmTSeU9SBqr9_5U-Y,3839
|
|
@@ -314,18 +314,18 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/component.p
|
|
|
314
314
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
|
|
315
315
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
|
|
316
316
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding_exclusion.py,sha256=VqdwBiQGc9XFpatvbXGL837LtTxkWlfhWH46W1cTbCg,455
|
|
317
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=
|
|
317
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=xovHy5IAzkeQSbQqLGKNfG6RbxT7rl8bTiHVy10cI_8,7268
|
|
318
318
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/product.py,sha256=6f6eABdC79zOopMe_Rif3XoGG-yFfq9x_EOkevTuGDY,368
|
|
319
319
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
320
320
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
321
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py,sha256=
|
|
321
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py,sha256=RfHDWxGsd2xIpDOFd3VW599ZSxYntrWn9k4EdDl6KRk,7103
|
|
322
322
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/component.py,sha256=-J0Sv7z709Hctb-tgM0wmp5ofE4WKEIA_uJwzvMnStE,2132
|
|
323
323
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=E6ilSQLOcJeBGYn_XXzJimUdi3l9vo0FpN1FhdNJV58,3866
|
|
324
324
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=k-z2tg_NPKMni7rZgXMZa2-t8_8F35r8YtF1EcjMyDs,2355
|
|
325
325
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding_exclusion.py,sha256=BL4xf1FE5tMsBri0LetxBRUgOgLogdoHX97rQkHh10g,1524
|
|
326
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=
|
|
326
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=BXrTNv2PBWNSQNit0SEVvZbDP6krpvQUUQTJ5a9asD4,6516
|
|
327
327
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=8QksbPReWWuKoRrY9Grzl7XlpMsxfEt8EYYP_K0Nz0U,2725
|
|
328
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=
|
|
328
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=VECf9Mm1wXro6yi4yC4dWuysJq5bcGcEn0hVBnvj9zs,3079
|
|
329
329
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py,sha256=zTGOUJ4BFoF7aFTsuiecme2NAzJ_SWnnfS6mIsFWoVo,3122
|
|
330
330
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
331
331
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py,sha256=5ni59GuAHT-avpWNc4FSedVpoFRTGRNzjQJkAXpWv6c,28
|
|
@@ -338,7 +338,7 @@ devsecops_engine_tools/engine_utilities/git_cli/model/gateway/__init__.py,sha256
|
|
|
338
338
|
devsecops_engine_tools/engine_utilities/git_cli/model/gateway/git_gateway.py,sha256=x6LFK8wZuVix-ZCBdBQTzvjQi59nZYVrSOTatCOQbxc,638
|
|
339
339
|
devsecops_engine_tools/engine_utilities/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
340
340
|
devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
341
|
-
devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py,sha256=
|
|
341
|
+
devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py,sha256=8MYp5Gs8SrZI5TAkDnM4tlvkUeq8yoDvuzW_UxdGKw4,3005
|
|
342
342
|
devsecops_engine_tools/engine_utilities/github/models/GithubPredefinedVariables.py,sha256=8V7rX3jhADkE7wvI4XXWNiIdD8tI_U6JScrd9BY3RqU,1764
|
|
343
343
|
devsecops_engine_tools/engine_utilities/github/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
344
344
|
devsecops_engine_tools/engine_utilities/input_validations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -355,17 +355,17 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/__init__.py,s
|
|
|
355
355
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
356
356
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/sonar_gateway.py,sha256=mgycD3bzC_BYv7qT0tMLAro9hyNOvi4gJRzceYNF0t8,1339
|
|
357
357
|
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
358
|
-
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=
|
|
358
|
+
devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=ya-oH6qbjeSls2weN6hhH5wV9pM6MVMKMm6bzN7ZtWU,10837
|
|
359
359
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
360
360
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
361
361
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
362
|
-
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/sonarqube_report.py,sha256=
|
|
362
|
+
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/sonarqube_report.py,sha256=o6IML8mQbZS7B7NaxtPI6XA95l7ZiUQc4p_dZvTqsig,4790
|
|
363
363
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
364
364
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=7Rw310PgVhnGyyltFZ4zvxnC78ukMKQBlMQhI5Z0owI,2790
|
|
365
365
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
366
366
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/utils.py,sha256=SGOWrkzQrvOt9bRhhSfgiMzj1695e1W0B9ox9C1ihQI,294
|
|
367
367
|
devsecops_engine_tools/engine_utilities/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
368
|
-
devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py,sha256=
|
|
368
|
+
devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py,sha256=Tbe_YuRbPqb8jLZdAZ4LaupVyO3RJ-SzZdJh8KzrW6w,2598
|
|
369
369
|
devsecops_engine_tools/engine_utilities/trivy_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
370
370
|
devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
371
371
|
devsecops_engine_tools/engine_utilities/trivy_utils/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -380,8 +380,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
|
|
|
380
380
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
381
381
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
|
|
382
382
|
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
|
|
383
|
-
devsecops_engine_tools-1.
|
|
384
|
-
devsecops_engine_tools-1.
|
|
385
|
-
devsecops_engine_tools-1.
|
|
386
|
-
devsecops_engine_tools-1.
|
|
387
|
-
devsecops_engine_tools-1.
|
|
383
|
+
devsecops_engine_tools-1.100.0.dist-info/METADATA,sha256=D9tR1qRHvFhZKTiudcPFnyo7N6GaFAptqMxBnOVCBao,3232
|
|
384
|
+
devsecops_engine_tools-1.100.0.dist-info/WHEEL,sha256=iAkIy5fosb7FzIOwONchHf19Qu7_1wCWyFNR5gu9nU0,91
|
|
385
|
+
devsecops_engine_tools-1.100.0.dist-info/entry_points.txt,sha256=OWAww5aBsGeMv0kWhSgVNB0ySKKpYuJd4dly0ikFPkc,283
|
|
386
|
+
devsecops_engine_tools-1.100.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
387
|
+
devsecops_engine_tools-1.100.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{devsecops_engine_tools-1.99.0.dist-info → devsecops_engine_tools-1.100.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|