devsecops-engine-tools 1.36.0__py3-none-any.whl → 1.38.1__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.

Files changed (22) hide show
  1. devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +41 -1
  2. devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +1 -1
  3. devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +1 -1
  4. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +7 -8
  5. devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +2 -2
  6. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +2 -2
  7. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +9 -6
  8. devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +6 -3
  9. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +5 -1
  10. devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +7 -0
  11. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +3 -2
  12. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +1 -0
  13. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +70 -34
  14. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/reimport_scan.py +74 -0
  15. devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py +1 -1
  16. devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py +1 -1
  17. devsecops_engine_tools/version.py +1 -1
  18. {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/METADATA +7 -7
  19. {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/RECORD +22 -21
  20. {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/WHEEL +0 -0
  21. {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/entry_points.txt +0 -0
  22. {devsecops_engine_tools-1.36.0.dist-info → devsecops_engine_tools-1.38.1.dist-info}/top_level.txt +0 -0
@@ -83,6 +83,26 @@ def get_inputs_from_cli(args):
83
83
  parser.add_argument(
84
84
  "-t",
85
85
  "--tool",
86
+ choices=[
87
+ "nuclei",
88
+ "bearer",
89
+ "checkov",
90
+ "kics",
91
+ "kubescape",
92
+ "trufflehog",
93
+ "gitleaks",
94
+ "prisma",
95
+ "trivy",
96
+ "xray",
97
+ "dependency_check",
98
+ ],
99
+ type=str,
100
+ required=False,
101
+ help="Tool to execute according to the module",
102
+ )
103
+ parser.add_argument(
104
+ "-m",
105
+ "--module",
86
106
  choices=[
87
107
  "engine_iac",
88
108
  "engine_dast",
@@ -94,7 +114,7 @@ def get_inputs_from_cli(args):
94
114
  ],
95
115
  type=str,
96
116
  required=True,
97
- help="Tool to execute",
117
+ help="Module to execute",
98
118
  )
99
119
  parser.add_argument(
100
120
  "-fp",
@@ -176,12 +196,32 @@ def get_inputs_from_cli(args):
176
196
  help="File path containing the configuration, structured according to the documentation, \
177
197
  for the API or web application to be scanned by the DAST tool."
178
198
  )
199
+
200
+ TOOLS = {
201
+ "engine_iac": ["checkov", "kics", "kubescape"],
202
+ "engine_secret": ["trufflehog", "gitleaks"],
203
+ "engine_container": ["prisma", "trivy"],
204
+ "engine_dependencies": ["xray", "dependency_check"],
205
+ "engine_code": ["bearer"],
206
+ "engine_dast": ["nuclei"],
207
+ "engine_risk": None,
208
+ }
209
+
179
210
  args = parser.parse_args()
211
+
212
+ if args.module in TOOLS and args.tool:
213
+ allowed_tools = TOOLS[args.module]
214
+ if allowed_tools is None:
215
+ parser.error(f"The tool flag should not be used with module {args.module}")
216
+ elif allowed_tools and (args.tool not in allowed_tools):
217
+ parser.error(f"Invalid value for tool. Allowed values for the provided module {args.module} are: {', '.join(allowed_tools)}")
218
+
180
219
  return {
181
220
  "platform_devops": args.platform_devops,
182
221
  "remote_config_repo": args.remote_config_repo,
183
222
  "remote_config_branch": args.remote_config_branch,
184
223
  "tool": args.tool,
224
+ "module": args.module,
185
225
  "folder_path": args.folder_path,
186
226
  "platform": args.platform,
187
227
  "use_secrets_manager": args.use_secrets_manager,
@@ -3,5 +3,5 @@ from abc import ABCMeta, abstractmethod
3
3
 
4
4
  class MetricsManagerGateway(metaclass=ABCMeta):
5
5
  @abstractmethod
6
- def send_metrics(self, config_tool, tool, file_path):
6
+ def send_metrics(self, config_tool, module, file_path):
7
7
  "send_metrics"
@@ -34,7 +34,7 @@ class BreakBuild:
34
34
  def _apply_policie_exception_new_vulnerability_industry(
35
35
  self, findings_list: "list[Finding]", exclusions: "list[Exclusions]", args: any
36
36
  ):
37
- if args["tool"] in ["engine_container", "engine_dependencies"]:
37
+ if args["module"] in ["engine_container", "engine_dependencies"]:
38
38
  date_actual = datetime.now(pytz.utc)
39
39
  for item in findings_list:
40
40
  if item.published_date_cve:
@@ -47,7 +47,6 @@ from devsecops_engine_tools.engine_utilities import settings
47
47
 
48
48
  logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
49
49
 
50
-
51
50
  class HandleScan:
52
51
  def __init__(
53
52
  self,
@@ -69,7 +68,7 @@ class HandleScan:
69
68
  )
70
69
  if dict_args["use_secrets_manager"] == "true":
71
70
  secret_tool = self.secrets_manager_gateway.get_secret(config_tool)
72
- if "engine_iac" in dict_args["tool"]:
71
+ if "engine_iac" in dict_args["module"]:
73
72
  findings_list, input_core = runner_engine_iac(
74
73
  dict_args,
75
74
  config_tool["ENGINE_IAC"]["TOOL"],
@@ -81,7 +80,7 @@ class HandleScan:
81
80
  config_tool, input_core, dict_args, secret_tool, env
82
81
  )
83
82
  return findings_list, input_core
84
- elif "engine_container" in dict_args["tool"]:
83
+ elif "engine_container" in dict_args["module"]:
85
84
  findings_list, input_core, sbom_components = runner_engine_container(
86
85
  dict_args,
87
86
  config_tool["ENGINE_CONTAINER"]["TOOL"],
@@ -97,7 +96,7 @@ class HandleScan:
97
96
  sbom_components,
98
97
  )
99
98
  return findings_list, input_core
100
- elif "engine_dast" in dict_args["tool"]:
99
+ elif "engine_dast" in dict_args["module"]:
101
100
  findings_list, input_core = runner_engine_dast(
102
101
  dict_args,
103
102
  config_tool["ENGINE_DAST"],
@@ -108,7 +107,7 @@ class HandleScan:
108
107
  config_tool, input_core, dict_args, secret_tool, env
109
108
  )
110
109
  return findings_list, input_core
111
- elif "engine_code" in dict_args["tool"]:
110
+ elif "engine_code" in dict_args["module"]:
112
111
  findings_list, input_core = runner_engine_code(
113
112
  dict_args,
114
113
  config_tool["ENGINE_CODE"]["TOOL"],
@@ -118,7 +117,7 @@ class HandleScan:
118
117
  config_tool, input_core, dict_args, secret_tool, env
119
118
  )
120
119
  return findings_list, input_core
121
- elif "engine_secret" in dict_args["tool"]:
120
+ elif "engine_secret" in dict_args["module"]:
122
121
  findings_list, input_core = runner_secret_scan(
123
122
  dict_args,
124
123
  config_tool["ENGINE_SECRET"]["TOOL"],
@@ -129,7 +128,7 @@ class HandleScan:
129
128
  config_tool, input_core, dict_args, secret_tool, env
130
129
  )
131
130
  return findings_list, input_core
132
- elif "engine_dependencies" in dict_args["tool"]:
131
+ elif "engine_dependencies" in dict_args["module"]:
133
132
  findings_list, input_core, sbom_components = runner_engine_dependencies(
134
133
  dict_args,
135
134
  config_tool,
@@ -156,7 +155,7 @@ class HandleScan:
156
155
  if input_core.path_file_results:
157
156
  self.vulnerability_management.send_vulnerability_management(
158
157
  VulnerabilityManagement(
159
- config_tool[dict_args["tool"].upper()]["TOOL"],
158
+ config_tool[dict_args["module"].upper()]["TOOL"],
160
159
  input_core,
161
160
  dict_args,
162
161
  secret_tool,
@@ -45,7 +45,7 @@ class MetricsManager:
45
45
  "date": datetime.datetime.now().strftime("%Y-%m-%d"),
46
46
  "component": scope_pipeline,
47
47
  "stage": input_core.stage_pipeline,
48
- "check_type": dict_args["tool"],
48
+ "check_type": dict_args["module"],
49
49
  "environment": define_env(
50
50
  self.devops_platform_gateway.get_variable("environment"),
51
51
  self.devops_platform_gateway.get_variable("branch_name"),
@@ -55,5 +55,5 @@ class MetricsManager:
55
55
  }
56
56
  json.dump(body, file)
57
57
  self.metrics_manager_gateway.send_metrics(
58
- config_tool, dict_args["tool"], file_path
58
+ config_tool, dict_args["module"], file_path
59
59
  )
@@ -23,7 +23,7 @@ class S3Manager(MetricsManagerGateway):
23
23
  except client.exceptions.NoSuchKey:
24
24
  return ""
25
25
 
26
- def send_metrics(self, config_tool, tool, file_path):
26
+ def send_metrics(self, config_tool, module, file_path):
27
27
  credentials_role = assume_role(config_tool["METRICS_MANAGER"]["AWS"]["ROLE_ARN"]) if config_tool["METRICS_MANAGER"]["AWS"]["USE_ROLE"] else None
28
28
  session = boto3.session.Session()
29
29
 
@@ -41,7 +41,7 @@ class S3Manager(MetricsManagerGateway):
41
41
  region_name=config_tool["METRICS_MANAGER"]["AWS"]["REGION_NAME"]
42
42
  )
43
43
  date = datetime.datetime.now()
44
- path_bucket = f'engine_tools/{tool}/{date.strftime("%Y")}/{date.strftime("%m")}/{date.strftime("%d")}/{file_path.split("/")[-1]}'
44
+ path_bucket = f'engine_tools/{module}/{date.strftime("%Y")}/{date.strftime("%m")}/{date.strftime("%d")}/{file_path.split("/")[-1]}'
45
45
 
46
46
  data = self._get_s3_data(
47
47
  client, config_tool["METRICS_MANAGER"]["AWS"]["BUCKET"], path_bucket
@@ -90,10 +90,10 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
90
90
  for branch in vulnerability_management.config_tool[
91
91
  "VULNERABILITY_MANAGER"
92
92
  ]["BRANCH_FILTER"]
93
- ) or (vulnerability_management.dict_args["tool"] == "engine_secret"):
94
- tags = vulnerability_management.dict_args["tool"]
95
- if vulnerability_management.dict_args["tool"] == "engine_iac":
96
- tags = f"{vulnerability_management.dict_args['tool']}_{'_'.join(vulnerability_management.dict_args['platform'])}"
93
+ ) or (vulnerability_management.dict_args["module"] == "engine_secret"):
94
+ tags = vulnerability_management.dict_args["module"]
95
+ if vulnerability_management.dict_args["module"] == "engine_iac":
96
+ tags = f"{vulnerability_management.dict_args['module']}_{'_'.join(vulnerability_management.dict_args['platform'])}"
97
97
 
98
98
  use_cmdb = vulnerability_management.config_tool[
99
99
  "VULNERABILITY_MANAGER"
@@ -125,7 +125,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
125
125
  test_string = "//".join([url_parts[0] + "/", url_parts[1]])
126
126
  print(
127
127
  "Report sent to vulnerability management: ",
128
- f"{test_string}?tags={vulnerability_management.dict_args['tool']}",
128
+ f"{test_string}?tags={vulnerability_management.dict_args['module']}",
129
129
  )
130
130
  else:
131
131
  raise ExceptionVulnerabilityManagement(response)
@@ -185,7 +185,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
185
185
  "MAX_RETRIES_QUERY"
186
186
  ]
187
187
 
188
- tool = dict_args["tool"]
188
+ tool = dict_args["module"]
189
189
 
190
190
  risk_accepted_query_params = {
191
191
  "risk_accepted": True,
@@ -451,6 +451,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
451
451
  "branch_tag": vulnerability_management.branch_tag,
452
452
  "commit_hash": vulnerability_management.commit_hash,
453
453
  "service": vulnerability_management.input_core.scope_pipeline,
454
+ "test_title": tags,
454
455
  "environment": (
455
456
  enviroment_mapping[vulnerability_management.environment.lower()]
456
457
  if vulnerability_management.environment is not None
@@ -464,6 +465,8 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
464
465
  "expression": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
465
466
  "DEFECT_DOJO"
466
467
  ]["CMDB"]["REGEX_EXPRESSION_CMDB"],
468
+ "reimport_scan": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
469
+ "DEFECT_DOJO"]["REIMPORT_SCAN"]
467
470
  }
468
471
 
469
472
  if use_cmdb:
@@ -29,8 +29,8 @@ def init_engine_core(
29
29
  )
30
30
  Printers.print_logo_tool(config_tool["BANNER"])
31
31
 
32
- if config_tool[args["tool"].upper()]["ENABLED"]:
33
- if args["tool"] == "engine_risk":
32
+ if config_tool[args["module"].upper()]["ENABLED"]:
33
+ if args["module"] == "engine_risk":
34
34
  results, input_core = HandleRisk(
35
35
  vulnerability_management_gateway,
36
36
  secrets_manager_gateway,
@@ -39,6 +39,9 @@ def init_engine_core(
39
39
  ).process(args, config_tool)
40
40
 
41
41
  else:
42
+ if args.get("tool"):
43
+ config_tool[args["module"].upper()]["TOOL"] = args.get("tool").upper()
44
+
42
45
  findings_list, input_core = HandleScan(
43
46
  vulnerability_management_gateway,
44
47
  secrets_manager_gateway,
@@ -59,6 +62,6 @@ def init_engine_core(
59
62
  print(
60
63
  devops_platform_gateway.message(
61
64
  "warning",
62
- "DevSecOps Engine Tool - {0} in maintenance...".format(args["tool"]),
65
+ "DevSecOps Engine Tool - {0} in maintenance...".format(args["module"]),
63
66
  )
64
67
  )
@@ -20,7 +20,11 @@ def runner_engine_dependencies(
20
20
  ):
21
21
  try:
22
22
  tools_mapping = {
23
- "XRAY": {"tool_run": XrayScan, "tool_deserializator": XrayDeserializator, "tool_sbom": sbom_tool_gateway},
23
+ "XRAY": {
24
+ "tool_run": XrayScan,
25
+ "tool_deserializator": XrayDeserializator,
26
+ "tool_sbom": sbom_tool_gateway
27
+ },
24
28
  "DEPENDENCY_CHECK": {
25
29
  "tool_run": DependencyCheckTool,
26
30
  "tool_deserializator": DependencyCheckDeserialize,
@@ -3,6 +3,9 @@ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
3
3
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import (
4
4
  ImportScanRestConsumer,
5
5
  )
6
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.reimport_scan import (
7
+ ReimportScanRestConsumer,
8
+ )
6
9
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import (
7
10
  ProductTypeRestConsumer,
8
11
  )
@@ -48,12 +51,16 @@ class DefectDojo:
48
51
  rest_scan_configuration = ScanConfigrationRestConsumer(
49
52
  request, session=SessionManager()
50
53
  )
54
+ rest_reimport_scan = ReimportScanRestConsumer(
55
+ request, session=SessionManager()
56
+ )
51
57
  uc = ImportScanUserCase(
52
58
  rest_import_scan,
53
59
  rest_product_type,
54
60
  rest_product,
55
61
  rest_scan_configuration,
56
62
  rest_engagement=rest_engagement,
63
+ rest_reimport_scan=rest_reimport_scan
57
64
  )
58
65
  return uc.execute(request)
59
66
  except ApiError as e:
@@ -52,10 +52,10 @@ class ImportScanRequest:
52
52
  cmdb_mapping: dict = None
53
53
  product_type_name_mapping: dict = None
54
54
  compact_remote_config_url: str = None
55
- # ** Expression
56
55
  expression: str = ""
57
- # ** Test url
58
56
  url: str = ""
57
+ reimport_scan: bool = None
58
+ test_title: str = ""
59
59
 
60
60
  @classmethod
61
61
  def from_dict(cls, obj):
@@ -100,6 +100,7 @@ class ImportScanRequest:
100
100
  product_type_name_mapping=obj.get("product_type_name_mapping"),
101
101
  expression=obj.get("expression"),
102
102
  compact_remote_config_url=obj.get("compact_remote_config_url"),
103
+ reimport_scan=obj.get("reimport_scan"),
103
104
  )
104
105
  return obj
105
106
 
@@ -219,6 +219,7 @@ class ImportScanSerializer(Schema):
219
219
  project_remote_config = fields.Str(required=False)
220
220
  # regulare expression
221
221
  expression = fields.Str(required=True)
222
+ reimport_scan = fields.Bool(required=False, default=False)
222
223
 
223
224
  @post_load
224
225
  def make_cmdb(self, data, **kwargs):
@@ -1,17 +1,17 @@
1
1
  import re
2
2
  import os
3
- from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
3
+ import urllib3
4
4
  from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
5
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
5
6
  from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
6
7
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import ImportScanRestConsumer
8
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.reimport_scan import ReimportScanRestConsumer
7
9
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import ProductTypeRestConsumer
8
10
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product import ProductRestConsumer
9
11
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.scan_configurations import (
10
- ScanConfigrationRestConsumer,
11
- )
12
+ ScanConfigrationRestConsumer)
12
13
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
13
14
  from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
14
- import urllib3
15
15
 
16
16
  logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
17
17
 
@@ -26,15 +26,76 @@ class ImportScanUserCase:
26
26
  rest_product: ProductRestConsumer,
27
27
  rest_scan_configuration: ScanConfigrationRestConsumer,
28
28
  rest_engagement: EngagementRestConsumer,
29
+ rest_reimport_scan: ReimportScanRestConsumer,
29
30
  ):
30
31
  self.__rest_import_scan = rest_import_scan
31
32
  self.__rest_product_type = rest_product_type
32
33
  self.__rest_product = rest_product
33
34
  self.__rest_scan_configurations = rest_scan_configuration
34
35
  self.__rest_engagement = rest_engagement
36
+ self.__rest_reimport_scan = rest_reimport_scan
35
37
 
36
- def execute(self, request: ImportScanRequest) -> ImportScanRequest:
38
+
39
+ def get_file_type(self, path_file):
40
+ __, extension = os.path.splitext(path_file)
41
+ dict_rule_type_file = {
42
+ ".csv": "text/csv",
43
+ ".json": "apllication/json",
44
+ ".xml": "aplication/xml",
45
+ ".sarif": "aplication/json",
46
+ }
47
+ file_type = dict_rule_type_file.get(extension)
48
+ return file_type
49
+
50
+ def import_scan(self, request, api_scan_bool):
37
51
  response = None
52
+
53
+ if api_scan_bool:
54
+ response = self.__rest_import_scan.import_scan_api(request)
55
+ logger.info(f"End process Succesfull!!!: {response}")
56
+ else:
57
+ try:
58
+ file_type = self.get_file_type(request.file)
59
+ if file_type is None:
60
+ raise ApiError("File format not allowed")
61
+
62
+ with open(request.file, "rb") as file:
63
+ logger.info(f"read {file_type} file successful !!!")
64
+ files = [("file", (request.file, file, file_type))]
65
+ response = self.__rest_import_scan.import_scan(request, files)
66
+
67
+ except Exception as e:
68
+ raise ApiError(e)
69
+
70
+ response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
71
+ return response
72
+
73
+ def reimport_scan(self, request, api_scan_bool):
74
+ response = None
75
+
76
+ if api_scan_bool:
77
+ logger.debug(f"reimport scan :{self.__rest_reimport_scan}")
78
+ response = self.__rest_reimport_scan.reimport_scan(request)
79
+ logger.info(f"End process Succesfull!!!: {response}")
80
+ else:
81
+ try:
82
+ logger.debug(f"reimport scan file :{self.__rest_reimport_scan}")
83
+ file_type = self.get_file_type(request.file)
84
+ if file_type is None:
85
+ raise ApiError("File format not allowed")
86
+
87
+ with open(request.file, "rb") as file:
88
+ logger.info(f"read {file_type} file successful !!!")
89
+ files = [("file", (request.file, file, file_type))]
90
+ response = self.__rest_reimport_scan.reimport_scan(request, files)
91
+
92
+ except Exception as e:
93
+ raise ApiError(e)
94
+
95
+ response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
96
+ return response
97
+
98
+ def execute(self, request: ImportScanRequest) -> ImportScanRequest:
38
99
  product_id = None
39
100
 
40
101
  if (request.product_name or request.product_type_name) == "":
@@ -101,33 +162,8 @@ class ImportScanUserCase:
101
162
  engagement = self.__rest_engagement.post_engagement(request.engagement_name, product_id)
102
163
  logger.debug(f"Egagement created: {engagement.name} whit product id {engagement.product}")
103
164
 
104
- if api_scan_bool:
105
- response = self.__rest_import_scan.import_scan_api(request)
106
- logger.info(f"End process Succesfull!!!: {response}")
165
+ if request.reimport_scan is True:
166
+ logger.debug("reimport scan flow")
167
+ return self.reimport_scan(request, api_scan_bool)
107
168
  else:
108
- try:
109
- file_type = self.get_file_type(request.file)
110
- if file_type is None:
111
- raise ApiError("File format not allowed")
112
-
113
- with open(request.file, "rb") as file:
114
- logger.info(f"read {file_type} file successful !!!")
115
- files = [("file", (request.file, file, file_type))]
116
- response = self.__rest_import_scan.import_scan(request, files)
117
-
118
- except Exception as e:
119
- raise ApiError(e)
120
-
121
- response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
122
- return response
123
-
124
- def get_file_type(self, path_file):
125
- __, extension = os.path.splitext(path_file)
126
- dict_rule_type_file = {
127
- ".csv": "text/csv",
128
- ".json": "apllication/json",
129
- ".xml": "aplication/xml",
130
- ".sarif": "aplication/json",
131
- }
132
- file_type = dict_rule_type_file.get(extension)
133
- return file_type
169
+ return self.import_scan(request, api_scan_bool)
@@ -0,0 +1,74 @@
1
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
2
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
3
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.settings.settings import VERIFY_CERTIFICATE
5
+ from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
6
+ from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
7
+
8
+ logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
9
+
10
+
11
+ class ReimportScanRestConsumer:
12
+
13
+ def __init__(self, request: ImportScanRequest, session: SessionManager):
14
+ self.__token = request.token_defect_dojo
15
+ self.__host = request.host_defect_dojo
16
+ self.__session = session._instance
17
+
18
+ def reimport_scan(self, request: ImportScanRequest, files) -> ImportScanRequest:
19
+ url = f"{self.__host}/api/v2/reimport-scan/"
20
+ logger.debug(f"URL: {url}")
21
+ payload = {
22
+ "scan_date": request.scan_date,
23
+ "minimum_severity": request.minimum_severity,
24
+ "active": request.active,
25
+ "verified": request.verified,
26
+ "scan_type": request.scan_type,
27
+ "endpoint_to_add": request.endpoint_to_add,
28
+ "file": files,
29
+ "product_type_name": request.product_type_name,
30
+ "product_name": request.product_name,
31
+ "engagement_name": request.engagement_name,
32
+ "engagement_end_date": request.engagement_end_date,
33
+ "source_code_management_uri": request.source_code_management_uri,
34
+ "auto_create_context": "true",
35
+ "deduplication_on_engagement": request.deduplication_on_engagement,
36
+ "lead": request.lead,
37
+ "push_to_jira": request.push_to_jira,
38
+ "environment": request.environment,
39
+ "build_id": request.build_id,
40
+ "branch_tag": request.branch_tag,
41
+ "commit_hash": request.commit_hash,
42
+ "api_scan_configuration": str(request.api_scan_configuration)
43
+ if request.api_scan_configuration != 0
44
+ else "",
45
+ "service": request.service,
46
+ "group_by": request.group_by,
47
+ "create_finding_groups_for_all_findings": request.create_finding_groups_for_all_findings,
48
+ "do_not_reactive"
49
+ "scan_type": request.scan_type,
50
+ "close_old_findings": request.close_old_findings,
51
+ "close_old_findings_product_scope": request.close_old_findings_product_scope,
52
+ "version": request.version,
53
+ "tags": request.tags,
54
+ "test_title": request.test_title,
55
+ }
56
+
57
+ headers = {"Authorization": f"Token {self.__token}"}
58
+ try:
59
+ response = self.__session.post(
60
+ url,
61
+ headers=headers,
62
+ data=payload,
63
+ files=files,
64
+ verify=VERIFY_CERTIFICATE
65
+ )
66
+ if response.status_code != 201:
67
+ logger.error(response.json())
68
+ raise ApiError(response.json())
69
+ logger.info(f"Sucessfull {response}")
70
+ response = ImportScanRequest.from_dict(response.json())
71
+ except Exception as e:
72
+ logger.error(f"from dict import Scan: {response.json()}")
73
+ raise ApiError(e)
74
+ return response
@@ -85,7 +85,7 @@ class ReportSonar:
85
85
  else:
86
86
  project_keys = self.sonar_gateway.get_project_keys(pipeline_name)
87
87
 
88
- args["tool"] = "sonarqube"
88
+ args["module"] = "sonarqube"
89
89
  vulnerability_manager = VulnerabilityManagement(
90
90
  scan_type = "SONARQUBE",
91
91
  input_core = input_core,
@@ -60,7 +60,7 @@ def init_report_sonar(
60
60
 
61
61
  if args["send_metrics"] == "true":
62
62
  MetricsManager(devops_platform_gateway, metrics_manager_gateway).process(
63
- config_tool, input_core, {"tool": "report_sonar"}, ""
63
+ config_tool, input_core, {"module": "report_sonar"}, ""
64
64
  )
65
65
  else:
66
66
  if not is_enabled:
@@ -1 +1 @@
1
- version = '1.36.0'
1
+ version = '1.38.1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.36.0
3
+ Version: 1.38.1
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -74,7 +74,7 @@ pip3 install devsecops-engine-tools
74
74
  ### Scan running - flags (CLI)
75
75
 
76
76
  ```bash
77
- devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --remote_config_branch ["remote_config_branch"] --tool ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container", "engine_risk", "engine_code"] --folder_path ["Folder path scan engine_iac, engine_code, engine_dependencies and engine_secret"] --platform ["k8s","cloudformation","docker", "openapi", "terraform"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --token_external_checks ["token_external_checks"] --xray_mode ["scan", "audit","build-scan"] --image_to_scan ["image_to_scan"] --dast_file_path ["dast_file_path"]
77
+ devsecops-engine-tools --platform_devops ["local","azure","github"] --remote_config_repo ["remote_config_repo"] --remote_config_branch ["remote_config_branch"] --module ["engine_iac", "engine_dast", "engine_secret", "engine_dependencies", "engine_container", "engine_risk", "engine_code"] --tool ["nuclei", "bearer", "checkov", "kics", "kubescape", "trufflehog", "gitleaks", "prisma", "trivy", "xray", "dependency_check"] --folder_path ["Folder path scan engine_iac, engine_code, engine_dependencies and engine_secret"] --platform ["k8s","cloudformation","docker", "openapi", "terraform"] --use_secrets_manager ["false", "true"] --use_vulnerability_management ["false", "true"] --send_metrics ["false", "true"] --token_cmdb ["token_cmdb"] --token_vulnerability_management ["token_vulnerability_management"] --token_engine_container ["token_engine_container"] --token_engine_dependencies ["token_engine_dependencies"] --token_external_checks ["token_external_checks"] --xray_mode ["scan", "audit","build-scan"] --image_to_scan ["image_to_scan"] --dast_file_path ["dast_file_path"]
78
78
  ```
79
79
 
80
80
  ### Structure Remote Config
@@ -184,7 +184,7 @@ $ set +a
184
184
 
185
185
 
186
186
  ```bash
187
- devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --tool engine_iac
187
+ devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Remote_Config --module engine_iac
188
188
 
189
189
  ```
190
190
 
@@ -198,13 +198,13 @@ devsecops-engine-tools --platform_devops local --remote_config_repo DevSecOps_Re
198
198
  docker pull bancolombia/devsecops-engine-tools
199
199
  ```
200
200
  ```bash
201
- docker run --rm -v ./folder_to_analyze:/folder_to_analyze bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo docker_default_remote_config --tool engine_iac --folder_path /folder_to_analyze
201
+ docker run --rm -v ./folder_to_analyze:/folder_to_analyze bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo docker_default_remote_config --module engine_iac --folder_path /folder_to_analyze
202
202
  ```
203
203
 
204
204
  The docker image have it own default remote config with basic configuration called docker_default_remote_config, but you can define your own config and pass it as volume
205
205
 
206
206
  ```bash
207
- docker run --rm -v ./folder_to_analyze:/folder_to_analyze -v ./custom_remote_config:/custom_remote_config bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo custom_remote_config --tool engine_iac --folder_path /folder_to_analyze
207
+ docker run --rm -v ./folder_to_analyze:/folder_to_analyze -v ./custom_remote_config:/custom_remote_config bancolombia/devsecops-engine-tools:latest devsecops-engine-tools --platform_devops local --remote_config_repo custom_remote_config --module engine_iac --folder_path /folder_to_analyze
208
208
  ```
209
209
 
210
210
 
@@ -234,7 +234,7 @@ stages:
234
234
  - script: |
235
235
  # Install devsecops-engine-tools
236
236
  pip3 install -q devsecops-engine-tools
237
- devsecops-engine-tools --platform_devops azure --remote_config_repo remote_config --tool engine_iac
237
+ devsecops-engine-tools --platform_devops azure --remote_config_repo remote_config --module engine_iac
238
238
  displayName: "Engine Tools"
239
239
  env:
240
240
  SYSTEM_ACCESSTOKEN: $(System.AccessToken)
@@ -285,7 +285,7 @@ jobs:
285
285
  run: |
286
286
  # Install devsecops-engine-tools
287
287
  pip3 install -q devsecops-engine-tools
288
- output=$(devsecops-engine-tools --platform_devops github --remote_config_repo remote_config --tool engine_iac)
288
+ output=$(devsecops-engine-tools --platform_devops github --remote_config_repo remote_config --module engine_iac)
289
289
  echo "$output"
290
290
  if [[ $output == *"✘Failed"* ]]; then
291
291
  exit 1
@@ -1,9 +1,9 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=Bm0QlJAY4Gy2BV82t6eMzctMh_SORArcckv0IqNoz7g,19
2
+ devsecops_engine_tools/version.py,sha256=k-dFbsHP_yN2nl0ULlETXy87V3IRDfb4Cjk-70sRNPc,19
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
6
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=panasPdwMUKZYgcQXQdMqTjOISzx0OQcmsS61EeMucI,8194
6
+ devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=7KqgqvdENk5e0uFkMbRWx5fSmQK0MAnX2NOlj9R57eI,9429
7
7
  devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
@@ -20,25 +20,25 @@ devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=TCBECuvo
20
20
  devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=04ALQoTM4uoea9s505WCDw18J3Cvu6phf54ZTKODN64,552
21
21
  devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py,sha256=-L7O48UlUe2wI1DRnpAdZ98SLge7pcvoUOXITgFaBLg,800
23
- devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=u_ivbmCyymw0Je7gRFg0uD9iDmZfTbteH5UwcgP0JAs,191
23
+ devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=wApR5faZG5YqprWrDBMM9b4V7sBraJUxDmIUNGi0zqg,193
24
24
  devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=ROBsh7Lyu62a5RqZ4KgGQcwrBzbHRwxAJ9Rj3LoupQc,602
25
25
  devsecops_engine_tools/engine_core/src/domain/model/gateway/sbom_manager.py,sha256=HpkUZYbmW72r4KDIPWwDmAOU_uawmKaexxmWheR9QAA,321
26
26
  devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
27
27
  devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=MsNHO4x78KqMkJ3u3gxPltyBIqP5gB3tRBlN-w7VtBg,1429
28
28
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=OLaovhcWWA6n1TkoSGZhnfjfQis1R33WztEN3DG6gII,16645
29
+ devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=g9JXQeWTi1cC-PFcLMcVFnX0QARZnXqzx2k9d5nA-_A,16647
30
30
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=RirHqsW5AhGjV7ITa13bW_BfM6VE99DffrPASoB9SN0,9403
31
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=HKwsK09-rRbW7y7aOrsCJLGaa279XeUB3M8k6SsGFtA,10723
32
- devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
31
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=iPv_wayjgbKvc0o2bZcFtBVXkT-uJRo1ynED--46ZCg,10736
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=4h1k5EQnL_3NoGI6oRyVibkN5u3s4j5VUthNU1m1zQc,2206
36
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=xLPwfh8FQzP5CldRj0ev8LsSxFO4A_i88EnNGBPuN2g,2210
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=lNjYo83p3lovwfW4BeBtHQZckZl9m-9jlcIB-DesqhY,5316
40
40
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=erkwrgzqUXArghRmFfgyWiS0UeQmo0eSKIgqkvmcRMA,29388
41
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=UoNuHkx3UIeXjgJJk8YxtjT9Lq9LHt1N-fKNFKmkOdA,29572
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=cn9VGDaD9gUnJrLn9vEkQvfqYHIJftGE9ZACHEUOUxo,4132
44
44
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -50,7 +50,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_lo
50
50
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/syft/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/syft/syft.py,sha256=hP5MitHTeZf3Ia-xwi5bUdIU5hIwbUNuDSzcsqlxG5c,4457
52
52
  devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
- devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=o0H5Cc6lFzhE6yuzmV2Mj5Aub92-16TVuagXa3YLg9Q,2163
53
+ devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py,sha256=XzrvNHnVe7JEBFoi0je7iyddGAUSRZ5jxPjR77FDOss,2306
54
54
  devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py,sha256=wfy_PosHS0rrvkdiUYczxIcc8ZNwfqzWwqVxrmRTCBI,264
56
56
  devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py,sha256=lDtaozInb5m2R8Y-oGQasroksCRw_N_Ltz7gLkSguX8,380
@@ -220,7 +220,7 @@ devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__
220
220
  devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
221
  devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
222
  devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
- devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=KE-hXWUAc24f86xts7mvi_7y9HEzKHLMZp-8uLvNbm0,1983
223
+ devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py,sha256=0M43cNGZ_dU3rzOf7985N7uvkj-M2u3inAVZVgBcBfY,2047
224
224
  devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
225
  devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
226
  devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -257,7 +257,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py,sha256=WDvgS2
257
257
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
258
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/component.py,sha256=Y6vA1nRfMCoqJEceRBDQ_QLpIKASqB-t8V1yqao-eUQ,1175
259
259
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py,sha256=tRvNN-zVKBJbHMvfW97SCsZoyjGaKttcQhLOKrbjK9E,2079
260
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=gJMBVtE--Kvdc908fQa2T35mYyBXAWNTxM0DKsZ7e-w,2615
260
+ devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=WKx_nBZV9bZj-Y9UAg-C4SeCapbRhQb7475lcuzlGVg,2943
261
261
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py,sha256=sPTeQs6QHg07QNthqhY3caVbG54vDkd_E_KJpBvgTk4,878
262
262
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=Cw5_TElo0D0Ec8X0lu-La2H9Pp1rsrmw-2Wv-0w_9oI,1451
263
263
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding_exclusion.py,sha256=StnDFV3vGhBffBEs-jfV9nMprzRucm5VJqtZFWKF3Fo,689
@@ -276,17 +276,17 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_l
276
276
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py,sha256=-uVxaTkxnDmUUGQUdN9x_VKR8KJUagJKnGR6B1emoEU,577
277
277
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
278
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py,sha256=RinG3ISc-u_3VXVqntwdcQvZoQdmHPCvDHWSvnkCkcU,2619
279
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=UfvICLF-Wjii3iqvsRq0Tpc-quK4t3oS8U79tozzjfA,5014
279
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=bISidRCaCMTXZBMOUlvQWW1yCLMPKRU0MCq2Nk9P7ZY,5085
280
280
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
281
281
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py,sha256=4IQLjqgyImVdn8AxoU3UKgXnvU-F-x7Tm2bJdp6nHm4,5265
282
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=AYYPtuAOKagT5qmFvdwuGQ_GupZfQNdMCyMaKzCkTDE,7290
282
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=CvAxMDQBgqI7sCE8wGL7PYlyhpUQQJT6iU763EngYmc,7354
283
283
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
284
284
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py,sha256=BUOdvP39bEMQ6Unr2hB28eljVGU2Uv8dDEkzRyEJgyQ,2650
285
285
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/component.py,sha256=_icc-ZAqw-aVgE5J4VH8Q7fSqpCgEGcfmurgRIN9NqM,448
286
286
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
287
287
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
288
288
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding_exclusion.py,sha256=VqdwBiQGc9XFpatvbXGL837LtTxkWlfhWH46W1cTbCg,455
289
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=2Hjhquy_tAwww3YOVY_EuO7S3YSN8DAKH8Q4uEmzDIk,6931
289
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=N31WBga-wu0inWOuikasSUP9ASemDJtrcHg31whCALM,8573
290
290
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/product.py,sha256=6f6eABdC79zOopMe_Rif3XoGG-yFfq9x_EOkevTuGDY,368
291
291
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
292
292
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -298,6 +298,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapt
298
298
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=68Qd8o0oSxFG-3cRlX97BkX9muS6k64DGslGtX9sx6M,5897
299
299
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=DhiLPv8KyRhHBRhvF0ULhchhGAT8SQyn1ftiuou_aKw,2576
300
300
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=x-Gh2BEP6IZccS2m_DLB8xI6aEkS19J0ZUpP2mjY88o,3078
301
+ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/reimport_scan.py,sha256=6Wtg88p9WFdWjEAfNT2qjUcRGRg6wmruvuKcmajG3A8,3469
301
302
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py,sha256=YVIHiXPkJ8m1nOW7lG8LGbST16eMZoJwFQcrRRU7R6k,3089
302
303
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
304
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py,sha256=5ni59GuAHT-avpWNc4FSedVpoFRTGRNzjQJkAXpWv6c,28
@@ -327,13 +328,13 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/__init__.py,s
327
328
  devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
329
  devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/sonar_gateway.py,sha256=mgycD3bzC_BYv7qT0tMLAro9hyNOvi4gJRzceYNF0t8,1339
329
330
  devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
- devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=DnJowGn2mI2JvYjFTyrcZ6MOj2RrHk1xJt-kLWu0Z1k,9493
331
+ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=c8GwlcR6NvLV1vuIAdXb4yAmsxdgHptH0HSCRWmW57g,9495
331
332
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
333
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
334
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
335
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/sonarqube_report.py,sha256=BpCLMgFQjytZc1HfZ5hXqX44E8T0JhLpAaNOVq5pFjo,4909
335
336
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
- devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=cAPH9-jjnAvF_hH5_UOSG2pndycAxJgpN9e6K8Aufso,2603
337
+ devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=wn692qaSzqrYRDL829m9AVzddJlQi9aPHfUTN9qejq8,2605
337
338
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
338
339
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/utils.py,sha256=SGOWrkzQrvOt9bRhhSfgiMzj1695e1W0B9ox9C1ihQI,294
339
340
  devsecops_engine_tools/engine_utilities/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -347,8 +348,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
347
348
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
348
349
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
349
350
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=XFap4yOK7ItLWsqbwDhvLd7NpDhs7i-UGJAMD6jjd7w,6687
350
- devsecops_engine_tools-1.36.0.dist-info/METADATA,sha256=2dCoiA9e74VNmhcbrg4CZHSlxAww3jN5cstilXxvRg4,11605
351
- devsecops_engine_tools-1.36.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
352
- devsecops_engine_tools-1.36.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
353
- devsecops_engine_tools-1.36.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
354
- devsecops_engine_tools-1.36.0.dist-info/RECORD,,
351
+ devsecops_engine_tools-1.38.1.dist-info/METADATA,sha256=DtSVZdHmHEFqDcRbyaKx3iG9fOPcH-q9hcvbKWhQnmw,11750
352
+ devsecops_engine_tools-1.38.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
353
+ devsecops_engine_tools-1.38.1.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
354
+ devsecops_engine_tools-1.38.1.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
355
+ devsecops_engine_tools-1.38.1.dist-info/RECORD,,