devsecops-engine-tools 1.6.7__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 (231) hide show
  1. devsecops_engine_tools/__init__.py +0 -0
  2. devsecops_engine_tools/engine_core/__init__.py +0 -0
  3. devsecops_engine_tools/engine_core/src/__init__.py +0 -0
  4. devsecops_engine_tools/engine_core/src/applications/__init__.py +0 -0
  5. devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +124 -0
  6. devsecops_engine_tools/engine_core/src/deployment/__init__.py +0 -0
  7. devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py +0 -0
  8. devsecops_engine_tools/engine_core/src/domain/__init__.py +0 -0
  9. devsecops_engine_tools/engine_core/src/domain/model/__init__.py +0 -0
  10. devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py +9 -0
  11. devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +14 -0
  12. devsecops_engine_tools/engine_core/src/domain/model/finding.py +20 -0
  13. devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py +0 -0
  14. devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py +27 -0
  15. devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +7 -0
  16. devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py +13 -0
  17. devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py +7 -0
  18. devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +17 -0
  19. devsecops_engine_tools/engine_core/src/domain/model/input_core.py +12 -0
  20. devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py +3 -0
  21. devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py +7 -0
  22. devsecops_engine_tools/engine_core/src/domain/model/threshold.py +12 -0
  23. devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +20 -0
  24. devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py +0 -0
  25. devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +375 -0
  26. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +148 -0
  27. devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +59 -0
  28. devsecops_engine_tools/engine_core/src/infrastructure/__init__.py +0 -0
  29. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py +0 -0
  30. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py +0 -0
  31. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +52 -0
  32. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py +40 -0
  33. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py +0 -0
  34. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +103 -0
  35. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py +0 -0
  36. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +215 -0
  37. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py +0 -0
  38. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py +84 -0
  39. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py +0 -0
  40. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/runtime_local.py +71 -0
  41. devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py +0 -0
  42. devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +50 -0
  43. devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py +0 -0
  44. devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py +9 -0
  45. devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py +15 -0
  46. devsecops_engine_tools/engine_dast/__init__.py +0 -0
  47. devsecops_engine_tools/engine_dast/src/__init__.py +0 -0
  48. devsecops_engine_tools/engine_dast/src/applications/__init__.py +0 -0
  49. devsecops_engine_tools/engine_dast/src/deployment/__init__.py +0 -0
  50. devsecops_engine_tools/engine_dast/src/deployment/infrastructure/__init__.py +0 -0
  51. devsecops_engine_tools/engine_dast/src/domain/__init__.py +0 -0
  52. devsecops_engine_tools/engine_dast/src/domain/model/__init__.py +0 -0
  53. devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py +0 -0
  54. devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py +0 -0
  55. devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py +0 -0
  56. devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py +0 -0
  57. devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py +0 -0
  58. devsecops_engine_tools/engine_sast/__init__.py +0 -0
  59. devsecops_engine_tools/engine_sast/engine_iac/__init__.py +0 -0
  60. devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py +0 -0
  61. devsecops_engine_tools/engine_sast/engine_iac/src/applications/__init__.py +0 -0
  62. devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py +30 -0
  63. devsecops_engine_tools/engine_sast/engine_iac/src/deployment/__init__.py +0 -0
  64. devsecops_engine_tools/engine_sast/engine_iac/src/deployment/infrastructure/__init__.py +0 -0
  65. devsecops_engine_tools/engine_sast/engine_iac/src/domain/__init__.py +0 -0
  66. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/__init__.py +0 -0
  67. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py +24 -0
  68. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py +0 -0
  69. devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +6 -0
  70. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py +0 -0
  71. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +130 -0
  72. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py +0 -0
  73. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py +0 -0
  74. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py +0 -0
  75. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py +135 -0
  76. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +35 -0
  77. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +195 -0
  78. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/__init__.py +0 -0
  79. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/entry_point_tool.py +6 -0
  80. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/__init__.py +0 -0
  81. devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/file_generator_tool.py +74 -0
  82. devsecops_engine_tools/engine_sast/engine_secret/__init__.py +0 -0
  83. devsecops_engine_tools/engine_sast/engine_secret/src/__init__.py +0 -0
  84. devsecops_engine_tools/engine_sast/engine_secret/src/applications/__init__.py +0 -0
  85. devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py +34 -0
  86. devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py +0 -0
  87. devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py +0 -0
  88. devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py +0 -0
  89. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py +11 -0
  90. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py +0 -0
  91. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py +0 -0
  92. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py +11 -0
  93. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/git_gateway.py +15 -0
  94. devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py +16 -0
  95. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py +0 -0
  96. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +72 -0
  97. devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +73 -0
  98. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py +0 -0
  99. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py +0 -0
  100. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/__init__.py +0 -0
  101. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/git_run.py +60 -0
  102. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py +0 -0
  103. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py +39 -0
  104. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +104 -0
  105. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py +0 -0
  106. devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py +11 -0
  107. devsecops_engine_tools/engine_sca/__init__.py +0 -0
  108. devsecops_engine_tools/engine_sca/engine_container/__init__.py +0 -0
  109. devsecops_engine_tools/engine_sca/engine_container/src/__init__.py +0 -0
  110. devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py +0 -0
  111. devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +45 -0
  112. devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py +0 -0
  113. devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py +0 -0
  114. devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py +0 -0
  115. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py +0 -0
  116. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py +0 -0
  117. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +8 -0
  118. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py +7 -0
  119. devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py +7 -0
  120. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py +0 -0
  121. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +82 -0
  122. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py +67 -0
  123. devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +76 -0
  124. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py +0 -0
  125. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py +0 -0
  126. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py +0 -0
  127. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +22 -0
  128. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py +0 -0
  129. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +123 -0
  130. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +62 -0
  131. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
  132. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +48 -0
  133. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +114 -0
  134. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py +0 -0
  135. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +40 -0
  136. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py +0 -0
  137. devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/images_scanned.py +16 -0
  138. devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py +0 -0
  139. devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py +0 -0
  140. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py +0 -0
  141. devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +32 -0
  142. devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py +0 -0
  143. devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py +0 -0
  144. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py +0 -0
  145. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py +0 -0
  146. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py +0 -0
  147. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +8 -0
  148. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py +9 -0
  149. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py +0 -0
  150. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +44 -0
  151. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_artifacts.py +95 -0
  152. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_mono_repos.py +29 -0
  153. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py +90 -0
  154. devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py +65 -0
  155. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py +0 -0
  156. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py +0 -0
  157. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py +0 -0
  158. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +57 -0
  159. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +154 -0
  160. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py +0 -0
  161. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +83 -0
  162. devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py +0 -0
  163. devsecops_engine_tools/engine_utilities/__init__.py +0 -0
  164. devsecops_engine_tools/engine_utilities/azuredevops/__init__.py +0 -0
  165. devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/__init__.py +0 -0
  166. devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_api.py +67 -0
  167. devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py +21 -0
  168. devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py +65 -0
  169. devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py +0 -0
  170. devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +5 -0
  171. devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py +0 -0
  172. devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py +37 -0
  173. devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +40 -0
  174. devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py +40 -0
  175. devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py +0 -0
  176. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py +0 -0
  177. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/cmdb.py +11 -0
  178. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/engagement.py +55 -0
  179. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding.py +96 -0
  180. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product.py +35 -0
  181. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_list.py +12 -0
  182. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type.py +16 -0
  183. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_list.py +13 -0
  184. devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py +21 -0
  185. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py +0 -0
  186. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py +95 -0
  187. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +125 -0
  188. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py +0 -0
  189. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py +100 -0
  190. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +223 -0
  191. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py +0 -0
  192. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py +59 -0
  193. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py +38 -0
  194. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +133 -0
  195. devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py +2 -0
  196. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py +0 -0
  197. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py +0 -0
  198. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py +55 -0
  199. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +55 -0
  200. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py +37 -0
  201. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py +115 -0
  202. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py +50 -0
  203. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py +59 -0
  204. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py +65 -0
  205. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py +0 -0
  206. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py +1 -0
  207. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/repository/__init__.py +0 -0
  208. devsecops_engine_tools/engine_utilities/github/__init__.py +0 -0
  209. devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py +0 -0
  210. devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +49 -0
  211. devsecops_engine_tools/engine_utilities/github/models/__init__.py +0 -0
  212. devsecops_engine_tools/engine_utilities/input_validations/__init__.py +0 -0
  213. devsecops_engine_tools/engine_utilities/input_validations/env_utils.py +10 -0
  214. devsecops_engine_tools/engine_utilities/input_validations/validate_input_with_regex_letters_number_and_only.py +8 -0
  215. devsecops_engine_tools/engine_utilities/settings.py +38 -0
  216. devsecops_engine_tools/engine_utilities/ssh/__init__.py +0 -0
  217. devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py +67 -0
  218. devsecops_engine_tools/engine_utilities/utils/__init__.py +0 -0
  219. devsecops_engine_tools/engine_utilities/utils/api_error.py +14 -0
  220. devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py +84 -0
  221. devsecops_engine_tools/engine_utilities/utils/datetime_parsing.py +10 -0
  222. devsecops_engine_tools/engine_utilities/utils/logger_info.py +109 -0
  223. devsecops_engine_tools/engine_utilities/utils/name_conversion.py +12 -0
  224. devsecops_engine_tools/engine_utilities/utils/printers.py +21 -0
  225. devsecops_engine_tools/engine_utilities/utils/session_manager.py +14 -0
  226. devsecops_engine_tools/version.py +1 -0
  227. devsecops_engine_tools-1.6.7.dist-info/METADATA +156 -0
  228. devsecops_engine_tools-1.6.7.dist-info/RECORD +231 -0
  229. devsecops_engine_tools-1.6.7.dist-info/WHEEL +5 -0
  230. devsecops_engine_tools-1.6.7.dist-info/entry_points.txt +2 -0
  231. devsecops_engine_tools-1.6.7.dist-info/top_level.txt +1 -0
