From 61cb14d6287ef1eddb2ea8205b5b65c417d4b134 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 10:47:23 -0400 Subject: [PATCH 01/10] Island: Wrap mongo start in _initialize_mongodb_connection() --- monkey/monkey_island/cc/server_setup.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 418074557..2139e32d3 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -52,11 +52,7 @@ def run_monkey_island(): _configure_logging(config_options) container = _initialize_di_container(config_options.data_dir) - mongo_db_process = None - if config_options.start_mongodb: - mongo_db_process = _start_mongodb(config_options.data_dir) - - _connect_to_mongodb(mongo_db_process) + _initialize_mongodb_connection(config_options.start_mongodb, config_options.data_dir) _configure_gevent_exception_handling(config_options.data_dir) _start_island_server(island_args.setup_only, config_options, container) @@ -95,6 +91,14 @@ def _initialize_di_container(data_dir: Path) -> DIContainer: return initialize_services(data_dir) +def _initialize_mongodb_connection(start_mongodb: bool, data_dir: Path): + mongo_db_process = None + if start_mongodb: + mongo_db_process = _start_mongodb(data_dir) + + _connect_to_mongodb(mongo_db_process) + + def _start_mongodb(data_dir: Path) -> MongoDbProcess: mongo_db_process = mongo_setup.start_mongodb(data_dir) mongo_setup.register_mongo_shutdown_callback(mongo_db_process) From 2379271c13e3d0f5430a498a86cdcbfff07120b3 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 10:49:45 -0400 Subject: [PATCH 02/10] Island: Call _configure_gevent_ex_handling from _start_island_server --- monkey/monkey_island/cc/server_setup.py | 28 ++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 2139e32d3..c3e56a477 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -51,10 +51,8 @@ def run_monkey_island(): _configure_logging(config_options) container = _initialize_di_container(config_options.data_dir) - _initialize_mongodb_connection(config_options.start_mongodb, config_options.data_dir) - _configure_gevent_exception_handling(config_options.data_dir) _start_island_server(island_args.setup_only, config_options, container) @@ -122,21 +120,11 @@ def _connect_to_mongodb(mongo_db_process: MongoDbProcess): sys.exit(1) -def _configure_gevent_exception_handling(data_dir): - hub = gevent.hub.get_hub() - - gevent_exception_log = open(data_dir / GEVENT_EXCEPTION_LOG, "w+", buffering=1) - atexit.register(gevent_exception_log.close) - - # Send gevent's exception output to a log file. - # https://www.gevent.org/api/gevent.hub.html#gevent.hub.Hub.exception_stream - hub.exception_stream = gevent_exception_log - hub.handle_error = GeventHubErrorHandler(hub, logger) - - def _start_island_server( should_setup_only: bool, config_options: IslandConfigOptions, container: DIContainer ): + _configure_gevent_exception_handling(config_options.data_dir) + app = init_app(mongo_setup.MONGO_URL, container) if should_setup_only: @@ -161,6 +149,18 @@ def _start_island_server( http_server.serve_forever() +def _configure_gevent_exception_handling(data_dir): + hub = gevent.hub.get_hub() + + gevent_exception_log = open(data_dir / GEVENT_EXCEPTION_LOG, "w+", buffering=1) + atexit.register(gevent_exception_log.close) + + # Send gevent's exception output to a log file. + # https://www.gevent.org/api/gevent.hub.html#gevent.hub.Hub.exception_stream + hub.exception_stream = gevent_exception_log + hub.handle_error = GeventHubErrorHandler(hub, logger) + + def _get_wsgi_server_logger() -> logging.Logger: wsgi_server_logger = logger.getChild("wsgi") wsgi_server_logger.addFilter(PyWSGILoggingFilter()) From dd30b616584c4445a84c2e04afe0f07cadf81191 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 10:50:23 -0400 Subject: [PATCH 03/10] Island: Add missing type hint to _configure_gevent_exception_handling() --- monkey/monkey_island/cc/server_setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index c3e56a477..73b6997ec 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -149,7 +149,7 @@ def _start_island_server( http_server.serve_forever() -def _configure_gevent_exception_handling(data_dir): +def _configure_gevent_exception_handling(data_dir: Path): hub = gevent.hub.get_hub() gevent_exception_log = open(data_dir / GEVENT_EXCEPTION_LOG, "w+", buffering=1) From 1873ce3bfe99b725287428abeb0394e84315a1a9 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 10:55:25 -0400 Subject: [PATCH 04/10] Island: Rename ex -> err in server_setup.py --- monkey/monkey_island/cc/server_setup.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 73b6997ec..1d5bfa9da 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -59,24 +59,24 @@ def run_monkey_island(): def _extract_config(island_args: IslandCmdArgs) -> IslandConfigOptions: try: return get_server_config(island_args) - except json.JSONDecodeError as ex: - print(f"Error loading server config: {ex}") + except json.JSONDecodeError as err: + print(f"Error loading server config: {err}") sys.exit(1) def _setup_data_dir(data_dir_path: Path): try: setup_data_dir(data_dir_path) - except IncompatibleDataDirectory as ex: - print(f"Incompatible data directory: {ex}") + except IncompatibleDataDirectory as err: + print(f"Incompatible data directory: {err}") sys.exit(1) def _exit_on_invalid_config_options(config_options: IslandConfigOptions): try: island_config_options_validator.raise_on_invalid_options(config_options) - except Exception as ex: - print(f"Configuration error: {ex}") + except Exception as err: + print(f"Configuration error: {err}") sys.exit(1) @@ -107,16 +107,16 @@ def _start_mongodb(data_dir: Path) -> MongoDbProcess: def _connect_to_mongodb(mongo_db_process: MongoDbProcess): try: mongo_setup.connect_to_mongodb(MONGO_CONNECTION_TIMEOUT) - except mongo_setup.MongoDBTimeOutError as ex: + except mongo_setup.MongoDBTimeOutError as err: if mongo_db_process and not mongo_db_process.is_running(): logger.error( f"Failed to start MongoDB process. Check log at {mongo_db_process.log_file}." ) else: - logger.error(ex) + logger.error(err) sys.exit(1) - except mongo_setup.MongoDBVersionError as ex: - logger.error(ex) + except mongo_setup.MongoDBVersionError as err: + logger.error(err) sys.exit(1) From 09f6cce6de8d7fd1c18ae8c4a821261b28be8463 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 11:42:31 -0400 Subject: [PATCH 05/10] Island: Collect system info in server_setup.py Information about the system (host machine, island, etc.) should be collected early on and passed to the components that require it. --- monkey/monkey_island/cc/server_setup.py | 46 ++++++++++++++++--- .../monkey_island/cc/services/initialize.py | 33 +------------ 2 files changed, 40 insertions(+), 39 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 1d5bfa9da..91332d7b3 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -3,6 +3,7 @@ import json import logging import sys from pathlib import Path +from typing import Sequence, Tuple import gevent.hub import requests @@ -27,6 +28,7 @@ from monkey_island.cc.arg_parser import parse_cli_args # noqa: E402 from monkey_island.cc.server_utils.consts import ( # noqa: E402 GEVENT_EXCEPTION_LOG, MONGO_CONNECTION_TIMEOUT, + MONKEY_ISLAND_ABS_PATH, ) from monkey_island.cc.server_utils.island_logger import reset_logger, setup_logging # noqa: E402 from monkey_island.cc.services.initialize import initialize_services # noqa: E402 @@ -50,7 +52,9 @@ def run_monkey_island(): _exit_on_invalid_config_options(config_options) _configure_logging(config_options) - container = _initialize_di_container(config_options.data_dir) + ip_addresses, deployment, version = _collect_system_info() + _send_analytics(deployment, version) + container = _initialize_di_container(ip_addresses, version, config_options.data_dir) _initialize_mongodb_connection(config_options.start_mongodb, config_options.data_dir) _start_island_server(island_args.setup_only, config_options, container) @@ -85,8 +89,39 @@ def _configure_logging(config_options): setup_logging(config_options.data_dir, config_options.log_level) -def _initialize_di_container(data_dir: Path) -> DIContainer: - return initialize_services(data_dir) +def _collect_system_info() -> Tuple[Sequence[str], Deployment, Version]: + deployment = _get_deployment() + version = Version(get_version(), deployment) + return (get_ip_addresses(), deployment, version) + + +def _get_deployment() -> Deployment: + deployment_file_path = Path(MONKEY_ISLAND_ABS_PATH) / "cc" / "deployment.json" + try: + with open(deployment_file_path, "r") as deployment_info_file: + deployment_info = json.load(deployment_info_file) + return Deployment[deployment_info["deployment"].upper()] + except KeyError as err: + raise Exception( + f"The deployment file ({deployment_file_path}) did not contain the expected data: " + f"missing key {err}" + ) + except Exception as err: + raise Exception(f"Failed to fetch the deployment from {deployment_file_path}: {err}") + + +def _initialize_di_container( + ip_addresses: Sequence[str], version: Version, data_dir: Path +) -> DIContainer: + container = DIContainer() + + container.register_convention(Sequence[str], "ip_addresses", ip_addresses) + container.register_instance(Version, version) + container.register_convention(Path, "data_dir", data_dir) + + initialize_services(container, data_dir) + + return container def _initialize_mongodb_connection(start_mongodb: bool, data_dir: Path): @@ -145,7 +180,6 @@ def _start_island_server( error_log=logger, ) _log_init_info() - _send_analytics(container) http_server.serve_forever() @@ -189,9 +223,7 @@ ANALYTICS_URL = ( ) -def _send_analytics(di_container): - version = di_container.resolve(Version) - deployment = di_container.resolve(Deployment) +def _send_analytics(deployment: Deployment, version: Version): url = ANALYTICS_URL.format(deployment=deployment.value, version=version.version_number) try: response = requests.get(url).json() diff --git a/monkey/monkey_island/cc/services/initialize.py b/monkey/monkey_island/cc/services/initialize.py index fc7b6e432..2a824e752 100644 --- a/monkey/monkey_island/cc/services/initialize.py +++ b/monkey/monkey_island/cc/services/initialize.py @@ -1,7 +1,5 @@ -import json import logging from pathlib import Path -from typing import Sequence from pubsub.core import Publisher from pymongo import MongoClient @@ -16,9 +14,6 @@ from common.aws import AWSInstance from common.common_consts.telem_categories import TelemCategoryEnum from common.event_queue import IEventQueue, PyPubSubEventQueue from common.utils.file_utils import get_binary_io_sha256_hash -from common.version import get_version -from monkey_island.cc import Version -from monkey_island.cc.deployment import Deployment from monkey_island.cc.repository import ( AgentBinaryRepository, FileAgentConfigurationRepository, @@ -49,7 +44,6 @@ from monkey_island.cc.services.telemetry.processing.credentials.credentials_pars from monkey_island.cc.services.telemetry.processing.processing import ( TELEMETRY_CATEGORY_TO_PROCESSING_FUNC, ) -from monkey_island.cc.services.utils.network_utils import get_ip_addresses from monkey_island.cc.setup.mongo.mongo_setup import MONGO_URL from . import AuthenticationService @@ -58,21 +52,17 @@ from .reporting.report import ReportService logger = logging.getLogger(__name__) AGENT_BINARIES_PATH = Path(MONKEY_ISLAND_ABS_PATH) / "cc" / "binaries" -DEPLOYMENT_FILE_PATH = Path(MONKEY_ISLAND_ABS_PATH) / "cc" / "deployment.json" REPOSITORY_KEY_FILE_NAME = "repository_key.bin" -def initialize_services(data_dir: Path) -> DIContainer: - container = DIContainer() +def initialize_services(container: DIContainer, data_dir: Path): _register_conventions(container, data_dir) - container.register_instance(Deployment, _get_depyloyment_from_file(DEPLOYMENT_FILE_PATH)) container.register_instance(AWSInstance, AWSInstance()) container.register_instance(MongoClient, MongoClient(MONGO_URL, serverSelectionTimeoutMS=100)) container.register_instance( ILockableEncryptor, RepositoryEncryptor(data_dir / REPOSITORY_KEY_FILE_NAME) ) - container.register_instance(Version, container.resolve(Version)) container.register(Publisher, Publisher) container.register_instance(IEventQueue, container.resolve(PyPubSubEventQueue)) @@ -88,11 +78,8 @@ def initialize_services(data_dir: Path) -> DIContainer: container.resolve(ICredentialsRepository), ) - return container - def _register_conventions(container: DIContainer, data_dir: Path): - container.register_convention(Path, "data_dir", data_dir) container.register_convention( AgentConfiguration, "default_agent_configuration", DEFAULT_AGENT_CONFIGURATION ) @@ -102,8 +89,6 @@ def _register_conventions(container: DIContainer, data_dir: Path): DEFAULT_RANSOMWARE_AGENT_CONFIGURATION, ) container.register_convention(Path, "island_log_file_path", get_log_file_path(data_dir)) - container.register_convention(str, "version_number", get_version()) - container.register_convention(Sequence[str], "ip_addresses", get_ip_addresses()) def _register_repositories(container: DIContainer, data_dir: Path): @@ -161,22 +146,6 @@ def _log_agent_binary_hashes(agent_binary_repository: IAgentBinaryRepository): logger.info(f"{os} agent: SHA-256 hash: {binary_sha256_hash}") -# TODO: The deployment should probably be passed into initialize_services(), but we can rework that -# when we refactor this file. -def _get_depyloyment_from_file(file_path: Path) -> Deployment: - try: - with open(file_path, "r") as deployment_info_file: - deployment_info = json.load(deployment_info_file) - return Deployment[deployment_info["deployment"].upper()] - except KeyError as err: - raise Exception( - f"The deployment file ({file_path}) did not contain the expected data: " - f"missing key {err}" - ) - except Exception as err: - raise Exception(f"Failed to fetch the deployment from {file_path}: {err}") - - def _register_services(container: DIContainer): container.register_instance(AWSService, container.resolve(AWSService)) container.register_instance(LocalMonkeyRunService, container.resolve(LocalMonkeyRunService)) From 0c39268668a645d79ce9ad0e86841accdf5fab18 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 11:46:16 -0400 Subject: [PATCH 06/10] Island: Reorder function calls in run_monkey_island() Configuration options should be validated before they are used. --- monkey/monkey_island/cc/server_setup.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 91332d7b3..7e53a217d 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -47,16 +47,17 @@ logger = logging.getLogger(__name__) def run_monkey_island(): island_args = parse_cli_args() config_options = _extract_config(island_args) - _setup_data_dir(config_options.data_dir) - _exit_on_invalid_config_options(config_options) + _setup_data_dir(config_options.data_dir) _configure_logging(config_options) + ip_addresses, deployment, version = _collect_system_info() + _send_analytics(deployment, version) container = _initialize_di_container(ip_addresses, version, config_options.data_dir) - _initialize_mongodb_connection(config_options.start_mongodb, config_options.data_dir) + _initialize_mongodb_connection(config_options.start_mongodb, config_options.data_dir) _start_island_server(island_args.setup_only, config_options, container) From 6da38e341fdf961c50ac40d5a4af4e4f07e7fab7 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 11:49:16 -0400 Subject: [PATCH 07/10] Island: Run analytics request asynchronously --- monkey/monkey_island/cc/server_setup.py | 26 ++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 7e53a217d..72d174993 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -3,6 +3,7 @@ import json import logging import sys from pathlib import Path +from threading import Thread from typing import Sequence, Tuple import gevent.hub @@ -225,14 +226,17 @@ ANALYTICS_URL = ( def _send_analytics(deployment: Deployment, version: Version): - url = ANALYTICS_URL.format(deployment=deployment.value, version=version.version_number) - try: - response = requests.get(url).json() - logger.info( - f"Version number and deployment type was sent to analytics server. " - f"The response is: {response}" - ) - except requests.exceptions.ConnectionError as err: - logger.info( - f"Failed to send deployment type and version number to the analytics server: {err}" - ) + def _inner(deployment: Deployment, version: Version): + url = ANALYTICS_URL.format(deployment=deployment.value, version=version.version_number) + try: + response = requests.get(url).json() + logger.info( + f"Version number and deployment type was sent to analytics server. " + f"The response is: {response}" + ) + except requests.exceptions.ConnectionError as err: + logger.info( + f"Failed to send deployment type and version number to the analytics server: {err}" + ) + + Thread(target=_inner, args=(deployment, version), daemon=True).start() From 315c17eb4885d0eeac5e2ceb5d28f10ceb6ecb9b Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 11:53:33 -0400 Subject: [PATCH 08/10] Island: Remove unneeded ANALYTICS_URL constant --- monkey/monkey_island/cc/server_setup.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 72d174993..b9366124b 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -219,15 +219,13 @@ def _log_web_interface_access_urls(): ) -ANALYTICS_URL = ( - "https://m15mjynko3.execute-api.us-east-1.amazonaws.com/default?version={" - "version}&deployment={deployment}" -) - - def _send_analytics(deployment: Deployment, version: Version): def _inner(deployment: Deployment, version: Version): - url = ANALYTICS_URL.format(deployment=deployment.value, version=version.version_number) + url = ( + "https://m15mjynko3.execute-api.us-east-1.amazonaws.com/default" + f"?version={version.version_number}&deployment={deployment.value}" + ) + try: response = requests.get(url).json() logger.info( From fdc041ead63494e373d8dd931c9b58cdeeb0108b Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 11:56:51 -0400 Subject: [PATCH 09/10] Island: Only call get_ip_addresses() once in server_setup.py --- monkey/monkey_island/cc/server_setup.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index b9366124b..f8b1261f3 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -59,7 +59,7 @@ def run_monkey_island(): container = _initialize_di_container(ip_addresses, version, config_options.data_dir) _initialize_mongodb_connection(config_options.start_mongodb, config_options.data_dir) - _start_island_server(island_args.setup_only, config_options, container) + _start_island_server(ip_addresses, island_args.setup_only, config_options, container) def _extract_config(island_args: IslandCmdArgs) -> IslandConfigOptions: @@ -158,7 +158,10 @@ def _connect_to_mongodb(mongo_db_process: MongoDbProcess): def _start_island_server( - should_setup_only: bool, config_options: IslandConfigOptions, container: DIContainer + ip_addresses: Sequence[str], + should_setup_only: bool, + config_options: IslandConfigOptions, + container: DIContainer, ): _configure_gevent_exception_handling(config_options.data_dir) @@ -181,7 +184,7 @@ def _start_island_server( log=_get_wsgi_server_logger(), error_log=logger, ) - _log_init_info() + _log_init_info(ip_addresses) http_server.serve_forever() @@ -204,15 +207,15 @@ def _get_wsgi_server_logger() -> logging.Logger: return wsgi_server_logger -def _log_init_info(): +def _log_init_info(ip_addresses: Sequence[str]): logger.info("Monkey Island Server is running!") logger.info(f"version: {get_version()}") - _log_web_interface_access_urls() + _log_web_interface_access_urls(ip_addresses) -def _log_web_interface_access_urls(): - web_interface_urls = ", ".join([f"https://{ip}:{ISLAND_PORT}" for ip in get_ip_addresses()]) +def _log_web_interface_access_urls(ip_addresses: Sequence[str]): + web_interface_urls = ", ".join([f"https://{ip}:{ISLAND_PORT}" for ip in ip_addresses]) logger.info( "To access the web interface, navigate to one of the the following URLs using your " f"browser: {web_interface_urls}" From d6e0b03a64c736583c0208d8277708661cecb420 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Fri, 12 Aug 2022 12:02:23 -0400 Subject: [PATCH 10/10] Island: Move island log file registration to setup_server.py --- monkey/monkey_island/cc/server_setup.py | 2 ++ monkey/monkey_island/cc/services/initialize.py | 6 ++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index f8b1261f3..e98c4f652 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -13,6 +13,7 @@ from gevent.pywsgi import WSGIServer from monkey_island.cc import Version from monkey_island.cc.deployment import Deployment from monkey_island.cc.server_utils.consts import ISLAND_PORT +from monkey_island.cc.server_utils.island_logger import get_log_file_path from monkey_island.cc.setup.config_setup import get_server_config # Add the monkey_island directory to the path, to make sure imports that don't start with @@ -120,6 +121,7 @@ def _initialize_di_container( container.register_convention(Sequence[str], "ip_addresses", ip_addresses) container.register_instance(Version, version) container.register_convention(Path, "data_dir", data_dir) + container.register_convention(Path, "island_log_file_path", get_log_file_path(data_dir)) initialize_services(container, data_dir) diff --git a/monkey/monkey_island/cc/services/initialize.py b/monkey/monkey_island/cc/services/initialize.py index 2a824e752..3ceb489c2 100644 --- a/monkey/monkey_island/cc/services/initialize.py +++ b/monkey/monkey_island/cc/services/initialize.py @@ -34,7 +34,6 @@ from monkey_island.cc.repository import ( ) from monkey_island.cc.server_utils.consts import MONKEY_ISLAND_ABS_PATH from monkey_island.cc.server_utils.encryption import ILockableEncryptor, RepositoryEncryptor -from monkey_island.cc.server_utils.island_logger import get_log_file_path from monkey_island.cc.services import AWSService, IslandModeService, RepositoryService from monkey_island.cc.services.attack.technique_reports.T1003 import T1003, T1003GetReportData from monkey_island.cc.services.run_local_monkey import LocalMonkeyRunService @@ -56,7 +55,7 @@ REPOSITORY_KEY_FILE_NAME = "repository_key.bin" def initialize_services(container: DIContainer, data_dir: Path): - _register_conventions(container, data_dir) + _register_conventions(container) container.register_instance(AWSInstance, AWSInstance()) container.register_instance(MongoClient, MongoClient(MONGO_URL, serverSelectionTimeoutMS=100)) @@ -79,7 +78,7 @@ def initialize_services(container: DIContainer, data_dir: Path): ) -def _register_conventions(container: DIContainer, data_dir: Path): +def _register_conventions(container: DIContainer): container.register_convention( AgentConfiguration, "default_agent_configuration", DEFAULT_AGENT_CONFIGURATION ) @@ -88,7 +87,6 @@ def _register_conventions(container: DIContainer, data_dir: Path): "default_ransomware_agent_configuration", DEFAULT_RANSOMWARE_AGENT_CONFIGURATION, ) - container.register_convention(Path, "island_log_file_path", get_log_file_path(data_dir)) def _register_repositories(container: DIContainer, data_dir: Path):