diff --git a/monkey/monkey_island.py b/monkey/monkey_island.py index 650cfe95d..958a1f529 100644 --- a/monkey/monkey_island.py +++ b/monkey/monkey_island.py @@ -16,7 +16,10 @@ if "__main__" == __name__: # This is here in order to catch EVERYTHING, some functions are being called on # imports, so the log init needs to be first. try: - server_config_path = os.path.expanduser(island_args.server_config) + if island_args.server_config: + server_config_path = os.path.expanduser(island_args.server_config) + else: + server_config_path = config_loader.create_default_server_config_path() config = config_loader.load_server_config_from_file(server_config_path) @@ -32,4 +35,4 @@ if "__main__" == __name__: from monkey_island.cc.main import main # noqa: E402 - main(config["data_dir"], island_args.setup_only, island_args.server_config) + main(config["data_dir"], island_args.setup_only, server_config_path) diff --git a/monkey/monkey_island/cc/arg_parser.py b/monkey/monkey_island/cc/arg_parser.py index 6e12ef38f..982776230 100644 --- a/monkey/monkey_island/cc/arg_parser.py +++ b/monkey/monkey_island/cc/arg_parser.py @@ -1,7 +1,5 @@ from dataclasses import dataclass -from monkey_island.cc.server_utils.consts import DEFAULT_SERVER_CONFIG_PATH - @dataclass class IslandArgs: @@ -25,10 +23,7 @@ def parse_cli_args() -> IslandArgs: "compiling/packaging Islands.", ) parser.add_argument( - "--server-config", - action="store", - help="The path to the server configuration file.", - default=DEFAULT_SERVER_CONFIG_PATH, + "--server-config", action="store", help="The path to the server configuration file." ) args = parser.parse_args() diff --git a/monkey/monkey_island/cc/server_utils/consts.py b/monkey/monkey_island/cc/server_utils/consts.py index f0dba26dc..1c0e53d84 100644 --- a/monkey/monkey_island/cc/server_utils/consts.py +++ b/monkey/monkey_island/cc/server_utils/consts.py @@ -3,12 +3,13 @@ import os __author__ = "itay.mizeretz" MONKEY_ISLAND_ABS_PATH = os.path.join(os.getcwd(), "monkey_island") + +DEFAULT_DATA_DIR = os.path.join(MONKEY_ISLAND_ABS_PATH, "cc") + DEFAULT_MONKEY_TTL_EXPIRY_DURATION_IN_SECONDS = 60 * 5 -DEFAULT_SERVER_CONFIG_PATH = os.path.join(MONKEY_ISLAND_ABS_PATH, "cc", "server_config.json") +DEFAULT_SERVER_CONFIG_PATH = os.path.join(DEFAULT_DATA_DIR, "server_config.json") DEFAULT_DEVELOP_SERVER_CONFIG_PATH = os.path.join( MONKEY_ISLAND_ABS_PATH, "cc", "server_config.json.develop" ) - -DEFAULT_DATA_DIR = os.path.join(MONKEY_ISLAND_ABS_PATH, "cc") diff --git a/monkey/monkey_island/config_loader.py b/monkey/monkey_island/config_loader.py index aaa9185d7..036be2c69 100644 --- a/monkey/monkey_island/config_loader.py +++ b/monkey/monkey_island/config_loader.py @@ -1,11 +1,20 @@ import json import os -from monkey_island.cc.server_utils.consts import DEFAULT_DATA_DIR +import monkey_island.cc.environment.server_config_generator as server_config_generator +from monkey_island.cc.server_utils.consts import DEFAULT_DATA_DIR, DEFAULT_SERVER_CONFIG_PATH DEFAULT_LOG_LEVEL = "INFO" +def create_default_server_config_path(): + if not os.path.isfile(DEFAULT_SERVER_CONFIG_PATH): + if not os.path.isdir(DEFAULT_DATA_DIR): + os.mkdir(DEFAULT_DATA_DIR, mode=0o700) + server_config_generator.create_default_config_file(DEFAULT_SERVER_CONFIG_PATH) + return DEFAULT_SERVER_CONFIG_PATH + + def load_server_config_from_file(server_config_path): with open(server_config_path, "r") as f: config_content = f.read()