forked from p15670423/monkey
island: Trap OSError and JSONDecodeError when reading config
This commit is contained in:
parent
4a1653ed5f
commit
edbb2c39f3
|
@ -1,8 +1,10 @@
|
||||||
|
import json
|
||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
from gevent.pywsgi import WSGIServer
|
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)
|
sys.path.insert(0, MONKEY_ISLAND_DIR_BASE_PATH)
|
||||||
|
|
||||||
import monkey_island.cc.environment.environment_singleton as env_singleton # noqa: E402
|
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 common.version import get_version # noqa: E402
|
||||||
from monkey_island.cc.app import init_app # 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.arg_parser import parse_cli_args # noqa: E402
|
||||||
from monkey_island.cc.resources.monkey_download import MonkeyDownload # 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
|
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,
|
register_mongo_shutdown_callback,
|
||||||
start_mongodb,
|
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
|
from monkey_island.setup.island_config_options import IslandConfigOptions # noqa: E402
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
@ -39,7 +42,7 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def run_monkey_island():
|
def run_monkey_island():
|
||||||
island_args = parse_cli_args()
|
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)
|
_configure_logging(config_options)
|
||||||
_initialize_global_resources(config_options, server_config_path)
|
_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)
|
_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):
|
def _configure_logging(config_options):
|
||||||
reset_logger()
|
reset_logger()
|
||||||
setup_logging(config_options.data_dir, config_options.log_level)
|
setup_logging(config_options.data_dir, config_options.log_level)
|
||||||
|
|
|
@ -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
|
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:
|
if island_args.server_config_path:
|
||||||
return _setup_config_by_cmd_arg(island_args.server_config_path)
|
return _setup_config_by_cmd_arg(island_args.server_config_path)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue