diff --git a/prowler/config/config.py b/prowler/config/config.py index 68a8f904..faa5bf15 100644 --- a/prowler/config/config.py +++ b/prowler/config/config.py @@ -1,3 +1,4 @@ +import os import pathlib from datetime import datetime, timezone from os import getcwd @@ -5,7 +6,6 @@ from os import getcwd import yaml from prowler.lib.logger import logger -from prowler.lib.utils.utils import open_file, parse_json_file timestamp = datetime.today() timestamp_utc = datetime.now(timezone.utc).replace(tzinfo=timezone.utc) @@ -30,7 +30,7 @@ csv_file_suffix = ".csv" json_file_suffix = ".json" json_asff_file_suffix = ".asff.json" html_file_suffix = ".html" -config_yaml = f"{pathlib.Path().absolute()}/prowler/config/config.yaml" +config_yaml = f"{pathlib.Path(os.path.dirname(os.path.realpath(__file__)))}/config.yaml" def change_config_var(variable, value): @@ -55,22 +55,3 @@ def get_config_var(variable): except Exception as error: logger.error(f"{error.__class__.__name__}: {error}") return "" - - -def get_aws_available_regions(): - try: - actual_directory = pathlib.Path().absolute() - f = open_file( - f"{actual_directory}/prowler/providers/aws/{aws_services_json_file}" - ) - data = parse_json_file(f) - - regions = set() - for service in data["services"].values(): - for partition in service["regions"]: - for item in service["regions"][partition]: - regions.add(item) - return list(regions) - except Exception as error: - logger.error(f"{error.__class__.__name__}: {error}") - return [] diff --git a/prowler/lib/cli/parser.py b/prowler/lib/cli/parser.py index 8f5a9816..677d311c 100644 --- a/prowler/lib/cli/parser.py +++ b/prowler/lib/cli/parser.py @@ -2,11 +2,8 @@ import argparse import sys from argparse import RawTextHelpFormatter -from prowler.config.config import ( - default_output_directory, - get_aws_available_regions, - prowler_version, -) +from prowler.config.config import default_output_directory, prowler_version +from prowler.providers.aws.aws_provider import get_aws_available_regions class ProwlerArgumentParser: diff --git a/prowler/providers/aws/aws_provider.py b/prowler/providers/aws/aws_provider.py index 195d5689..820b56b6 100644 --- a/prowler/providers/aws/aws_provider.py +++ b/prowler/providers/aws/aws_provider.py @@ -1,3 +1,4 @@ +import os import pathlib import sys @@ -108,10 +109,8 @@ def generate_regional_clients( try: regional_clients = {} # Get json locally - actual_directory = pathlib.Path().absolute() - f = open_file( - f"{actual_directory}/prowler/providers/aws/{aws_services_json_file}" - ) + actual_directory = pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + f = open_file(f"{actual_directory}/{aws_services_json_file}") data = parse_json_file(f) # Check if it is a subservice json_regions = data["services"][service]["regions"][ @@ -140,3 +139,20 @@ def generate_regional_clients( logger.error( f"{error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}" ) + + +def get_aws_available_regions(): + try: + actual_directory = pathlib.Path(os.path.dirname(os.path.realpath(__file__))) + f = open_file(f"{actual_directory}/{aws_services_json_file}") + data = parse_json_file(f) + + regions = set() + for service in data["services"].values(): + for partition in service["regions"]: + for item in service["regions"][partition]: + regions.add(item) + return list(regions) + except Exception as error: + logger.error(f"{error.__class__.__name__}: {error}") + return [] diff --git a/tests/config/config_test.py b/tests/config/config_test.py index 03192040..72dfa01a 100644 --- a/tests/config/config_test.py +++ b/tests/config/config_test.py @@ -1,4 +1,4 @@ -from prowler.config.config import get_aws_available_regions +from prowler.providers.aws.aws_provider import get_aws_available_regions class Test_Config: diff --git a/tests/lib/check/check_test.py b/tests/lib/check/check_test.py index 8be79dec..47cef2cf 100644 --- a/tests/lib/check/check_test.py +++ b/tests/lib/check/check_test.py @@ -1,3 +1,4 @@ +import os import pathlib from importlib.machinery import FileFinder from pkgutil import ModuleInfo @@ -107,7 +108,7 @@ class Test_Check: test_cases = [ { "input": { - "metadata_path": f"{pathlib.Path().absolute()}/tests/lib/check/fixtures/metadata.json", + "metadata_path": f"{os.path.dirname(os.path.realpath(__file__))}/fixtures/metadata.json", }, "expected": { "CheckID": "iam_disable_30_days_credentials", diff --git a/tests/lib/outputs/outputs_test.py b/tests/lib/outputs/outputs_test.py index 77480ed0..910ae3c2 100644 --- a/tests/lib/outputs/outputs_test.py +++ b/tests/lib/outputs/outputs_test.py @@ -1,3 +1,4 @@ +import os import pathlib from os import path, remove from unittest import mock @@ -66,7 +67,7 @@ def mock_make_api_call(self, operation_name, kwarg): class Test_Outputs: def test_fill_file_descriptors(self): audited_account = AWS_ACCOUNT_ID - output_directory = f"{pathlib.Path().absolute()}" + output_directory = f"{os.path.dirname(os.path.realpath(__file__))}" audit_info = AWS_Audit_Info( original_session=None, audit_session=None,