@@ -0,0 +1,11 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
2
+
3
+ class DeserializeConfigTool:
4
+ def __init__(self, json_data, tool):
5
+ self.ignore_search_pattern = json_data["IGNORE_SEARCH_PATTERN"]
6
+ self.message_info_engine_secret = json_data["MESSAGE_INFO_ENGINE_SECRET"]
7
+ self.level_compliance = Threshold(json_data['THRESHOLD'])
8
+ self.scope_pipeline = ''
9
+ self.exclude_path = json_data[tool]["EXCLUDE_PATH"]
10
+ self.number_threads = json_data[tool]["NUMBER_THREADS"]
11
+ self.target_branches = json_data["TARGET_BRANCHES"]
@@ -0,0 +1,11 @@
1
+ from abc import ABCMeta, abstractmethod
2
+ from devsecops_engine_tools.engine_core.src.domain.model.finding import Finding
3
+
4
+
5
+ class DeseralizatorGateway(metaclass=ABCMeta):
6
+ @abstractmethod
7
+ def get_list_vulnerability(self, results_scan_list: list, path_directory: str, os: str) -> "list[Finding]":
8
+ "Deseralizator"
9
+ @abstractmethod
10
+ def get_where_correctly(self, results_scan_list: any):
11
+ "Transform Where"
@@ -0,0 +1,15 @@
1
+ from abc import ABCMeta, abstractmethod
2
+
3
+
4
+ class GitGateway(metaclass=ABCMeta):
5
+ @abstractmethod
6
+ def get_files_pull_request(self, sys_working_dir: str,
7
+ target_branch: str,
8
+ config_target_branch: dict,
9
+ source_branch: str,
10
+ access_token: str,
11
+ collection_uri: str,
12
+ team_project: str,
13
+ repository_name: str,
14
+ repository_provider: str) -> dict:
15
+ "get_files_pull_request"
@@ -0,0 +1,16 @@
1
+ from abc import ABCMeta, abstractmethod
2
+
3
+
4
+ class ToolGateway(metaclass=ABCMeta):
5
+ @abstractmethod
6
+ def install_tool(self, agent_os: str, agent_temp_dir:str) -> any:
7
+ "install tool"
8
+ @abstractmethod
9
+ def run_tool_secret_scan(self,
10
+ files_pullrequest: dict,
11
+ exclude_path: dict,
12
+ agent_os: str,
13
+ agent_work_folder: str,
14
+ num_threads: int,
15
+ repository_name: str) -> str:
16
+ "run tool secret scan"
@@ -0,0 +1,72 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
2
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.DeserializeConfigTool import (
3
+ DeserializeConfigTool,
4
+ )
5
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.tool_gateway import (
6
+ ToolGateway,
7
+ )
8
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.gateway_deserealizator import (
9
+ DeseralizatorGateway,
10
+ )
11
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
12
+ DevopsPlatformGateway,
13
+ )
14
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.git_gateway import (
15
+ GitGateway
16
+ )
17
+
18
+ class SecretScan:
19
+ def __init__(
20
+ self,
21
+ tool_gateway: ToolGateway,
22
+ devops_platform_gateway: DevopsPlatformGateway,
23
+ tool_deserialize: DeseralizatorGateway,
24
+ git_gateway: GitGateway
25
+ ):
26
+ self.tool_gateway = tool_gateway
27
+ self.devops_platform_gateway = devops_platform_gateway
28
+ self.tool_deserialize = tool_deserialize
29
+ self.git_gateway = git_gateway
30
+
31
+ def process(self, dict_args, tool):
32
+ tool = str(tool).lower()
33
+ init_config_tool = self.devops_platform_gateway.get_remote_config(
34
+ dict_args["remote_config_repo"], "engine_sast/engine_secret/ConfigTool.json"
35
+ )
36
+ config_tool, skip_tool = self.complete_config_tool(
37
+ init_config_tool, tool
38
+ )
39
+ finding_list = []
40
+ if skip_tool == "false":
41
+ self.tool_gateway.install_tool(self.devops_platform_gateway.get_variable("os"), self.devops_platform_gateway.get_variable("temp_directory"))
42
+ files_pullrequest = self.git_gateway.get_files_pull_request(
43
+ self.devops_platform_gateway.get_variable("work_folder"),
44
+ self.devops_platform_gateway.get_variable("target_branch"),
45
+ config_tool.target_branches,
46
+ self.devops_platform_gateway.get_variable("source_branch"),
47
+ self.devops_platform_gateway.get_variable("access_token"),
48
+ self.devops_platform_gateway.get_variable("organization"),
49
+ self.devops_platform_gateway.get_variable("project_name"),
50
+ self.devops_platform_gateway.get_variable("repository"),
51
+ self.devops_platform_gateway.get_variable("repository_provider"))
52
+ finding_list = self.tool_deserialize.get_list_vulnerability(
53
+ self.tool_gateway.run_tool_secret_scan(
54
+ files_pullrequest,
55
+ config_tool.exclude_path,
56
+ self.devops_platform_gateway.get_variable("os"),
57
+ self.devops_platform_gateway.get_variable("work_folder"),
58
+ config_tool.number_threads,
59
+ self.devops_platform_gateway.get_variable("repository")
60
+ ),
61
+ self.devops_platform_gateway.get_variable("os"),
62
+ self.devops_platform_gateway.get_variable("path_directory")
63
+ )
64
+ return finding_list, config_tool
65
+
66
+ def complete_config_tool(self, data_file_tool, tool):
67
+ config_tool = DeserializeConfigTool(json_data=data_file_tool, tool=tool)
68
+ config_tool.scope_pipeline = self.devops_platform_gateway.get_variable("pipeline_name")
69
+ skip_tool = "false"
70
+ if config_tool.scope_pipeline in config_tool.ignore_search_pattern:
71
+ skip_tool = "true"
72
+ return config_tool, skip_tool
@@ -0,0 +1,73 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
2
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
3
+ DevopsPlatformGateway,
4
+ )
5
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.DeserializeConfigTool import (
6
+ DeserializeConfigTool
7
+ )
8
+ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
9
+
10
+
11
+ class SetInputCore:
12
+ def __init__(self, tool_remote: DevopsPlatformGateway, dict_args, tool, config_tool: DeserializeConfigTool):
13
+ self.tool_remote = tool_remote
14
+ self.dict_args = dict_args
15
+ self.tool = tool
16
+ self.config_tool = config_tool
17
+
18
+ def get_remote_config(self, file_path):
19
+ """
20
+ Get remote configuration.
21
+
22
+ Returns:
23
+ dict: Remote configuration.
24
+ """
25
+ return self.tool_remote.get_remote_config(self.dict_args["remote_config_repo"], file_path)
26
+
27
+ def get_variable(self, variable):
28
+ """
29
+ Get variable.
30
+
31
+ Returns:
32
+ dict: Remote variable.
33
+ """
34
+ return self.tool_remote.get_variable(variable)
35
+
36
+ def get_exclusions(self, exclusions_data, pipeline_name, tool):
37
+ list_exclusions = []
38
+ for key, value in exclusions_data.items():
39
+ if (key == "All") or (key == pipeline_name):
40
+ exclusions = [
41
+ Exclusions(
42
+ id=item.get("id", ""),
43
+ where=item.get("where", ""),
44
+ create_date=item.get("create_date", ""),
45
+ expired_date=item.get("expired_date", ""),
46
+ severity=item.get("severity", ""),
47
+ hu=item.get("hu", ""),
48
+ reason=item.get("reason", "Risk acceptance"),
49
+ )
50
+ for item in value[tool]
51
+ ]
52
+ list_exclusions.extend(exclusions)
53
+ return list_exclusions
54
+
55
+ def set_input_core(self, finding_list):
56
+ """
57
+ Set the input core.
58
+
59
+ Returns:
60
+ dict: Input core.
61
+ """
62
+ return InputCore(
63
+ totalized_exclusions=self.get_exclusions(
64
+ self.get_remote_config("engine_sast/engine_secret/Exclusions.json"),
65
+ self.get_variable("pipeline_name"),
66
+ self.tool,
67
+ ),
68
+ threshold_defined=self.config_tool.level_compliance,
69
+ path_file_results=finding_list,
70
+ custom_message_break_build=self.config_tool.message_info_engine_secret,
71
+ scope_pipeline=self.config_tool.scope_pipeline,
72
+ stage_pipeline=self.tool_remote.get_variable("stage").capitalize()
73
+ )
@@ -0,0 +1,60 @@
1
+ from dataclasses import dataclass
2
+ import os
3
+ import subprocess
4
+ import git
5
+ from urllib.parse import quote
6
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.git_gateway import GitGateway
7
+
8
+ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
9
+ from devsecops_engine_tools.engine_utilities import settings
10
+
11
+ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
12
+
13
+ @dataclass
14
+ class GitRun(GitGateway):
15
+
16
+ def get_files_pull_request(self,
17
+ sys_working_dir,
18
+ target_branch,
19
+ config_target_branch,
20
+ source_branch,
21
+ access_token,
22
+ collection_uri,
23
+ team_project,
24
+ repository_name,
25
+ repository_provider):
26
+ try:
27
+ if repository_provider == 'GitHub' or target_branch not in config_target_branch:
28
+ return []
29
+ base_compact_url = (
30
+ f"https://{collection_uri.rstrip('/').split('/')[-1].replace('.visualstudio.com','')}"
31
+ f".visualstudio.com/{quote(team_project)}/_git/"
32
+ f"{repository_name}"
33
+ )
34
+
35
+ url_without_https = base_compact_url.replace("https://", "")
36
+ url_with_token = f"https://x-access-token:{access_token}@{url_without_https}"
37
+
38
+ path_new_folder = sys_working_dir + '/' + repository_name
39
+
40
+ if os.path.exists(path_new_folder):
41
+ logger.warning(f"Error: folder {repository_name} already exist")
42
+ return []
43
+ os.makedirs(path_new_folder)
44
+ os.chdir(sys_working_dir)
45
+ subprocess.run(["git", "clone", url_with_token, path_new_folder], capture_output=True, text=True)
46
+ os.chdir(path_new_folder)
47
+
48
+ repository = git.Repo(path_new_folder)
49
+
50
+ source_branch = source_branch.replace("refs/heads/", "")
51
+ subprocess.run(["git", "checkout", f"origin/{source_branch}"], capture_output=True, text=True)
52
+ if source_branch != None:
53
+ diff = repository.git.diff(f"origin/{source_branch}..origin/{target_branch}", name_only=True)
54
+ if diff:
55
+ diff_files = diff.strip().split("\n")
56
+ print("Pull Requests Associated Files:",len(diff_files))
57
+ return diff_files
58
+ except Exception as e:
59
+ logger.warning(f"Error getting files PullRequest: {e}")
60
+ return []
@@ -0,0 +1,39 @@
1
+ import re
2
+ from datetime import datetime
3
+ from dataclasses import dataclass
4
+ from typing import List
5
+ from devsecops_engine_tools.engine_core.src.domain.model.finding import Finding, Category
6
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.gateway_deserealizator import DeseralizatorGateway
7
+
8
+ @dataclass
9
+ class SecretScanDeserealizator(DeseralizatorGateway):
10
+
11
+ def get_list_vulnerability(self, results_scan_list: List[dict], os, path_directory) -> List[Finding]:
12
+ list_open_vulnerabilities = []
13
+ for result in results_scan_list:
14
+ where_text, line = self.get_where_correctly(result, os, path_directory)
15
+ vulnerability_open = Finding(
16
+ id="SECRET_SCANNING",
17
+ cvss=None,
18
+ where=f"{where_text}, Line: {line}",
19
+ description="Sensitive information in source code",
20
+ severity="critical",
21
+ identification_date=datetime.now().strftime("%d%m%Y"),
22
+ published_date_cve=None,
23
+ module="engine_secret",
24
+ category=Category.VULNERABILITY,
25
+ requirements=result.get("DetectorName"),
26
+ tool="Trufflehog",
27
+ )
28
+ list_open_vulnerabilities.append(vulnerability_open)
29
+ return list_open_vulnerabilities
30
+
31
+ def get_where_correctly(self, result: dict, os, path_directory):
32
+ line = str(result.get("SourceMetadata").get("Data").get("Filesystem").get("line") or "Multiline")
33
+ original_where = str(result.get("SourceMetadata").get("Data").get("Filesystem").get("file"))
34
+ if re.search(r'Linux', os):
35
+ original_where = original_where.replace("\\", "/")
36
+
37
+ path_remove = path_directory or ""
38
+ where_text = original_where.replace(path_remove, "")
39
+ return where_text, line
@@ -0,0 +1,104 @@
1
+ import json
2
+ import re
3
+ import subprocess
4
+ import concurrent.futures
5
+
6
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.model.gateway.tool_gateway import (
7
+ ToolGateway,
8
+ )
9
+
10
+ result = []
11
+
12
+
13
+ class TrufflehogRun(ToolGateway):
14
+ def install_tool(self, agent_os, agent_temp_dir) -> any:
15
+ reg_exp_os = r"Windows"
16
+ check_os = re.search(reg_exp_os, agent_os)
17
+ if check_os:
18
+ self.run_install_win(agent_temp_dir)
19
+ else:
20
+ command = f"trufflehog --version"
21
+ result = subprocess.run(command, capture_output=True, shell=True)
22
+ output = result.stderr.strip()
23
+ reg_exp = r"not found"
24
+ check_tool = re.search(reg_exp, output.decode("utf-8"))
25
+ if check_tool:
26
+ self.run_install()
27
+
28
+ def run_install(self):
29
+ command = f"curl -sSfL https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh | sh -s -- -b /usr/local/bin"
30
+ subprocess.run(command, capture_output=True, shell=True)
31
+
32
+ def run_install_win(self, agent_temp_dir):
33
+ command_complete = f"powershell -Command [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; [Net.ServicePointManager]::SecurityProtocol; New-Item -Path {agent_temp_dir} -ItemType Directory -Force; Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/trufflesecurity/trufflehog/main/scripts/install.sh' -OutFile {agent_temp_dir}\install_trufflehog.sh; bash {agent_temp_dir}\install_trufflehog.sh -b C:/Trufflehog/bin; $env:Path += ';C:/Trufflehog/bin'; C:/Trufflehog/bin/trufflehog.exe --version"
34
+ process = subprocess.Popen(
35
+ command_complete, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True
36
+ )
37
+ process.communicate()
38
+
39
+ def run_tool_secret_scan(
40
+ self,
41
+ files_commits,
42
+ exclude_paths,
43
+ agent_os,
44
+ agent_work_folder,
45
+ num_threads,
46
+ repository_name,
47
+ ):
48
+ trufflehog_command = "trufflehog"
49
+ if "Windows" in agent_os:
50
+ trufflehog_command = "C:/Trufflehog/bin/trufflehog.exe"
51
+ with open(f"{agent_work_folder}/excludedPath.txt", "w") as file:
52
+ file.write("\n".join(exclude_paths))
53
+ exclude_path = f"{agent_work_folder}/excludedPath.txt"
54
+ include_paths = self.config_include_path(files_commits, agent_work_folder)
55
+ with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
56
+ results = executor.map(
57
+ self.run_trufflehog,
58
+ [trufflehog_command] * len(include_paths),
59
+ [agent_work_folder] * len(include_paths),
60
+ [exclude_path] * len(include_paths),
61
+ include_paths,
62
+ [repository_name] * len(include_paths),
63
+ )
64
+ return self.decode_output(results)
65
+
66
+ def config_include_path(self, files, agent_work_folder):
67
+ chunks = []
68
+ if len(files) != 0:
69
+ chunk_size = (len(files) + 3) // 4
70
+ chunks = [
71
+ files[i : i + chunk_size] for i in range(0, len(files), chunk_size)
72
+ ]
73
+ include_paths = []
74
+ for i, chunk in enumerate(chunks):
75
+ if not chunk:
76
+ continue
77
+ file_path = f"{agent_work_folder}/includePath{i}.txt"
78
+ include_paths.append(file_path)
79
+ with open(file_path, "w") as file:
80
+ for file_pr_path in chunk:
81
+ file.write(f"{file_pr_path.strip()}\n")
82
+ return include_paths
83
+
84
+ def run_trufflehog(
85
+ self,
86
+ trufflehog_command,
87
+ agent_work_folder,
88
+ exclude_path,
89
+ include_path,
90
+ repository_name,
91
+ ):
92
+ command = f"{trufflehog_command} filesystem {agent_work_folder + '/' + repository_name} --include-paths {include_path} --exclude-paths {exclude_path} --no-verification --json"
93
+ result = subprocess.run(command, capture_output=True, shell=True, text=True)
94
+ return result.stdout.strip()
95
+
96
+ def decode_output(self, results):
97
+ for decode_output in results:
98
+ if decode_output != "":
99
+ object_json = decode_output.strip().split("\n")
100
+ json_list = [json.loads(object) for object in object_json]
101
+ for json_obj in json_list:
102
+ if json_obj not in result:
103
+ result.append(json_obj)
104
+ return result
@@ -0,0 +1,11 @@
1
+ import sys
2
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.usecases.secret_scan import SecretScan
3
+ from devsecops_engine_tools.engine_sast.engine_secret.src.domain.usecases.set_input_core import (
4
+ SetInputCore,
5
+ )
6
+
7
+ def engine_secret_scan(devops_platform_gateway, tool_gateway, dict_args, tool, tool_deserealizator, git_gateway):
8
+ sys.stdout.reconfigure(encoding='utf-8')
9
+ finding_list, config_tool = SecretScan(tool_gateway, devops_platform_gateway, tool_deserealizator, git_gateway).process(dict_args, tool)
10
+ input_core = SetInputCore(devops_platform_gateway, dict_args, tool, config_tool)
11
+ return finding_list, input_core.set_input_core(finding_list)
File without changes
@@ -0,0 +1,45 @@
1
+ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.entry_points.entry_point_tool import (
2
+ init_engine_sca_rm,
3
+ )
4
+ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.prisma_cloud.prisma_cloud_manager_scan import (
5
+ PrismaCloudManagerScan,
6
+ )
7
+ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.docker.docker_images import (
8
+ DockerImages,
9
+ )
10
+ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.prisma_cloud.prisma_deserialize_output import (
11
+ PrismaDeserealizator,
12
+ )
13
+ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.trivy_tool.trivy_manager_scan import (
14
+ TrivyScan,
15
+ )
16
+ from devsecops_engine_tools.engine_sca.engine_container.src.infrastructure.driven_adapters.trivy_tool.trivy_deserialize_output import (
17
+ TrivyDeserializator,
18
+ )
19
+
20
+
21
+ def runner_engine_container(dict_args, config_tool, token, tool_remote):
22
+ try:
23
+ if config_tool["ENGINE_CONTAINER"]["TOOL"].lower() == "trivy":
24
+ tool_run = TrivyScan()
25
+ tool_deseralizator = TrivyDeserializator()
26
+ elif config_tool["ENGINE_CONTAINER"]["TOOL"].lower() == "prisma":
27
+ tool_run = PrismaCloudManagerScan()
28
+ tool_deseralizator = PrismaDeserealizator()
29
+ tool_images = DockerImages()
30
+ return init_engine_sca_rm(
31
+ tool_run,
32
+ tool_remote,
33
+ tool_images,
34
+ tool_deseralizator,
35
+ dict_args,
36
+ token,
37
+ config_tool,
38
+ )
39
+
40
+ except Exception as e:
41
+ raise Exception(f"Error SCAN engine container : {str(e)}")
42
+
43
+
44
+ if __name__ == "__main__":
45
+ runner_engine_container()
@@ -0,0 +1,8 @@
1
+ from abc import ABCMeta, abstractmethod
2
+ from devsecops_engine_tools.engine_core.src.domain.model.finding import Finding
3
+
4
+
5
+ class DeseralizatorGateway(metaclass=ABCMeta):
6
+ @abstractmethod
7
+ def get_list_findings(self, results_scan_list: list) -> "list[Finding]":
8
+ "Deseralizator"
@@ -0,0 +1,7 @@
1
+ from abc import ABCMeta, abstractmethod
2
+
3
+
4
+ class ImagesGateway(metaclass=ABCMeta):
5
+ @abstractmethod
6
+ def list_images(self) -> str:
7
+ "list images"
@@ -0,0 +1,7 @@
1
+ from abc import ABCMeta, abstractmethod
2
+
3
+
4
+ class ToolGateway(metaclass=ABCMeta):
5
+ @abstractmethod
6
+ def run_tool_container_sca(self, dict_args, token, scan_image, release) -> str:
7
+ "run tool container sca"
@@ -0,0 +1,82 @@
1
+ from devsecops_engine_tools.engine_core.src.domain.model.gateway.devops_platform_gateway import (
2
+ DevopsPlatformGateway,
3
+ )
4
+ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.tool_gateway import (
5
+ ToolGateway,
6
+ )
7
+ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.images_gateway import (
8
+ ImagesGateway,
9
+ )
10
+ from devsecops_engine_tools.engine_sca.engine_container.src.domain.model.gateways.deserealizator_gateway import (
11
+ DeseralizatorGateway,
12
+ )
13
+
14
+ class ContainerScaScan:
15
+ def __init__(
16
+ self,
17
+ tool_run: ToolGateway,
18
+ tool_remote: DevopsPlatformGateway,
19
+ tool_images: ImagesGateway,
20
+ tool_deseralizator: DeseralizatorGateway,
21
+ dict_args,
22
+ token,
23
+ skip_flag
24
+ ):
25
+ self.tool_run = tool_run
26
+ self.tool_remote = tool_remote
27
+ self.tool_images = tool_images
28
+ self.tool_deseralizator = tool_deseralizator
29
+ self.dict_args = dict_args
30
+ self.token = token
31
+ self.skip_flag = skip_flag
32
+
33
+ def get_remote_config(self, file_path):
34
+ """
35
+ Get remote configuration.
36
+
37
+ Returns:
38
+ dict: Remote configuration.
39
+ """
40
+ return self.tool_remote.get_remote_config(self.dict_args["remote_config_repo"], file_path)
41
+
42
+ def scan_image(self):
43
+ """
44
+ Process the list of images.
45
+
46
+ Returns:
47
+ list: List of processed images.
48
+ """
49
+ return self.tool_images.list_images()
50
+
51
+ def get_variable(self, variable):
52
+ """
53
+ Get variable.
54
+
55
+ Returns:
56
+ dict: Remote variable.
57
+ """
58
+ return self.tool_remote.get_variable(variable)
59
+
60
+ def process(self):
61
+ """
62
+ Process SCA scanning.
63
+
64
+ Returns:
65
+ dict: SCA scanning results.
66
+ """
67
+ return self.tool_run.run_tool_container_sca(
68
+ self.get_remote_config("engine_sca/engine_container/ConfigTool.json"),
69
+ self.token,
70
+ self.scan_image(),
71
+ self.get_variable("build_id"),
72
+ self.skip_flag
73
+ )
74
+
75
+ def deseralizator(self, image_scanned):
76
+ """
77
+ Process the results deserializer.
78
+
79
+ Returns:
80
+ list: Deserialized list of findings.
81
+ """
82
+ return self.tool_deseralizator.get_list_findings(image_scanned)