diff --git a/monkey/monkey_island/cc/server_setup.py b/monkey/monkey_island/cc/server_setup.py index 692a945ff..1b5803364 100644 --- a/monkey/monkey_island/cc/server_setup.py +++ b/monkey/monkey_island/cc/server_setup.py @@ -1,8 +1,10 @@ +import json import logging import os import sys from pathlib import Path from threading import Thread +from typing import Tuple from gevent.pywsgi import WSGIServer @@ -13,8 +15,10 @@ if str(MONKEY_ISLAND_DIR_BASE_PATH) not in sys.path: sys.path.insert(0, MONKEY_ISLAND_DIR_BASE_PATH) import monkey_island.cc.environment.environment_singleton as env_singleton # noqa: E402 +import monkey_island.setup.config_setup as config_setup # noqa: E402 from common.version import get_version # noqa: E402 from monkey_island.cc.app import init_app # noqa: E402 +from monkey_island.cc.arg_parser import IslandCmdArgs # noqa: E402 from monkey_island.cc.arg_parser import parse_cli_args # noqa: E402 from monkey_island.cc.resources.monkey_download import MonkeyDownload # noqa: E402 from monkey_island.cc.server_utils.bootloader_server import BootloaderHttpServer # noqa: E402 @@ -31,7 +35,6 @@ from monkey_island.cc.setup.mongo.mongo_setup import ( # noqa: E402 register_mongo_shutdown_callback, start_mongodb, ) -from monkey_island.setup.config_setup import setup_data_dir # noqa: E402 from monkey_island.setup.island_config_options import IslandConfigOptions # noqa: E402 logger = logging.getLogger(__name__) @@ -39,7 +42,7 @@ logger = logging.getLogger(__name__) def run_monkey_island(): island_args = parse_cli_args() - config_options, server_config_path = setup_data_dir(island_args) + config_options, server_config_path = _setup_data_dir(island_args) _configure_logging(config_options) _initialize_global_resources(config_options, server_config_path) @@ -53,6 +56,17 @@ def run_monkey_island(): _start_island_server(island_args.setup_only, config_options) +def _setup_data_dir(island_args: IslandCmdArgs) -> Tuple[IslandConfigOptions, str]: + try: + return config_setup.setup_data_dir(island_args) + except OSError as ex: + print(f"Error opening server config file: {ex}") + exit(1) + except json.JSONDecodeError as ex: + print(f"Error loading server config: {ex}") + exit(1) + + def _configure_logging(config_options): reset_logger() setup_logging(config_options.data_dir, config_options.log_level) diff --git a/monkey/monkey_island/setup/config_setup.py b/monkey/monkey_island/setup/config_setup.py index 95ebbc194..f33d2ff24 100644 --- a/monkey/monkey_island/setup/config_setup.py +++ b/monkey/monkey_island/setup/config_setup.py @@ -8,7 +8,7 @@ from monkey_island.cc.server_utils.consts import DEFAULT_DATA_DIR, DEFAULT_SERVE from monkey_island.setup.island_config_options import IslandConfigOptions -def setup_data_dir(island_args: IslandCmdArgs): +def setup_data_dir(island_args: IslandCmdArgs) -> Tuple[IslandConfigOptions, str]: if island_args.server_config_path: return _setup_config_by_cmd_arg(island_args.server_config_path)