devsecops-engine-tools 1.8.10__py3-none-any.whl → 1.8.11__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/model/customs_exceptions.py +5 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +6 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py +98 -21
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +28 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +1 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py +16 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py +9 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +41 -10
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py +7 -0
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/METADATA +1 -1
- {devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/RECORD +15 -13
- {devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/top_level.txt +0 -0
|
@@ -12,3 +12,8 @@ class ExceptionGettingFindings(Exception):
|
|
|
12
12
|
def __init__(self, message):
|
|
13
13
|
self.message = message
|
|
14
14
|
super().__init__(self.message)
|
|
15
|
+
|
|
16
|
+
class ExceptionGettingEngagements(Exception):
|
|
17
|
+
def __init__(self, message):
|
|
18
|
+
self.message = message
|
|
19
|
+
super().__init__(self.message)
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py
CHANGED
|
@@ -21,3 +21,9 @@ class VulnerabilityManagementGateway(metaclass=ABCMeta):
|
|
|
21
21
|
self, service, dict_args, secret_tool, config_tool
|
|
22
22
|
):
|
|
23
23
|
"get all findings and exclusions from vulnerability management platform"
|
|
24
|
+
|
|
25
|
+
@abstractmethod
|
|
26
|
+
def get_active_engagements(
|
|
27
|
+
self, engagement_name, dict_args, secret_tool, config_tool
|
|
28
|
+
):
|
|
29
|
+
"get_active_engagements"
|
|
@@ -16,9 +16,8 @@ from devsecops_engine_tools.engine_risk.src.applications.runner_engine_risk impo
|
|
|
16
16
|
from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions import (
|
|
17
17
|
ExceptionGettingFindings,
|
|
18
18
|
)
|
|
19
|
-
from devsecops_engine_tools.engine_core.src.domain.model.input_core import
|
|
20
|
-
|
|
21
|
-
)
|
|
19
|
+
from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
|
|
20
|
+
import re
|
|
22
21
|
|
|
23
22
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
24
23
|
from devsecops_engine_tools.engine_utilities import settings
|
|
@@ -52,6 +51,49 @@ class HandleRisk:
|
|
|
52
51
|
"Error getting finding list in handle risk: {0}".format(str(e))
|
|
53
52
|
)
|
|
54
53
|
|
|
54
|
+
def _filter_engagements(self, engagements, service, risk_config):
|
|
55
|
+
filtered_engagements = []
|
|
56
|
+
min_word_length = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_LENGTH"]
|
|
57
|
+
words = [
|
|
58
|
+
word
|
|
59
|
+
for word in re.split(
|
|
60
|
+
risk_config["HANDLE_SERVICE_NAME"]["REGEX_GET_WORDS"], service
|
|
61
|
+
)
|
|
62
|
+
if len(word) > min_word_length
|
|
63
|
+
]
|
|
64
|
+
check_words_regex = risk_config["HANDLE_SERVICE_NAME"]["REGEX_CHECK_WORDS"]
|
|
65
|
+
min_word_amount = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_AMOUNT"]
|
|
66
|
+
for engagement in engagements:
|
|
67
|
+
if service.lower() in engagement.name.lower():
|
|
68
|
+
filtered_engagements += [engagement.name]
|
|
69
|
+
elif re.search(check_words_regex, engagement.name.lower()) and (
|
|
70
|
+
sum(1 for word in words if word.lower() in engagement.name.lower())
|
|
71
|
+
>= min_word_amount
|
|
72
|
+
):
|
|
73
|
+
filtered_engagements += [engagement.name]
|
|
74
|
+
return filtered_engagements
|
|
75
|
+
|
|
76
|
+
def _exclude_services(self, dict_args, pipeline_name, service_list):
|
|
77
|
+
risk_exclusions = self.devops_platform_gateway.get_remote_config(
|
|
78
|
+
dict_args["remote_config_repo"], "engine_risk/Exclusions.json"
|
|
79
|
+
)
|
|
80
|
+
if (
|
|
81
|
+
pipeline_name in risk_exclusions
|
|
82
|
+
and risk_exclusions[pipeline_name].get("SKIP_SERVICE", 0)
|
|
83
|
+
and risk_exclusions[pipeline_name]["SKIP_SERVICE"].get("services", 0)
|
|
84
|
+
):
|
|
85
|
+
services_to_exclude = risk_exclusions[pipeline_name]["SKIP_SERVICE"].get(
|
|
86
|
+
"services", []
|
|
87
|
+
)
|
|
88
|
+
service_excluded = []
|
|
89
|
+
for service in service_list:
|
|
90
|
+
if service in services_to_exclude:
|
|
91
|
+
service_list.remove(service)
|
|
92
|
+
service_excluded += [service]
|
|
93
|
+
print(f"Services to exclude: {service_excluded}")
|
|
94
|
+
logger.info(f"Services to exclude: {service_excluded}")
|
|
95
|
+
return service_list
|
|
96
|
+
|
|
55
97
|
def process(self, dict_args: any, remote_config: any):
|
|
56
98
|
secret_tool = None
|
|
57
99
|
if dict_args["use_secrets_manager"] == "true":
|
|
@@ -61,32 +103,67 @@ class HandleRisk:
|
|
|
61
103
|
dict_args["remote_config_repo"], "engine_risk/ConfigTool.json"
|
|
62
104
|
)
|
|
63
105
|
|
|
64
|
-
|
|
65
|
-
|
|
106
|
+
pipeline_name = self.devops_platform_gateway.get_variable("pipeline_name")
|
|
107
|
+
service = pipeline_name
|
|
108
|
+
service_list = []
|
|
66
109
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
110
|
+
if risk_config["HANDLE_SERVICE_NAME"]["ENABLED"].lower() == "true":
|
|
111
|
+
service = next(
|
|
112
|
+
(
|
|
113
|
+
pipeline_name.replace(ending, "")
|
|
114
|
+
for ending in risk_config["HANDLE_SERVICE_NAME"][
|
|
115
|
+
"ERASE_SERVICE_ENDING"
|
|
116
|
+
]
|
|
117
|
+
if pipeline_name.endswith(ending)
|
|
118
|
+
),
|
|
119
|
+
pipeline_name,
|
|
76
120
|
)
|
|
121
|
+
match_service_code = re.match(
|
|
122
|
+
risk_config["HANDLE_SERVICE_NAME"]["REGEX_GET_SERVICE_CODE"], service
|
|
123
|
+
)
|
|
124
|
+
if match_service_code:
|
|
125
|
+
service_code = match_service_code.group(0)
|
|
126
|
+
service_list += [
|
|
127
|
+
service.format(service_code=service_code)
|
|
128
|
+
for service in risk_config["HANDLE_SERVICE_NAME"]["ADD_SERVICES"]
|
|
129
|
+
]
|
|
130
|
+
engagements = self.vulnerability_management.get_active_engagements(
|
|
131
|
+
service_code, dict_args, secret_tool, remote_config
|
|
132
|
+
)
|
|
133
|
+
service_list += self._filter_engagements(
|
|
134
|
+
engagements, service, risk_config
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
service_list += [service]
|
|
77
138
|
|
|
78
|
-
|
|
79
|
-
|
|
139
|
+
match_parent = re.match(
|
|
140
|
+
risk_config["PARENT_ANALYSIS"]["REGEX_GET_PARENT"], service
|
|
80
141
|
)
|
|
142
|
+
if risk_config["PARENT_ANALYSIS"]["ENABLED"].lower() == "true" and match_parent:
|
|
143
|
+
parent_service = match_parent.group(0)
|
|
144
|
+
service_list += [parent_service]
|
|
81
145
|
|
|
82
|
-
|
|
146
|
+
service_list = list(set(service_list))
|
|
147
|
+
new_service_list = self._exclude_services(
|
|
148
|
+
dict_args, pipeline_name, service_list
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
print(f"Services to analyze: {new_service_list}")
|
|
152
|
+
logger.info(f"Services to analyze: {new_service_list}")
|
|
83
153
|
|
|
84
|
-
|
|
154
|
+
findings = []
|
|
155
|
+
exclusions = []
|
|
156
|
+
for service in new_service_list:
|
|
157
|
+
findings_list, exclusions_list = self._get_all_from_vm(
|
|
158
|
+
dict_args, secret_tool, remote_config, service
|
|
159
|
+
)
|
|
160
|
+
findings += findings_list
|
|
161
|
+
exclusions += exclusions_list
|
|
85
162
|
|
|
86
163
|
result = runner_engine_risk(
|
|
87
164
|
dict_args,
|
|
88
|
-
|
|
89
|
-
|
|
165
|
+
findings,
|
|
166
|
+
exclusions,
|
|
90
167
|
self.devops_platform_gateway,
|
|
91
168
|
self.print_table_gateway,
|
|
92
169
|
)
|
|
@@ -95,7 +172,7 @@ class HandleRisk:
|
|
|
95
172
|
{},
|
|
96
173
|
"",
|
|
97
174
|
"",
|
|
98
|
-
|
|
175
|
+
pipeline_name,
|
|
99
176
|
self.devops_platform_gateway.get_variable("stage").capitalize(),
|
|
100
177
|
)
|
|
101
178
|
return result, input_core
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -10,6 +10,7 @@ from devsecops_engine_tools.engine_utilities.defect_dojo import (
|
|
|
10
10
|
ImportScanRequest,
|
|
11
11
|
Connect,
|
|
12
12
|
Finding,
|
|
13
|
+
Engagement,
|
|
13
14
|
)
|
|
14
15
|
from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
|
|
15
16
|
from devsecops_engine_tools.engine_core.src.domain.model.report import Report
|
|
@@ -18,6 +19,7 @@ from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions impo
|
|
|
18
19
|
ExceptionVulnerabilityManagement,
|
|
19
20
|
ExceptionFindingsExcepted,
|
|
20
21
|
ExceptionGettingFindings,
|
|
22
|
+
ExceptionGettingEngagements
|
|
21
23
|
)
|
|
22
24
|
from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
|
|
23
25
|
format_date,
|
|
@@ -247,6 +249,32 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
247
249
|
"Error getting all findings with the following error: {0} ".format(ex)
|
|
248
250
|
)
|
|
249
251
|
|
|
252
|
+
def get_active_engagements(self, engagement_name, dict_args, secret_tool, config_tool):
|
|
253
|
+
try:
|
|
254
|
+
request_is = ImportScanRequest(
|
|
255
|
+
token_defect_dojo=dict_args.get("token_vulnerability_management")
|
|
256
|
+
or secret_tool.get("token_defect_dojo"),
|
|
257
|
+
host_defect_dojo=config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
258
|
+
"HOST_DEFECT_DOJO"
|
|
259
|
+
],
|
|
260
|
+
engagement_name=engagement_name,
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
request_active = {
|
|
264
|
+
"name": engagement_name,
|
|
265
|
+
"limit": config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
|
|
266
|
+
"LIMITS_QUERY"
|
|
267
|
+
],
|
|
268
|
+
"active": "true",
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
return Engagement.get_engagements(request_is, request_active).results
|
|
272
|
+
|
|
273
|
+
except Exception as ex:
|
|
274
|
+
raise ExceptionGettingEngagements(
|
|
275
|
+
"Error getting engagements with the following error: {0} ".format(ex)
|
|
276
|
+
)
|
|
277
|
+
|
|
250
278
|
def _get_session_manager(self, dict_args, secret_tool, config_tool):
|
|
251
279
|
token_dd = dict_args.get("token_vulnerability_management") or secret_tool.get(
|
|
252
280
|
"token_defect_dojo"
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.engagement import EngagementUserCase
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
6
|
+
|
|
7
|
+
class Engagement:
|
|
8
|
+
@staticmethod
|
|
9
|
+
def get_engagements(request_is: ImportScanRequest, request: dict):
|
|
10
|
+
try:
|
|
11
|
+
rest_engagement = EngagementRestConsumer(request_is, session=SessionManager())
|
|
12
|
+
|
|
13
|
+
uc = EngagementUserCase(rest_engagement)
|
|
14
|
+
return uc.execute(request)
|
|
15
|
+
except ApiError as e:
|
|
16
|
+
raise e
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
|
|
2
|
+
|
|
3
|
+
class EngagementUserCase:
|
|
4
|
+
def __init__(self, rest_engagement: EngagementRestConsumer):
|
|
5
|
+
self.__rest_engagement = rest_engagement
|
|
6
|
+
|
|
7
|
+
def execute(self, request):
|
|
8
|
+
response = self.__rest_engagement.get_engagements_by_request(request)
|
|
9
|
+
return response
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
3
3
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
4
|
-
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import (
|
|
5
|
+
ImportScanRequest,
|
|
6
|
+
)
|
|
7
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.settings.settings import (
|
|
8
|
+
VERIFY_CERTIFICATE,
|
|
9
|
+
)
|
|
10
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.engagement import (
|
|
11
|
+
Engagement,
|
|
12
|
+
EngagementList,
|
|
13
|
+
)
|
|
7
14
|
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
8
15
|
from datetime import datetime
|
|
9
16
|
from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
|
|
@@ -18,18 +25,37 @@ class EngagementRestConsumer:
|
|
|
18
25
|
self.__session = session._instance
|
|
19
26
|
|
|
20
27
|
def get_engagements(self, engagement_name):
|
|
21
|
-
|
|
28
|
+
request = {"name": engagement_name}
|
|
29
|
+
return self.get_engagements_by_request(request)
|
|
22
30
|
|
|
23
|
-
|
|
31
|
+
def get_engagements_by_request(self, request):
|
|
32
|
+
url = f"{self.__host}/api/v2/engagements/"
|
|
33
|
+
headers = {
|
|
34
|
+
"Authorization": f"Token {self.__token}",
|
|
35
|
+
"Content-Type": "application/json",
|
|
36
|
+
}
|
|
24
37
|
try:
|
|
25
|
-
response = self.__session.get(
|
|
38
|
+
response = self.__session.get(
|
|
39
|
+
url=url, headers=headers, params=request, verify=VERIFY_CERTIFICATE
|
|
40
|
+
)
|
|
26
41
|
if response.status_code != 200:
|
|
27
42
|
logger.error(response.json())
|
|
28
43
|
raise ApiError(response.json())
|
|
29
|
-
|
|
44
|
+
engagements = EngagementList().from_dict(response.json())
|
|
45
|
+
while response.json().get("next", None):
|
|
46
|
+
next_url = response.json().get("next")
|
|
47
|
+
next_url = next_url.replace("http://", "https://", 1)
|
|
48
|
+
response = self.__session.get(
|
|
49
|
+
next_url, headers=headers, data={}, verify=VERIFY_CERTIFICATE
|
|
50
|
+
)
|
|
51
|
+
if response.status_code != 200:
|
|
52
|
+
raise ApiError(response.json())
|
|
53
|
+
engagements.results += (
|
|
54
|
+
EngagementList().from_dict(response.json()).results
|
|
55
|
+
)
|
|
30
56
|
except Exception as e:
|
|
31
57
|
raise ApiError(e)
|
|
32
|
-
return
|
|
58
|
+
return engagements
|
|
33
59
|
|
|
34
60
|
def post_engagement(self, engagement_name, product_id):
|
|
35
61
|
url = f"{self.__host}/api/v2/engagements/"
|
|
@@ -43,9 +69,14 @@ class EngagementRestConsumer:
|
|
|
43
69
|
"status": "In Progress",
|
|
44
70
|
}
|
|
45
71
|
)
|
|
46
|
-
headers = {
|
|
72
|
+
headers = {
|
|
73
|
+
"Authorization": f"Token {self.__token}",
|
|
74
|
+
"Content-Type": "application/json",
|
|
75
|
+
}
|
|
47
76
|
try:
|
|
48
|
-
response = self.__session.post(
|
|
77
|
+
response = self.__session.post(
|
|
78
|
+
url=url, headers=headers, data=data, verify=VERIFY_CERTIFICATE
|
|
79
|
+
)
|
|
49
80
|
if response.status_code != 201:
|
|
50
81
|
logger.error(response.json())
|
|
51
82
|
raise ApiError(response.json())
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py
CHANGED
|
@@ -23,6 +23,13 @@ class FindingRestConsumer:
|
|
|
23
23
|
if response.status_code != 200:
|
|
24
24
|
raise ApiError(response.json())
|
|
25
25
|
findings = FindingList.from_dict(response.json())
|
|
26
|
+
while response.json().get("next", None):
|
|
27
|
+
next_url = response.json().get("next")
|
|
28
|
+
next_url = next_url.replace("http://", "https://", 1)
|
|
29
|
+
response = self.__session.get(next_url, headers=headers, data={}, verify=VERIFY_CERTIFICATE)
|
|
30
|
+
if response.status_code != 200:
|
|
31
|
+
raise ApiError(response.json())
|
|
32
|
+
findings.results += FindingList.from_dict(response.json()).results
|
|
26
33
|
return findings
|
|
27
34
|
|
|
28
35
|
def close(self, request, id):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.8.
|
|
1
|
+
version = '1.8.11'
|
|
@@ -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=QINaXfXDoD1Uuf648DtGP8UCoV9DzGlQZO8UPxKpqxI,18
|
|
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
|
|
@@ -8,7 +8,7 @@ devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBS
|
|
|
8
8
|
devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
devsecops_engine_tools/engine_core/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
-
devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=
|
|
11
|
+
devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=YLeOj4O7kNsUx8RD6pwBQdFLYbkm7Eh-F-ohZ3jFGbs,599
|
|
12
12
|
devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=4Cn65ARrCw2xMAYEwoNlPUYVo5NVO0IPd6tj0wGDZig,498
|
|
13
13
|
devsecops_engine_tools/engine_core/src/domain/model/finding.py,sha256=MntDksQuPt1L-1Ww3nK7NbMLfVwRjxPGCN_oHYXbbWk,383
|
|
14
14
|
devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzCwsGxnrlvvk84S5iNYJRDQWbaQP9MwR3N7tVM,422
|
|
@@ -22,10 +22,10 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gate
|
|
|
22
22
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=u_ivbmCyymw0Je7gRFg0uD9iDmZfTbteH5UwcgP0JAs,191
|
|
23
23
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=ROBsh7Lyu62a5RqZ4KgGQcwrBzbHRwxAJ9Rj3LoupQc,602
|
|
24
24
|
devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
|
|
25
|
-
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=
|
|
25
|
+
devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=c98JSdYYPyr82VZR4MRy49xSBVxueERbAS1mWwKqV6g,878
|
|
26
26
|
devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
27
|
devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=FCe7Yw42eK0u71sLivQvAF-bMwZqj4aGFdBTjy7LsVI,15955
|
|
28
|
-
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=
|
|
28
|
+
devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=Au_ZXqwDi3CbVpQWAd29oruDAcZ1RX4e7OABSa_aRyA,7093
|
|
29
29
|
devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=ee9ULqKGYfaxBUO8RNq-Znh4dbojghIauH4YIjYx9QU,6730
|
|
30
30
|
devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
|
|
31
31
|
devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -36,7 +36,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
|
|
|
36
36
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=blI4ZrquRE4y6DJ7N2YRx1nL0wrAXvdpx0fLSUf5qwA,4831
|
|
38
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=
|
|
39
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=oeaUC7GaWAjd6u8lFiTn0gdI7t7MWWzz3KpnJnF2cSE,16458
|
|
40
40
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
41
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=pxlgjhX4-Dssn-XHKK8AdCOj6Ry6VcQtoDf5q8CxTks,3731
|
|
42
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -198,11 +198,12 @@ devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_
|
|
|
198
198
|
devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py,sha256=pCwlPDDl-hgvZ9gvceuC8GsKbsMhRm3ykhFFVByVqcI,664
|
|
199
199
|
devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py,sha256=r-PpcKlyuXzKHx6ao4SuVI9dOKMVnjL1U_b-yfJK0o4,2387
|
|
200
200
|
devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py,sha256=
|
|
201
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py,sha256=jDEfwz998pwqOZW6p7ZHBrfi8jbpYYR9N0SpekaqtdQ,310
|
|
202
202
|
devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py,sha256=WDvgS22lIJJNoIM4b6mrxT8Bu_6hADmrCOZgvf5yGVY,45
|
|
203
203
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
204
204
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py,sha256=RfHBfE0TFV9kEI21FIlfodqYIXNRCcux4h0sLgCkqhA,1879
|
|
205
205
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=xC4rOfTv66uaBqbsP3Xe5_BfG84b8lgLq68-3Al9yag,2297
|
|
206
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py,sha256=sPTeQs6QHg07QNthqhY3caVbG54vDkd_E_KJpBvgTk4,878
|
|
206
207
|
devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=SBbFawywfvfpqFjFdnK-LaoC05bqJe2-ee6gYntMLUk,1727
|
|
207
208
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
208
209
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -222,13 +223,14 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.p
|
|
|
222
223
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=VyV1LzeJDk51RYXz8EiweLHccpsuwTY3hTkAnkscX2E,7211
|
|
223
224
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
225
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py,sha256=BUOdvP39bEMQ6Unr2hB28eljVGU2Uv8dDEkzRyEJgyQ,2650
|
|
226
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
|
|
225
227
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
|
|
226
228
|
devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=6Ik3_IUPgsvVQ3uXMV6nkxdT89-lVNQVdvVWzmZSxgE,6794
|
|
227
229
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
228
230
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
229
231
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py,sha256=v11qQYdGp2XmnQ3Xk_i69zHNPmNQ7rR7g9_IcNm34so,2577
|
|
230
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=
|
|
231
|
-
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=
|
|
232
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=39qqmTxECRY5IoFvK_B_R0vfwfJwLbdhGt_pcdvdVIE,3571
|
|
233
|
+
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=k-z2tg_NPKMni7rZgXMZa2-t8_8F35r8YtF1EcjMyDs,2355
|
|
232
234
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=68Qd8o0oSxFG-3cRlX97BkX9muS6k64DGslGtX9sx6M,5897
|
|
233
235
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=viYd3_x-KAXGJE7b-AmLCRnfARTZ_1haLprEWcROcLc,2660
|
|
234
236
|
devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=9Lzsh9HCs4rbJ2b6X11renvYU3g6s-1q2NUDwbYX0qY,3051
|
|
@@ -254,8 +256,8 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
|
|
|
254
256
|
devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
|
|
255
257
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
256
258
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
|
|
257
|
-
devsecops_engine_tools-1.8.
|
|
258
|
-
devsecops_engine_tools-1.8.
|
|
259
|
-
devsecops_engine_tools-1.8.
|
|
260
|
-
devsecops_engine_tools-1.8.
|
|
261
|
-
devsecops_engine_tools-1.8.
|
|
259
|
+
devsecops_engine_tools-1.8.11.dist-info/METADATA,sha256=3FKECyn44sXgZhMzpeadfIq9fNv2WHlTy800kbrQrOE,10444
|
|
260
|
+
devsecops_engine_tools-1.8.11.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
261
|
+
devsecops_engine_tools-1.8.11.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
|
|
262
|
+
devsecops_engine_tools-1.8.11.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
263
|
+
devsecops_engine_tools-1.8.11.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.8.10.dist-info → devsecops_engine_tools-1.8.11.dist-info}/top_level.txt
RENAMED
|
File without changes
|