devsecops-engine-tools 1.20.0__py3-none-any.whl → 1.22.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of devsecops-engine-tools might be problematic. Click here for more details.
- devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py +1 -1
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +2 -1
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py +3 -6
- devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py +5 -70
- devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py +2 -0
- devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py +10 -3
- devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py +14 -18
- devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py +7 -3
- devsecops_engine_tools/engine_utilities/utils/utils.py +93 -0
- devsecops_engine_tools/version.py +1 -1
- {devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/METADATA +1 -1
- {devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/RECORD +15 -15
- {devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/WHEEL +0 -0
- {devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/entry_points.txt +0 -0
- {devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/top_level.txt +0 -0
|
@@ -144,7 +144,7 @@ def get_inputs_from_cli(args):
|
|
|
144
144
|
parser.add_argument(
|
|
145
145
|
"--token_external_checks",
|
|
146
146
|
required=False,
|
|
147
|
-
help="Token for downloading external checks from engine_iac or engine_secret if is necessary. Ej:
|
|
147
|
+
help="Token for downloading external checks from engine_iac or engine_secret if is necessary. Ej: github_token:token, github_app:private_key, ssh:privatekey:pass",
|
|
148
148
|
)
|
|
149
149
|
parser.add_argument(
|
|
150
150
|
"--xray_mode",
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py
CHANGED
|
@@ -243,7 +243,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
243
243
|
self.FALSE_POSITIVE,
|
|
244
244
|
)
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
exclusions_out_of_scope = self._get_findings_with_exclusions(
|
|
247
247
|
session_manager,
|
|
248
248
|
service,
|
|
249
249
|
dd_max_retries,
|
|
@@ -266,6 +266,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
|
|
|
266
266
|
return (
|
|
267
267
|
list(exclusions_risk_accepted)
|
|
268
268
|
+ list(exclusions_false_positive)
|
|
269
|
+
+ list(exclusions_out_of_scope)
|
|
269
270
|
+ list(exclusions_transfer_finding)
|
|
270
271
|
)
|
|
271
272
|
except Exception as ex:
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py
CHANGED
|
@@ -28,11 +28,8 @@ class GithubActions(DevopsPlatformGateway):
|
|
|
28
28
|
split = github_repository.split("/")
|
|
29
29
|
owner = split[0]
|
|
30
30
|
|
|
31
|
-
utils_github = GithubApi(
|
|
32
|
-
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
git_client = utils_github.get_github_connection()
|
|
31
|
+
utils_github = GithubApi()
|
|
32
|
+
git_client = utils_github.get_github_connection(SystemVariables.github_access_token.value())
|
|
36
33
|
json_config = utils_github.get_remote_json_config(git_client, owner, repository, path)
|
|
37
34
|
|
|
38
35
|
return json_config
|
|
@@ -92,4 +89,4 @@ class GithubActions(DevopsPlatformGateway):
|
|
|
92
89
|
try:
|
|
93
90
|
return variable_map.get(variable).value()
|
|
94
91
|
except ValueError:
|
|
95
|
-
return None
|
|
92
|
+
return None
|
|
@@ -19,22 +19,15 @@ from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.driven_ada
|
|
|
19
19
|
from devsecops_engine_tools.engine_sast.engine_iac.src.infrastructure.helpers.file_generator_tool import (
|
|
20
20
|
generate_file_from_tool,
|
|
21
21
|
)
|
|
22
|
-
from devsecops_engine_tools.engine_utilities.github.infrastructure.github_api import (
|
|
23
|
-
GithubApi,
|
|
24
|
-
)
|
|
25
|
-
from devsecops_engine_tools.engine_utilities.ssh.managment_private_key import (
|
|
26
|
-
create_ssh_private_file,
|
|
27
|
-
add_ssh_private_key,
|
|
28
|
-
decode_base64,
|
|
29
|
-
config_knowns_hosts,
|
|
30
|
-
)
|
|
31
22
|
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
32
23
|
from devsecops_engine_tools.engine_utilities import settings
|
|
24
|
+
from devsecops_engine_tools.engine_utilities.utils.utils import Utils
|
|
33
25
|
|
|
34
26
|
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
35
27
|
|
|
36
28
|
|
|
37
29
|
class CheckovTool(ToolGateway):
|
|
30
|
+
|
|
38
31
|
CHECKOV_CONFIG_FILE = "checkov_config.yaml"
|
|
39
32
|
TOOL_CHECKOV = "CHECKOV"
|
|
40
33
|
framework_mapping = {
|
|
@@ -62,43 +55,6 @@ class CheckovTool(ToolGateway):
|
|
|
62
55
|
yaml.dump(checkov_config.dict_confg_file, file)
|
|
63
56
|
file.close()
|
|
64
57
|
|
|
65
|
-
def configurate_external_checks(self, config_tool, secret):
|
|
66
|
-
agent_env = None
|
|
67
|
-
try:
|
|
68
|
-
if secret is None:
|
|
69
|
-
logger.warning("The secret is not configured for external controls")
|
|
70
|
-
|
|
71
|
-
# Create configuration git external checks
|
|
72
|
-
elif config_tool[self.TOOL_CHECKOV][
|
|
73
|
-
"USE_EXTERNAL_CHECKS_GIT"
|
|
74
|
-
] == "True" and platform.system() in (
|
|
75
|
-
"Linux",
|
|
76
|
-
"Darwin",
|
|
77
|
-
):
|
|
78
|
-
config_knowns_hosts(
|
|
79
|
-
config_tool[self.TOOL_CHECKOV]["EXTERNAL_GIT_SSH_HOST"],
|
|
80
|
-
config_tool[self.TOOL_CHECKOV][
|
|
81
|
-
"EXTERNAL_GIT_PUBLIC_KEY_FINGERPRINT"
|
|
82
|
-
],
|
|
83
|
-
)
|
|
84
|
-
ssh_key_content = decode_base64(secret["repository_ssh_private_key"])
|
|
85
|
-
ssh_key_file_path = "/tmp/ssh_key_file"
|
|
86
|
-
create_ssh_private_file(ssh_key_file_path, ssh_key_content)
|
|
87
|
-
ssh_key_password = decode_base64(secret["repository_ssh_password"])
|
|
88
|
-
agent_env = add_ssh_private_key(ssh_key_file_path, ssh_key_password)
|
|
89
|
-
|
|
90
|
-
# Create configuration dir external checks
|
|
91
|
-
elif config_tool[self.TOOL_CHECKOV]["USE_EXTERNAL_CHECKS_DIR"] == "True":
|
|
92
|
-
github_api = GithubApi(secret["github_token"])
|
|
93
|
-
github_api.download_latest_release_assets(
|
|
94
|
-
config_tool[self.TOOL_CHECKOV]["EXTERNAL_DIR_OWNER"],
|
|
95
|
-
config_tool[self.TOOL_CHECKOV]["EXTERNAL_DIR_REPOSITORY"],
|
|
96
|
-
"/tmp",
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
except Exception as ex:
|
|
100
|
-
logger.error(f"An error ocurred configuring external checks {ex}")
|
|
101
|
-
return agent_env
|
|
102
58
|
|
|
103
59
|
def retryable_install_package(self, package: str, version: str) -> bool:
|
|
104
60
|
MAX_RETRIES = 3
|
|
@@ -258,29 +214,8 @@ class CheckovTool(ToolGateway):
|
|
|
258
214
|
secret_tool,
|
|
259
215
|
secret_external_checks,
|
|
260
216
|
):
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
secret = secret_tool
|
|
264
|
-
elif secret_external_checks is not None:
|
|
265
|
-
secret = {
|
|
266
|
-
"github_token": (
|
|
267
|
-
secret_external_checks.split("github:")[1]
|
|
268
|
-
if "github" in secret_external_checks
|
|
269
|
-
else None
|
|
270
|
-
),
|
|
271
|
-
"repository_ssh_private_key": (
|
|
272
|
-
secret_external_checks.split("ssh:")[1].split(":")[0]
|
|
273
|
-
if "ssh" in secret_external_checks
|
|
274
|
-
else None
|
|
275
|
-
),
|
|
276
|
-
"repository_ssh_password": (
|
|
277
|
-
secret_external_checks.split("ssh:")[1].split(":")[1]
|
|
278
|
-
if "ssh" in secret_external_checks
|
|
279
|
-
else None
|
|
280
|
-
),
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
agent_env = self.configurate_external_checks(config_tool, secret)
|
|
217
|
+
util = Utils()
|
|
218
|
+
agent_env = util.configurate_external_checks(self.TOOL_CHECKOV,config_tool, secret_tool,secret_external_checks)
|
|
284
219
|
|
|
285
220
|
checkov_install = self.retryable_install_package(
|
|
286
221
|
"checkov", config_tool[self.TOOL_CHECKOV]["VERSION"]
|
|
@@ -310,4 +245,4 @@ class CheckovTool(ToolGateway):
|
|
|
310
245
|
),
|
|
311
246
|
)
|
|
312
247
|
else:
|
|
313
|
-
return [], None
|
|
248
|
+
return [], None
|
|
@@ -12,5 +12,7 @@ class DeserializeConfigTool:
|
|
|
12
12
|
self.enable_custom_rules = json_data[tool]["ENABLE_CUSTOM_RULES"]
|
|
13
13
|
self.external_dir_owner = json_data[tool]["EXTERNAL_DIR_OWNER"]
|
|
14
14
|
self.external_dir_repo = json_data[tool]["EXTERNAL_DIR_REPOSITORY"]
|
|
15
|
+
self.app_id_github = json_data[tool]["APP_ID_GITHUB"]
|
|
16
|
+
self.installation_id_github = json_data[tool]["INSTALLATION_ID_GITHUB"]
|
|
15
17
|
self.tool_version = json_data[tool]["VERSION"]
|
|
16
18
|
self.extradata_rules = json_data[tool]["RULES"]
|
|
@@ -73,9 +73,15 @@ class TrufflehogRun(ToolGateway):
|
|
|
73
73
|
include_paths = self.config_include_path(files_commits, agent_work_folder, agent_os)
|
|
74
74
|
enable_custom_rules = config_tool.enable_custom_rules.lower()
|
|
75
75
|
secret = None
|
|
76
|
-
|
|
76
|
+
github_api = GithubApi()
|
|
77
|
+
|
|
77
78
|
if secret_tool is not None:
|
|
78
|
-
|
|
79
|
+
secret_tmp = secret_tool
|
|
80
|
+
secret = github_api.get_installation_access_token(
|
|
81
|
+
secret_tmp["github_token"],
|
|
82
|
+
config_tool.app_id_github,
|
|
83
|
+
config_tool.installation_id_github
|
|
84
|
+
)
|
|
79
85
|
elif secret_external_checks is not None:
|
|
80
86
|
secret = secret_external_checks.split("github:")[1] if "github" in secret_external_checks else None
|
|
81
87
|
|
|
@@ -161,10 +167,11 @@ class TrufflehogRun(ToolGateway):
|
|
|
161
167
|
|
|
162
168
|
def configurate_external_checks(self, config_tool, secret):
|
|
163
169
|
try:
|
|
164
|
-
github_api = GithubApi(
|
|
170
|
+
github_api = GithubApi()
|
|
165
171
|
github_api.download_latest_release_assets(
|
|
166
172
|
config_tool.external_dir_owner,
|
|
167
173
|
config_tool.external_dir_repo,
|
|
174
|
+
secret,
|
|
168
175
|
"/tmp",
|
|
169
176
|
)
|
|
170
177
|
except Exception as ex:
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import requests
|
|
2
2
|
import zipfile
|
|
3
3
|
import json
|
|
4
|
-
from github import Github
|
|
4
|
+
from github import Github, GithubIntegration
|
|
5
5
|
from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class GithubApi:
|
|
9
|
-
def __init__(
|
|
10
|
-
self,
|
|
11
|
-
personal_access_token: str = ""
|
|
12
|
-
):
|
|
13
|
-
self.__personal_access_token = personal_access_token
|
|
14
9
|
|
|
15
10
|
def unzip_file(self, zip_file_path, extract_path):
|
|
16
11
|
with zipfile.ZipFile(zip_file_path, "r") as zip_ref:
|
|
17
12
|
zip_ref.extractall(extract_path)
|
|
13
|
+
|
|
14
|
+
def get_installation_access_token(self,private_key,app_id,instalation_id):
|
|
15
|
+
if private_key:
|
|
16
|
+
private_key = private_key.replace("\\n", "\n")
|
|
17
|
+
integration = GithubIntegration(app_id, private_key)
|
|
18
|
+
access_token = integration.get_access_token(instalation_id)
|
|
19
|
+
return access_token.token
|
|
18
20
|
|
|
19
21
|
def download_latest_release_assets(
|
|
20
|
-
self, owner, repository, download_path="."
|
|
21
|
-
):
|
|
22
|
+
self, owner, repository, token, download_path=".",
|
|
23
|
+
):
|
|
22
24
|
url = f"https://api.github.com/repos/{owner}/{repository}/releases/latest"
|
|
23
|
-
|
|
24
|
-
headers = {"Authorization": f"token {self.__personal_access_token}"}
|
|
25
|
-
|
|
25
|
+
headers = {"Authorization": f"token {token}", "Accept": "application/vnd.github+json"}
|
|
26
26
|
response = requests.get(url, headers=headers)
|
|
27
27
|
|
|
28
28
|
if response.status_code == 200:
|
|
@@ -32,11 +32,8 @@ class GithubApi:
|
|
|
32
32
|
for asset in assets:
|
|
33
33
|
asset_url = asset["url"]
|
|
34
34
|
asset_name = asset["name"]
|
|
35
|
-
|
|
36
35
|
headers.update({"Accept": "application/octet-stream"})
|
|
37
|
-
|
|
38
36
|
response = requests.get(asset_url, headers=headers, stream=True)
|
|
39
|
-
|
|
40
37
|
if response.status_code == 200:
|
|
41
38
|
with open(f"{download_path}/{asset_name}", "wb") as file:
|
|
42
39
|
for chunk in response.iter_content(chunk_size=8192):
|
|
@@ -51,9 +48,8 @@ class GithubApi:
|
|
|
51
48
|
f"Error getting the assets of the last release. Status code: {response.status_code}"
|
|
52
49
|
)
|
|
53
50
|
|
|
54
|
-
def get_github_connection(self):
|
|
55
|
-
git_client = Github(
|
|
56
|
-
|
|
51
|
+
def get_github_connection(self,personal_access_token):
|
|
52
|
+
git_client = Github(personal_access_token)
|
|
57
53
|
return git_client
|
|
58
54
|
|
|
59
55
|
def get_remote_json_config(self, git_client: Github, owner, repository, path):
|
|
@@ -65,4 +61,4 @@ class GithubApi:
|
|
|
65
61
|
|
|
66
62
|
return content_json
|
|
67
63
|
except Exception as e:
|
|
68
|
-
raise ApiError("Error getting remote github configuration file: " + str(e))
|
|
64
|
+
raise ApiError("Error getting remote github configuration file: " + str(e))
|
|
@@ -26,8 +26,9 @@ def init_report_sonar(vulnerability_management_gateway, secrets_manager_gateway,
|
|
|
26
26
|
branch = devops_platform_gateway.get_variable("branch_name")
|
|
27
27
|
is_valid_pipeline = not re.match(report_config_tool["IGNORE_SEARCH_PATTERN"], pipeline_name, re.IGNORECASE)
|
|
28
28
|
is_valid_branch = branch in report_config_tool["TARGET_BRANCHES"]
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
is_enabled = config_tool["REPORT_SONAR"]["ENABLED"] == "true"
|
|
30
|
+
|
|
31
|
+
if is_enabled and is_valid_pipeline and is_valid_branch:
|
|
31
32
|
input_core = ReportSonar(
|
|
32
33
|
vulnerability_management_gateway,
|
|
33
34
|
secrets_manager_gateway,
|
|
@@ -40,7 +41,10 @@ def init_report_sonar(vulnerability_management_gateway, secrets_manager_gateway,
|
|
|
40
41
|
config_tool, input_core, {"tool": "report_sonar"}, ""
|
|
41
42
|
)
|
|
42
43
|
else:
|
|
44
|
+
if not is_enabled: message = "DevSecOps Engine Tool - {0} in maintenance...".format("report_sonar")
|
|
45
|
+
else: message = "Tool skipped by DevSecOps policy"
|
|
46
|
+
|
|
43
47
|
print(
|
|
44
48
|
devops_platform_gateway.message(
|
|
45
|
-
"warning",
|
|
49
|
+
"warning", message),
|
|
46
50
|
)
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import zipfile
|
|
2
|
+
import platform
|
|
3
|
+
from devsecops_engine_tools.engine_utilities.github.infrastructure.github_api import (
|
|
4
|
+
GithubApi,
|
|
5
|
+
)
|
|
6
|
+
from devsecops_engine_tools.engine_utilities.ssh.managment_private_key import (
|
|
7
|
+
create_ssh_private_file,
|
|
8
|
+
add_ssh_private_key,
|
|
9
|
+
decode_base64,
|
|
10
|
+
config_knowns_hosts,
|
|
11
|
+
)
|
|
12
|
+
from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
|
|
13
|
+
from devsecops_engine_tools.engine_utilities import settings
|
|
14
|
+
logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
|
|
2
15
|
import base64
|
|
3
16
|
import re
|
|
4
17
|
|
|
@@ -17,6 +30,86 @@ class Utils:
|
|
|
17
30
|
with zipfile.ZipFile(zip_file_path, "r") as zip_ref:
|
|
18
31
|
zip_ref.extractall(extract_path)
|
|
19
32
|
|
|
33
|
+
def configurate_external_checks(self, tool, config_tool, secret_tool, secret_external_checks):
|
|
34
|
+
try:
|
|
35
|
+
agent_env = None
|
|
36
|
+
secret = None
|
|
37
|
+
github_token = None
|
|
38
|
+
github_api = GithubApi()
|
|
39
|
+
|
|
40
|
+
if secret_tool is not None:
|
|
41
|
+
secret = secret_tool
|
|
42
|
+
github_token = github_api.get_installation_access_token(
|
|
43
|
+
secret["github_token"],
|
|
44
|
+
config_tool[tool]["APP_ID_GITHUB"],
|
|
45
|
+
config_tool[tool]["INSTALLATION_ID_GITHUB"]
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
elif secret_external_checks is not None:
|
|
49
|
+
secret_external_checks_parts = {
|
|
50
|
+
"github_token": (
|
|
51
|
+
secret_external_checks.split("github_token:")[1]
|
|
52
|
+
if "github_token" in secret_external_checks
|
|
53
|
+
else None
|
|
54
|
+
),
|
|
55
|
+
"github_apps": (
|
|
56
|
+
secret_external_checks.split("github_apps:")[1]
|
|
57
|
+
if "github_apps" in secret_external_checks
|
|
58
|
+
else None
|
|
59
|
+
),
|
|
60
|
+
"repository_ssh_private_key": (
|
|
61
|
+
secret_external_checks.split("ssh:")[1].split(":")[0]
|
|
62
|
+
if "ssh" in secret_external_checks
|
|
63
|
+
else None
|
|
64
|
+
),
|
|
65
|
+
"repository_ssh_password": (
|
|
66
|
+
secret_external_checks.split("ssh:")[1].split(":")[1]
|
|
67
|
+
if "ssh" in secret_external_checks
|
|
68
|
+
else None
|
|
69
|
+
),
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
secret = {
|
|
73
|
+
key: secret_external_checks_parts[key]
|
|
74
|
+
for key in secret_external_checks_parts
|
|
75
|
+
if secret_external_checks_parts[key] is not None
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if secret is None:
|
|
79
|
+
logger.warning("The secret is not configured for external controls")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
elif config_tool[tool]["USE_EXTERNAL_CHECKS_GIT"] == "True" and platform.system() in (
|
|
83
|
+
"Linux", "Darwin",
|
|
84
|
+
):
|
|
85
|
+
config_knowns_hosts(
|
|
86
|
+
config_tool[tool]["EXTERNAL_GIT_SSH_HOST"],
|
|
87
|
+
config_tool[tool]["EXTERNAL_GIT_PUBLIC_KEY_FINGERPRINT"],
|
|
88
|
+
)
|
|
89
|
+
ssh_key_content = decode_base64(secret["repository_ssh_private_key"])
|
|
90
|
+
ssh_key_file_path = "/tmp/ssh_key_file"
|
|
91
|
+
create_ssh_private_file(ssh_key_file_path, ssh_key_content)
|
|
92
|
+
ssh_key_password = decode_base64(secret["repository_ssh_password"])
|
|
93
|
+
agent_env = add_ssh_private_key(ssh_key_file_path, ssh_key_password)
|
|
94
|
+
|
|
95
|
+
elif config_tool[tool]["USE_EXTERNAL_CHECKS_DIR"] == "True":
|
|
96
|
+
if not github_token:
|
|
97
|
+
github_token = github_api.get_installation_access_token(
|
|
98
|
+
secret.get("github_apps"),
|
|
99
|
+
config_tool[tool]["APP_ID_GITHUB"],
|
|
100
|
+
config_tool[tool]["INSTALLATION_ID_GITHUB"]
|
|
101
|
+
) if secret.get("github_apps") else secret.get("github_token")
|
|
102
|
+
github_api.download_latest_release_assets(
|
|
103
|
+
config_tool[tool]["EXTERNAL_DIR_OWNER"],
|
|
104
|
+
config_tool[tool]["EXTERNAL_DIR_REPOSITORY"],
|
|
105
|
+
github_token,
|
|
106
|
+
"/tmp",
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
except Exception as ex:
|
|
110
|
+
logger.error(f"An error occurred configuring external checks: {ex}")
|
|
111
|
+
return agent_env
|
|
112
|
+
|
|
20
113
|
def encode_token_to_base64(self, token):
|
|
21
114
|
token_bytes = f"{token}:".encode("utf-8")
|
|
22
115
|
base64_token = base64.b64encode(token_bytes).decode("utf-8")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version = '1.
|
|
1
|
+
version = '1.22.0'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
devsecops_engine_tools/version.py,sha256=
|
|
2
|
+
devsecops_engine_tools/version.py,sha256=qOgLueidTZL9dCjyIIhcdaaxb2KeLyzyzW4SaqQ-Q08,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=
|
|
6
|
+
devsecops_engine_tools/engine_core/src/applications/runner_engine_core.py,sha256=NNbiI_5rUphL8S7zhagOLGF-5jWVSgJhEWjrKALruis,7239
|
|
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
|
|
@@ -36,9 +36,9 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
|
|
|
36
36
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
37
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=blI4ZrquRE4y6DJ7N2YRx1nL0wrAXvdpx0fLSUf5qwA,4831
|
|
38
38
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=
|
|
39
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=aXWW0np_1GmbezPXbZKEJ8HGKdjCouM84GEexa5bKk8,20772
|
|
40
40
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
-
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=
|
|
41
|
+
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=S5ecYZJi5PL3Lmz-0V0cHEicn2_VZF3cenfujRFZYbc,3685
|
|
42
42
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/printer_pretty_table.py,sha256=NkXu7JYoCHXIx0HzHl4DhdLGEpocPMIqs2L0ADS-RcI,5369
|
|
44
44
|
devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_rich_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -125,7 +125,7 @@ devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters
|
|
|
125
125
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
126
126
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_config.py,sha256=qbE6wUO5_WFXF_QolL0JYelaRGEOUakPEZR_6HAKzzI,4355
|
|
127
127
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_deserealizator.py,sha256=l_opY909gh1m3k2ud2xDrCVnDTBe3ApYT75juBf_uMk,1836
|
|
128
|
-
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py,sha256=
|
|
128
|
+
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/checkov_tool.py,sha256=81Hqkh24jk6DV55i5Ggl-4hpU-rKkVzi9koJ6S3TE1Y,8796
|
|
129
129
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
130
130
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_deserealizator.py,sha256=b1X5GWz2snJtsKZcGEsILNc178hv9p-lg-el0Jc-_Eo,2084
|
|
131
131
|
devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/kics/kics_tool.py,sha256=8lda0A7huVSWgq2zMAN92vQv4ug0HiQMATGdXV5lgyA,5202
|
|
@@ -143,7 +143,7 @@ devsecops_engine_tools/engine_sast/engine_secret/src/applications/runner_secret_
|
|
|
143
143
|
devsecops_engine_tools/engine_sast/engine_secret/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
144
144
|
devsecops_engine_tools/engine_sast/engine_secret/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
145
145
|
devsecops_engine_tools/engine_sast/engine_secret/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
146
|
-
devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py,sha256=
|
|
146
|
+
devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/DeserializeConfigTool.py,sha256=jUD_irTwabu_WG1by0VrxIoHJTZXVJZzkNSlSYgAue0,1085
|
|
147
147
|
devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
148
148
|
devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
149
149
|
devsecops_engine_tools/engine_sast/engine_secret/src/domain/model/gateway/gateway_deserealizator.py,sha256=4fYPengHW3K0uVP6wHgOiNu-gRb08m78E7QZayZ2LC4,441
|
|
@@ -155,7 +155,7 @@ devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/__init__.py,
|
|
|
155
155
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
156
156
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
157
157
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_deserealizator.py,sha256=mrSqPrkMiikxQ_uY-rF2I8QvicsOMdMBzTC8CTV3Wk8,2392
|
|
158
|
-
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=
|
|
158
|
+
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/driven_adapters/trufflehog/trufflehog_run.py,sha256=0OzDHxtbV1ke2V2SXZU7vkjc3MioGrR-djnV_ea0lAo,8740
|
|
159
159
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
160
|
devsecops_engine_tools/engine_sast/engine_secret/src/infrastructure/entry_points/entry_point_tool.py,sha256=NiA5-pRL6-tMuOa2Al-wIYq3uIMFBQrJd0w7ur16kgs,1049
|
|
161
161
|
devsecops_engine_tools/engine_sca/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -273,7 +273,7 @@ devsecops_engine_tools/engine_utilities/git_cli/model/gateway/__init__.py,sha256
|
|
|
273
273
|
devsecops_engine_tools/engine_utilities/git_cli/model/gateway/git_gateway.py,sha256=x6LFK8wZuVix-ZCBdBQTzvjQi59nZYVrSOTatCOQbxc,638
|
|
274
274
|
devsecops_engine_tools/engine_utilities/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
275
275
|
devsecops_engine_tools/engine_utilities/github/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
276
|
-
devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py,sha256=
|
|
276
|
+
devsecops_engine_tools/engine_utilities/github/infrastructure/github_api.py,sha256=7hvwyrvQyXP-0goCeM-hX-FaDSNZWsG0nJ5iWo3uC64,2686
|
|
277
277
|
devsecops_engine_tools/engine_utilities/github/models/GithubPredefinedVariables.py,sha256=LmIvCVDyszInElu_-Pt034q1Zaajp-QA3ge-RtimxHg,1589
|
|
278
278
|
devsecops_engine_tools/engine_utilities/github/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
279
279
|
devsecops_engine_tools/engine_utilities/input_validations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -294,7 +294,7 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adap
|
|
|
294
294
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
295
295
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/sonarqube_report.py,sha256=eKzxONP3pP4d2MIknC5sGVuxcHzgelt5D0Kun88WBMo,4514
|
|
296
296
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
297
|
-
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=
|
|
297
|
+
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/entry_points/entry_point_report_sonar.py,sha256=Q5R-O6KbU6qb7-U3dtdhBiHvs9j9X1TFlG5F4Zmxz3A,2173
|
|
298
298
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
299
299
|
devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/helpers/utils.py,sha256=SGOWrkzQrvOt9bRhhSfgiMzj1695e1W0B9ox9C1ihQI,294
|
|
300
300
|
devsecops_engine_tools/engine_utilities/ssh/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -307,9 +307,9 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
|
|
|
307
307
|
devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
|
|
308
308
|
devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
|
|
309
309
|
devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
|
|
310
|
-
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=
|
|
311
|
-
devsecops_engine_tools-1.
|
|
312
|
-
devsecops_engine_tools-1.
|
|
313
|
-
devsecops_engine_tools-1.
|
|
314
|
-
devsecops_engine_tools-1.
|
|
315
|
-
devsecops_engine_tools-1.
|
|
310
|
+
devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=yvCbPKAWa7wxk5S-s_Xkvx9VtnIpv9eWUMG8wtlmrhs,5870
|
|
311
|
+
devsecops_engine_tools-1.22.0.dist-info/METADATA,sha256=cev15Bqv4tub8Pa4Sz-SCLDaAA-T_9pRLLr-72euoWQ,10895
|
|
312
|
+
devsecops_engine_tools-1.22.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
|
313
|
+
devsecops_engine_tools-1.22.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
|
|
314
|
+
devsecops_engine_tools-1.22.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
|
|
315
|
+
devsecops_engine_tools-1.22.0.dist-info/RECORD,,
|
|
File without changes
|
{devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{devsecops_engine_tools-1.20.0.dist-info → devsecops_engine_tools-1.22.0.dist-info}/top_level.txt
RENAMED
|
File without changes
|