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.
- devsecops_engine_tools/__init__.py +0 -0
- devsecops_engine_tools/engine_core/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +124 -0
- devsecops_engine_tools/engine_core/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py +9 -0
- devsecops_engine_tools/engine_core/src/domain/model/exclusions.py +14 -0
- devsecops_engine_tools/engine_core/src/domain/model/finding.py +20 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py +27 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py +7 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py +13 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py +7 -0
- devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py +17 -0
- devsecops_engine_tools/engine_core/src/domain/model/input_core.py +12 -0
- devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py +3 -0
- devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py +7 -0
- devsecops_engine_tools/engine_core/src/domain/model/threshold.py +12 -0
- devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +20 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +375 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +148 -0
- devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py +59 -0
- devsecops_engine_tools/engine_core/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py +52 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py +40 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +103 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +215 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py +84 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/runtime_local/runtime_local.py +71 -0
- devsecops_engine_tools/engine_core/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/entry_points/entry_point_core.py +50 -0
- devsecops_engine_tools/engine_core/src/infrastructure/helpers/__init__.py +0 -0
- devsecops_engine_tools/engine_core/src/infrastructure/helpers/aws.py +9 -0
- devsecops_engine_tools/engine_core/src/infrastructure/helpers/util.py +15 -0
- devsecops_engine_tools/engine_dast/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/applications/runner_iac_scan.py +30 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py +24 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py +6 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +130 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py +135 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py +35 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +195 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/entry_points/entry_point_tool.py +6 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/helpers/file_generator_tool.py +74 -0
- devsecops_engine_tools/engine_sast/engine_secret/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_scan.py +34 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py +11 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py +11 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/git_gateway.py +15 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/tool_gateway.py +16 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/secret_scan.py +72 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/usecases/set_input_core.py +73 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/git_cli/git_run.py +60 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py +39 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +104 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py +11 -0
- devsecops_engine_tools/engine_sca/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/applications/runner_container_scan.py +45 -0
- devsecops_engine_tools/engine_sca/engine_container/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/deserealizator_gateway.py +8 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/images_gateway.py +7 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/model/gateways/tool_gateway.py +7 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/container_sca_scan.py +82 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/handle_remote_config_patterns.py +67 -0
- devsecops_engine_tools/engine_sca/engine_container/src/domain/usecases/set_input_core.py +76 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/docker/docker_images.py +22 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_cloud_manager_scan.py +123 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/prisma_cloud/prisma_deserialize_output.py +62 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_deserialize_output.py +48 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/driven_adapters/trivy_tool/trivy_manager_scan.py +114 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/entry_points/entry_point_tool.py +40 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_container/src/infrastructure/helpers/images_scanned.py +16 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/applications/runner_dependencies_scan.py +32 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/deployment/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/deserializator_gateway.py +8 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/model/gateways/tool_gateway.py +9 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/dependencies_sca_scan.py +44 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_artifacts.py +95 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/find_mono_repos.py +29 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/handle_remote_config_patterns.py +90 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/domain/usecases/set_input_core.py +65 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_deserialize_output.py +57 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/driven_adapters/xray_tool/xray_manager_scan.py +154 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/__init__.py +0 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/entry_points/entry_point_tool.py +83 -0
- devsecops_engine_tools/engine_sca/engine_dependencies/src/infrastructure/helpers/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/azuredevops/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_api.py +67 -0
- devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py +21 -0
- devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py +65 -0
- devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py +5 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py +37 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py +40 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py +40 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/cmdb.py +11 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/engagement.py +55 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/finding.py +96 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product.py +35 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_list.py +12 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type.py +16 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_list.py +13 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py +21 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py +95 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +125 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py +100 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +223 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py +59 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py +38 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +133 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py +2 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py +55 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +55 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py +37 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py +115 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py +50 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py +59 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py +65 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py +1 -0
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/repository/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/github/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +49 -0
- devsecops_engine_tools/engine_utilities/github/models/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/input_validations/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/input_validations/env_utils.py +10 -0
- devsecops_engine_tools/engine_utilities/input_validations/validate_input_with_regex_letters_number_and_only.py +8 -0
- devsecops_engine_tools/engine_utilities/settings.py +38 -0
- devsecops_engine_tools/engine_utilities/ssh/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/ssh/managment_private_key.py +67 -0
- devsecops_engine_tools/engine_utilities/utils/__init__.py +0 -0
- devsecops_engine_tools/engine_utilities/utils/api_error.py +14 -0
- devsecops_engine_tools/engine_utilities/utils/dataclass_classmethod.py +84 -0
- devsecops_engine_tools/engine_utilities/utils/datetime_parsing.py +10 -0
- devsecops_engine_tools/engine_utilities/utils/logger_info.py +109 -0
- devsecops_engine_tools/engine_utilities/utils/name_conversion.py +12 -0
- devsecops_engine_tools/engine_utilities/utils/printers.py +21 -0
- devsecops_engine_tools/engine_utilities/utils/session_manager.py +14 -0
- devsecops_engine_tools/version.py +1 -0
- devsecops_engine_tools-1.6.7.dist-info/METADATA +156 -0
- devsecops_engine_tools-1.6.7.dist-info/RECORD +231 -0
- devsecops_engine_tools-1.6.7.dist-info/WHEEL +5 -0
- devsecops_engine_tools-1.6.7.dist-info/entry_points.txt +2 -0
- devsecops_engine_tools-1.6.7.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
3
|
+
from urllib.parse import urlsplit, unquote
|
|
4
|
+
from azure.devops.connection import Connection
|
|
5
|
+
from msrest.authentication import BasicAuthentication
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
7
|
+
from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
|
|
8
|
+
from azure.devops.v7_1.git.models import GitVersionDescriptor
|
|
9
|
+
|
|
10
|
+
logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class AzureDevopsApi:
|
|
14
|
+
def __init__(
|
|
15
|
+
self,
|
|
16
|
+
personal_access_token: str = "",
|
|
17
|
+
project_remote_config: str = "",
|
|
18
|
+
organization_url: str = "",
|
|
19
|
+
compact_remote_config_url: str = "",
|
|
20
|
+
repository_id: str = "",
|
|
21
|
+
remote_config_path: str = "",
|
|
22
|
+
):
|
|
23
|
+
self.__personal_access_token = personal_access_token
|
|
24
|
+
self.__organization_url = organization_url
|
|
25
|
+
self.__project_remote_config = project_remote_config
|
|
26
|
+
self.__compact_remote_config_url = compact_remote_config_url
|
|
27
|
+
self.__repository_id = repository_id
|
|
28
|
+
self.__remote_config_path = remote_config_path
|
|
29
|
+
|
|
30
|
+
def segment_url(self):
|
|
31
|
+
if self.__compact_remote_config_url:
|
|
32
|
+
url_parts = urlsplit(self.__compact_remote_config_url)
|
|
33
|
+
path = unquote(url_parts.path)
|
|
34
|
+
path_parts = path.split("/")
|
|
35
|
+
self.__organization_url = url_parts.scheme + "://" + url_parts.netloc + "/"
|
|
36
|
+
self.__project_remote_config = path_parts[1]
|
|
37
|
+
self.__repository_id = path_parts[3]
|
|
38
|
+
query_parts = url_parts.query.split("=")
|
|
39
|
+
self.__remote_config_path = query_parts[1]
|
|
40
|
+
|
|
41
|
+
def get_azure_connection(self) -> Connection:
|
|
42
|
+
self.segment_url()
|
|
43
|
+
try:
|
|
44
|
+
credentials = BasicAuthentication(username="", password=self.__personal_access_token)
|
|
45
|
+
|
|
46
|
+
connection = Connection(base_url=self.__organization_url, creds=credentials)
|
|
47
|
+
|
|
48
|
+
return connection
|
|
49
|
+
except Exception as e:
|
|
50
|
+
raise ApiError("Error getting Azure DevOps connection: " + str(e))
|
|
51
|
+
|
|
52
|
+
def get_remote_json_config(self, connection: Connection):
|
|
53
|
+
try:
|
|
54
|
+
git_client = connection.clients.get_git_client()
|
|
55
|
+
git_version_descriptor = GitVersionDescriptor(version_type="branch", version="feature/migration_open")
|
|
56
|
+
file_content = git_client.get_item_text(
|
|
57
|
+
repository_id=self.__repository_id,
|
|
58
|
+
path=self.__remote_config_path,
|
|
59
|
+
project=self.__project_remote_config,
|
|
60
|
+
version_descriptor=git_version_descriptor,
|
|
61
|
+
)
|
|
62
|
+
data = json.loads(b"".join(file_content).decode("utf-8"))
|
|
63
|
+
return data
|
|
64
|
+
except Exception as e:
|
|
65
|
+
# Arrojar una excepción personalizada
|
|
66
|
+
logger.error(str(e))
|
|
67
|
+
raise ApiError("Error getting remote configuration file: " + str(e))
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
|
|
3
|
+
"""https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash """
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class BaseEnum(Enum):
|
|
7
|
+
def get_message(self, message: str):
|
|
8
|
+
return self._value_ + message
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class AzureMessageResultPipeline(Enum):
|
|
12
|
+
Failed = "##vso[task.complete result=Failed;]DONE"
|
|
13
|
+
SucceededWithIssues = "##vso[task.complete result=SucceededWithIssues;]DONE"
|
|
14
|
+
Succeeded = "##vso[task.complete result=Succeeded;]DONE"
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class AzureMessageLoggingPipeline(BaseEnum):
|
|
18
|
+
WarningLogging = "##[warning]"
|
|
19
|
+
ErrorLogging = "##[error]"
|
|
20
|
+
SucceededLogging = "##[section]"
|
|
21
|
+
InfoLogging = "##[command]"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.input_validations.env_utils import EnvVariables
|
|
4
|
+
|
|
5
|
+
""" Info de https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch
|
|
6
|
+
Build variables (DevOps Services) https://learn.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml """
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class EnvVariables:
|
|
10
|
+
@staticmethod
|
|
11
|
+
def get_value(env_name):
|
|
12
|
+
env_var = os.environ.get(env_name)
|
|
13
|
+
if env_var is None:
|
|
14
|
+
raise ValueError(f"La variable de entorno {env_name} no está definida")
|
|
15
|
+
return env_var
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BaseEnum(Enum):
|
|
19
|
+
@property
|
|
20
|
+
def env_name(self):
|
|
21
|
+
return self._value_.replace(".", "_").upper()
|
|
22
|
+
|
|
23
|
+
def value(self):
|
|
24
|
+
return EnvVariables.get_value(self.env_name)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class SystemVariables(BaseEnum):
|
|
28
|
+
System_AccessToken = "System.AccessToken"
|
|
29
|
+
System_CollectionId = "System.CollectionId"
|
|
30
|
+
System_DefaultWorkingDirectory = "System.DefaultWorkingDirectory"
|
|
31
|
+
System_StageName = "System.StageName"
|
|
32
|
+
System_HostType = "System.HostType"
|
|
33
|
+
System_TeamFoundationCollectionUri = "System.TeamFoundationCollectionUri"
|
|
34
|
+
System_TeamProject = "System.TeamProject"
|
|
35
|
+
System_TeamProjectId = "System.TeamProject"
|
|
36
|
+
System_PullRequestId = "System.PullRequest.PullRequestId"
|
|
37
|
+
System_TargetBranchName = "System.PullRequest.TargetBranchName"
|
|
38
|
+
System_SourceBranch = "System.PullRequest.SourceBranch"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class BuildVariables(BaseEnum):
|
|
42
|
+
Build_BuildId = "Build.BuildId"
|
|
43
|
+
Build_BuildNumber = "Build.BuildNumber"
|
|
44
|
+
Build_DefinitionName = "Build.DefinitionName"
|
|
45
|
+
Build_Project_Name = "Build.ProjectName"
|
|
46
|
+
Build_Repository_Name = "Build.Repository.Name"
|
|
47
|
+
Build_SourceBranch = "Build.SourceBranch"
|
|
48
|
+
Build_SourceBranchName = "Build.SourceBranchName"
|
|
49
|
+
Build_StagingDirectory = "Build.StagingDirectory"
|
|
50
|
+
Build_SourceVersion = "Build.SourceVersion"
|
|
51
|
+
Build_Repository_Provider = "Build.Repository.Provider"
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class ReleaseVariables(BaseEnum):
|
|
55
|
+
Release_Definitionname = "Release.DefinitionName"
|
|
56
|
+
Release_Releaseid = "Release.ReleaseId"
|
|
57
|
+
Artifact_Path = "ARTIFACT_PATH"
|
|
58
|
+
Environment = "ENV"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class AgentVariables(BaseEnum):
|
|
62
|
+
Agent_BuildDirectory = "Agent.BuildDirectory"
|
|
63
|
+
Agent_WorkFolder = "Agent.WorkFolder"
|
|
64
|
+
Agent_TempDirectory = "Agent.TempDirectory"
|
|
65
|
+
Agent_OS = "Agent.OS"
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,37 @@
|
|
|
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.defect_dojo.domain.serializers.import_scan import ImportScanSerializer
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.cmdb import CmdbUserCase
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.cmdb import CmdbRestConsumer
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.azuredevops.infrastructure.azure_devops_api import AzureDevopsApi
|
|
7
|
+
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class Connect:
|
|
11
|
+
@staticmethod
|
|
12
|
+
# Configuration Management Database aws
|
|
13
|
+
def cmdb(**kwargs) -> ImportScanRequest:
|
|
14
|
+
try:
|
|
15
|
+
request: ImportScanRequest = ImportScanSerializer().load(kwargs)
|
|
16
|
+
rc = CmdbRestConsumer(
|
|
17
|
+
token=request.token_cmdb,
|
|
18
|
+
host=request.host_cmdb,
|
|
19
|
+
mapping_cmdb=request.cmdb_mapping,
|
|
20
|
+
session=SessionManager(),
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
utils_azure = AzureDevopsApi(
|
|
24
|
+
personal_access_token=request.personal_access_token,
|
|
25
|
+
project_remote_config=request.project_remote_config,
|
|
26
|
+
organization_url=request.organization_url,
|
|
27
|
+
compact_remote_config_url=request.compact_remote_config_url,
|
|
28
|
+
repository_id=request.repository_id,
|
|
29
|
+
remote_config_path=request.remote_config_path,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
uc = CmdbUserCase(rest_consumer_cmdb=rc, utils_azure=utils_azure, expression=request.expression)
|
|
33
|
+
response = uc.execute(request)
|
|
34
|
+
except Exception as e:
|
|
35
|
+
return e
|
|
36
|
+
|
|
37
|
+
return response
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import ImportScanRestConsumer
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import ProductTypeRestConsumer
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product import ProductRestConsumer
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.scan_configurations import (
|
|
7
|
+
ScanConfigrationRestConsumer,
|
|
8
|
+
)
|
|
9
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
|
|
10
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
|
|
11
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.import_scan import ImportScanUserCase
|
|
12
|
+
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
13
|
+
from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
|
|
14
|
+
|
|
15
|
+
logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class DefectDojo:
|
|
19
|
+
@staticmethod
|
|
20
|
+
def send_import_scan(request: ImportScanRequest):
|
|
21
|
+
try:
|
|
22
|
+
if not isinstance(request, ImportScanRequest):
|
|
23
|
+
return request
|
|
24
|
+
rest_import_scan = ImportScanRestConsumer(request, session=SessionManager())
|
|
25
|
+
rest_product_type = ProductTypeRestConsumer(request, session=SessionManager())
|
|
26
|
+
rest_product = ProductRestConsumer(request, session=SessionManager())
|
|
27
|
+
rest_engagement = EngagementRestConsumer(request, session=SessionManager())
|
|
28
|
+
|
|
29
|
+
rest_scan_configuration = ScanConfigrationRestConsumer(request, session=SessionManager())
|
|
30
|
+
uc = ImportScanUserCase(
|
|
31
|
+
rest_import_scan,
|
|
32
|
+
rest_product_type,
|
|
33
|
+
rest_product,
|
|
34
|
+
rest_scan_configuration,
|
|
35
|
+
rest_engagement=rest_engagement,
|
|
36
|
+
)
|
|
37
|
+
response = uc.execute(request)
|
|
38
|
+
return response
|
|
39
|
+
except ApiError as e:
|
|
40
|
+
return e
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.finding import FindingRequest
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.serializers.finding import FindingSerializer
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.finding import FindingRestConsumer
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.finding import FindingUserCase, FindingGetUserCase
|
|
5
|
+
from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
7
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
8
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
9
|
+
|
|
10
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Finding:
|
|
14
|
+
@staticmethod
|
|
15
|
+
def serializer(*args, **request):
|
|
16
|
+
serializer = FindingSerializer()
|
|
17
|
+
errors = serializer.validate(request)
|
|
18
|
+
if errors:
|
|
19
|
+
logger.error(errors)
|
|
20
|
+
raise Exception(errors)
|
|
21
|
+
|
|
22
|
+
@staticmethod
|
|
23
|
+
def close_finding(session, **request):
|
|
24
|
+
try:
|
|
25
|
+
Finding.serializer(**request)
|
|
26
|
+
rest_finding = FindingRestConsumer(session=session)
|
|
27
|
+
uc = FindingUserCase(rest_finding)
|
|
28
|
+
return uc.execute(request)
|
|
29
|
+
except Exception as e:
|
|
30
|
+
raise e
|
|
31
|
+
|
|
32
|
+
@staticmethod
|
|
33
|
+
def get_finding(session, **request):
|
|
34
|
+
try:
|
|
35
|
+
Finding.serializer(**request)
|
|
36
|
+
rest_finding = FindingRestConsumer(session=session)
|
|
37
|
+
uc = FindingGetUserCase(rest_finding)
|
|
38
|
+
return uc.execute(request)
|
|
39
|
+
except Exception as e:
|
|
40
|
+
raise e
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@dataclasses.dataclass
|
|
6
|
+
class Cmdb(FromDictMixin):
|
|
7
|
+
product_type_name: str = ""
|
|
8
|
+
product_name: str = ""
|
|
9
|
+
tag_product: str = ""
|
|
10
|
+
product_description: str = ""
|
|
11
|
+
codigo_app: str = ""
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclasses.dataclass
|
|
7
|
+
class Engagement(FromDictMixin):
|
|
8
|
+
id: int = 0
|
|
9
|
+
tags = []
|
|
10
|
+
name: str = ""
|
|
11
|
+
description: str = ""
|
|
12
|
+
version: str = ""
|
|
13
|
+
first_contacted: str = ""
|
|
14
|
+
target_start: str = ""
|
|
15
|
+
target_end: str = ""
|
|
16
|
+
reason: str = ""
|
|
17
|
+
updated: str = ""
|
|
18
|
+
created: str = ""
|
|
19
|
+
active: str = ""
|
|
20
|
+
tracker: str = ""
|
|
21
|
+
test_strategy: str = ""
|
|
22
|
+
threat_model: str = ""
|
|
23
|
+
api_test: str = ""
|
|
24
|
+
pen_test: str = ""
|
|
25
|
+
check_list: str = ""
|
|
26
|
+
status: str = ""
|
|
27
|
+
progress: str = ""
|
|
28
|
+
tmodel_path: str = ""
|
|
29
|
+
done_testing: str = ""
|
|
30
|
+
engagement_type: str = ""
|
|
31
|
+
build_id: str = ""
|
|
32
|
+
commit_hash: str = ""
|
|
33
|
+
branch_tag: str = ""
|
|
34
|
+
source_code_management_uri: str = ""
|
|
35
|
+
deduplication_on_engagement: str = ""
|
|
36
|
+
lead: int = 0
|
|
37
|
+
requester: str = ""
|
|
38
|
+
preset: str = ""
|
|
39
|
+
report_type: str = ""
|
|
40
|
+
product: int = 0
|
|
41
|
+
build_server: str = ""
|
|
42
|
+
source_code_management_server: str = ""
|
|
43
|
+
orchestration_engine: str = ""
|
|
44
|
+
notes = []
|
|
45
|
+
files = []
|
|
46
|
+
risk_acceptance = []
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@dataclasses.dataclass
|
|
50
|
+
class EngagementList(FromDictMixin):
|
|
51
|
+
count: int = 0
|
|
52
|
+
next = None
|
|
53
|
+
previous = None
|
|
54
|
+
results: List[Engagement] = dataclasses.field(default_factory=list)
|
|
55
|
+
prefetch = None
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclasses.dataclass
|
|
7
|
+
class Finding(FromDictMixin):
|
|
8
|
+
id: int = 0
|
|
9
|
+
tags: List[None] = dataclasses.field(default_factory=list)
|
|
10
|
+
request_response = None
|
|
11
|
+
req_resp: List[None] = dataclasses.field(default_factory=list)
|
|
12
|
+
accepted_risks: List[None] = dataclasses.field(default_factory=list)
|
|
13
|
+
push_to_jira: bool = False
|
|
14
|
+
age: int = 0
|
|
15
|
+
sla_days_remaining: int = 0
|
|
16
|
+
finding_meta: List[None] = dataclasses.field(default_factory=list)
|
|
17
|
+
related_fields = None
|
|
18
|
+
jira_creation = None
|
|
19
|
+
jira_change = None
|
|
20
|
+
display_status: str = ""
|
|
21
|
+
finding_groups: List[None] = dataclasses.field(default_factory=list)
|
|
22
|
+
vulnerability_ids: List[None] = dataclasses.field(default_factory=list)
|
|
23
|
+
reporter: int = 0
|
|
24
|
+
title: int = 0
|
|
25
|
+
date: str = ""
|
|
26
|
+
sla_start_date = None
|
|
27
|
+
cwe: int = 0
|
|
28
|
+
cvssv3 = None
|
|
29
|
+
cvssv3_score = None
|
|
30
|
+
url: str = ""
|
|
31
|
+
severity: str = ""
|
|
32
|
+
description: str = ""
|
|
33
|
+
mitigation = None
|
|
34
|
+
impact = None
|
|
35
|
+
steps_to_reproduce = None
|
|
36
|
+
severity_justification = None
|
|
37
|
+
references = None
|
|
38
|
+
active: bool = None
|
|
39
|
+
verified: bool = None
|
|
40
|
+
false_p: bool = None
|
|
41
|
+
duplicate: bool = None
|
|
42
|
+
out_of_scope: bool = None
|
|
43
|
+
risk_status: str = ""
|
|
44
|
+
risk_accepted: bool = None
|
|
45
|
+
under_review: bool = None
|
|
46
|
+
last_status_update: str = ""
|
|
47
|
+
under_defect_review: bool = None
|
|
48
|
+
is_mitigated: bool = None
|
|
49
|
+
thread_id: int = -1
|
|
50
|
+
mitigated = None
|
|
51
|
+
numerical_severity: str = ""
|
|
52
|
+
last_reviewed: str = ""
|
|
53
|
+
param = None
|
|
54
|
+
payload = None
|
|
55
|
+
hash_code: str = ""
|
|
56
|
+
line = None
|
|
57
|
+
file_path: str = ""
|
|
58
|
+
component_name: str = ""
|
|
59
|
+
component_version: str = ""
|
|
60
|
+
static_finding: bool = None
|
|
61
|
+
dynamic_finding: bool = None
|
|
62
|
+
created: str = ""
|
|
63
|
+
scanner_confidence = None
|
|
64
|
+
unique_id_from_tool: str = ""
|
|
65
|
+
vuln_id_from_tool: str = ""
|
|
66
|
+
sast_source_object = None
|
|
67
|
+
sast_sink_object = None
|
|
68
|
+
sast_source_line = None
|
|
69
|
+
sast_source_file_path = None
|
|
70
|
+
nb_occurences = None
|
|
71
|
+
publish_date = None
|
|
72
|
+
service = None
|
|
73
|
+
planned_remediation_date = None
|
|
74
|
+
planned_remediation_version = None
|
|
75
|
+
effort_for_fixing = None
|
|
76
|
+
test: int = -1
|
|
77
|
+
duplicate_finding = None
|
|
78
|
+
review_requested_by = None
|
|
79
|
+
defect_review_requested_by = None
|
|
80
|
+
mitigated_by = None
|
|
81
|
+
last_reviewed_by: int = -1
|
|
82
|
+
sonarqube_issue = None
|
|
83
|
+
endpoints: List[None] = dataclasses.field(default_factory=list)
|
|
84
|
+
reviewers: List[None] = dataclasses.field(default_factory=list)
|
|
85
|
+
notes: List[None] = dataclasses.field(default_factory=list)
|
|
86
|
+
files: List[None] = dataclasses.field(default_factory=list)
|
|
87
|
+
found_by: List[None] = dataclasses.field(default_factory=list)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
@dataclasses.dataclass
|
|
91
|
+
class FindingList(FromDictMixin):
|
|
92
|
+
count: int = 0
|
|
93
|
+
next = None
|
|
94
|
+
previous = None
|
|
95
|
+
results: List[Finding] = dataclasses.field(default_factory=list)
|
|
96
|
+
prefetch = None
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclasses.dataclass
|
|
7
|
+
class Product(FromDictMixin):
|
|
8
|
+
id: int = 0
|
|
9
|
+
findings_count: int = 0
|
|
10
|
+
findings_list: List[None] = dataclasses.field(default_factory=list)
|
|
11
|
+
tags: List[None] = dataclasses.field(default_factory=list)
|
|
12
|
+
product_meta: List[None] = dataclasses.field(default_factory=list)
|
|
13
|
+
name: int = ""
|
|
14
|
+
description: str = ""
|
|
15
|
+
created: str = ""
|
|
16
|
+
prod_numeric_grade: int = 0
|
|
17
|
+
business_criticality = None
|
|
18
|
+
platform = None
|
|
19
|
+
lifecycle = None
|
|
20
|
+
origin = None
|
|
21
|
+
user_records = None
|
|
22
|
+
revenue = None
|
|
23
|
+
external_audience: bool = None
|
|
24
|
+
internet_accessible: bool = None
|
|
25
|
+
enable_simple_risk_acceptance: bool = None
|
|
26
|
+
enable_full_risk_acceptance: bool = None
|
|
27
|
+
disable_sla_breach_notifications: bool = None
|
|
28
|
+
product_manager = None
|
|
29
|
+
technical_contact = None
|
|
30
|
+
team_manager = None
|
|
31
|
+
prod_type: int = 0
|
|
32
|
+
sla_configuration: int = 0
|
|
33
|
+
members: List[int] = dataclasses.field(default_factory=list)
|
|
34
|
+
authorization_groups: List[None] = dataclasses.field(default_factory=list)
|
|
35
|
+
regulations: List[None] = dataclasses.field(default_factory=list)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.product import Product
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclasses.dataclass
|
|
8
|
+
class ProductList(FromDictMixin):
|
|
9
|
+
count: int = 0
|
|
10
|
+
next = None
|
|
11
|
+
previous = None
|
|
12
|
+
results: List[Product] = dataclasses.field(default_factory=list)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclasses.dataclass
|
|
7
|
+
class ProductType(FromDictMixin):
|
|
8
|
+
id: int = 0
|
|
9
|
+
name: str = ""
|
|
10
|
+
description: str = ""
|
|
11
|
+
critical_product: bool = None
|
|
12
|
+
key_product: bool = None
|
|
13
|
+
updated: str = ""
|
|
14
|
+
created: str = ""
|
|
15
|
+
members: List[int] = dataclasses.field(default_factory=list)
|
|
16
|
+
authorization_groups: List[None] = dataclasses.field(default_factory=list)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.product_type import ProductType
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclasses.dataclass
|
|
8
|
+
class ProductTypeList(FromDictMixin):
|
|
9
|
+
count: int = 0
|
|
10
|
+
next = None
|
|
11
|
+
previous = None
|
|
12
|
+
results: List[ProductType] = dataclasses.field(default_factory=list)
|
|
13
|
+
prefetch = None
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
from typing import List
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.utils.dataclass_classmethod import FromDictMixin
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
@dataclasses.dataclass
|
|
7
|
+
class ScanConfiguration(FromDictMixin):
|
|
8
|
+
id: int = 0
|
|
9
|
+
service_key_1: str = ""
|
|
10
|
+
service_key_2: str = ""
|
|
11
|
+
service_key_3: str = ""
|
|
12
|
+
product: int = 0
|
|
13
|
+
tool_configuration: int = 0
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclasses.dataclass
|
|
17
|
+
class ScanConfigurationList(FromDictMixin):
|
|
18
|
+
count: int = 2
|
|
19
|
+
next = None
|
|
20
|
+
previous = None
|
|
21
|
+
results: List[ScanConfiguration] = dataclasses.field(default_factory=list)
|
|
File without changes
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import dataclasses
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@dataclasses.dataclass
|
|
5
|
+
class FindingRequest:
|
|
6
|
+
active: bool = True
|
|
7
|
+
component_name: str = ""
|
|
8
|
+
component_version: str = ""
|
|
9
|
+
created: str = ""
|
|
10
|
+
cvssv3: str = ""
|
|
11
|
+
cvssv3_score: float = 0.0
|
|
12
|
+
cwe = None
|
|
13
|
+
date: str = ""
|
|
14
|
+
defect_review_requested_by = None
|
|
15
|
+
description: str = ""
|
|
16
|
+
duplicate: bool = True
|
|
17
|
+
duplicate_finding = 0
|
|
18
|
+
dynamic_finding: bool = False
|
|
19
|
+
effort_for_fixing: str = ""
|
|
20
|
+
endpoints = None
|
|
21
|
+
false_p: bool = False
|
|
22
|
+
file_path: str = ""
|
|
23
|
+
finding_group = None
|
|
24
|
+
found_by: int = 0
|
|
25
|
+
has_jira: bool = False
|
|
26
|
+
has_tags: bool = False
|
|
27
|
+
hash_code: str = ""
|
|
28
|
+
id = None
|
|
29
|
+
impact: str = ""
|
|
30
|
+
inherited_tags = None
|
|
31
|
+
is_mitigated: bool = False
|
|
32
|
+
jira_change: str = ""
|
|
33
|
+
jira_creation: str = ""
|
|
34
|
+
last_reviewed: str = ""
|
|
35
|
+
last_reviewed_by = None
|
|
36
|
+
limit: int = 0
|
|
37
|
+
mitigated: str = ""
|
|
38
|
+
mitigated_by = None
|
|
39
|
+
mitigation: str = ""
|
|
40
|
+
nb_occurences = None
|
|
41
|
+
not_tag: str = ""
|
|
42
|
+
not_tags = None
|
|
43
|
+
not_test__engagement__product__tags = None
|
|
44
|
+
not_test__engagement__tags = None
|
|
45
|
+
not_test__tags = None
|
|
46
|
+
numerical_severity: str = ""
|
|
47
|
+
offset: int = 0
|
|
48
|
+
out_of_scope: bool = False
|
|
49
|
+
outside_of_sla: int = 0
|
|
50
|
+
param: str = ""
|
|
51
|
+
payload: str = ""
|
|
52
|
+
planned_remediation_date: str = ""
|
|
53
|
+
planned_remediation_version: str = ""
|
|
54
|
+
prefetch = None
|
|
55
|
+
product_name: str = ""
|
|
56
|
+
product_name_contains: str = ""
|
|
57
|
+
publish_date: str = ""
|
|
58
|
+
references: str = ""
|
|
59
|
+
related_fields: str = ""
|
|
60
|
+
reporter = None
|
|
61
|
+
review_request_by = None
|
|
62
|
+
reviewers = None
|
|
63
|
+
risk_accetance: int = 0
|
|
64
|
+
risk_accepted: bool = False
|
|
65
|
+
sast_sink_object: str = ""
|
|
66
|
+
sast_source_object: str = ""
|
|
67
|
+
scanner_confidence = None
|
|
68
|
+
service: str = ""
|
|
69
|
+
severity: str = ""
|
|
70
|
+
severity_justification: str = ""
|
|
71
|
+
sla_start_date: str = ""
|
|
72
|
+
sonarqube_issue = None
|
|
73
|
+
static_finding: bool = False
|
|
74
|
+
steps_to_reproduce: str = ""
|
|
75
|
+
tag: str = ""
|
|
76
|
+
tags: str = ""
|
|
77
|
+
test = None
|
|
78
|
+
test__engagement = None
|
|
79
|
+
test__engagement__product = None
|
|
80
|
+
test__engagement__product__prod_type = None
|
|
81
|
+
test__engagement__product__tags = None
|
|
82
|
+
test__engagement__tags = None
|
|
83
|
+
test__tags = None
|
|
84
|
+
test__test_type = None
|
|
85
|
+
title: str = ""
|
|
86
|
+
under_defect_review: bool = False
|
|
87
|
+
under_review: bool = False
|
|
88
|
+
unique_id_from_tool: str = ""
|
|
89
|
+
verified: bool = False
|
|
90
|
+
vuln_id_from_tool: str = ""
|
|
91
|
+
vulnerability_id: str = ""
|
|
92
|
+
|
|
93
|
+
@classmethod
|
|
94
|
+
def from_dict(cls, obj):
|
|
95
|
+
obj = cls(unique_id_from_tool=obj.get("unique_id_from_tool"))
|