Ejemplo n.º 1
0
    def __init__(self):
        self.logger = Logger()
        self.config = None
        self.bot = None
        self.language = Language(self)
        self.plugin_manager = PluginManager(self)
        self.command_manager = CommandManager(self)
        self.server_interface = None

        self.console_input_thread = None
        self.receive_server = ReceiveServer(self)

        self.should_keep_looping = True  # loop keep flag
Ejemplo n.º 2
0
	def __init__(self, old_process=None):
		self.console_input_thread = None
		self.info_reactor_thread = None
		self.info_queue = queue.Queue(maxsize=constant.MAX_INFO_QUEUE_SIZE)
		self.process = old_process  # the process for the server
		self.server_status = ServerStatus.STOPPED
		self.flag_interrupt = False  # ctrl-c flag
		self.flag_rcon_startup = False  # set to True after server startup. used to start the rcon server
		self.flag_exit = False  # MCDR exit flag
		self.starting_server_lock = Lock()  # to prevent multiple start_server() call

		# will be assigned in reload_config()
		self.encoding_method = None
		self.decoding_method = None

		self.logger = logger.Logger(self, constant.NAME_SHORT)
		self.logger.set_file(constant.LOGGING_FILE)
		self.server_logger = logger.ServerLogger('Server')
		self.language_manager = LanguageManager(self, constant.LANGUAGE_FOLDER)
		self.config = config.Config(self, constant.CONFIG_FILE)
		self.rcon_manager = RconManager(self)
		self.parser_manager = ParserManager(self)
		self.load_config()
		self.reactors = self.load_reactor(constant.REACTOR_FOLDER)
		self.server_interface = ServerInterface(self)
		self.command_manager = CommandManager(self)
		self.plugin_manager = PluginManager(self, constant.PLUGIN_FOLDER)
		self.load_plugins()
		self.permission_manager = PermissionManager(self, constant.PERMISSION_FILE)
		self.update_helper = UpdateHelper(self)
		self.update_helper.check_update_start()
Ejemplo n.º 3
0
    def __init__(self):
        self.console_input_thread = None
        self.process = None  # the process for the server
        self.server_status = ServerStatus.STOPPED
        self.flag_interrupt = False  # ctrl-c flag
        self.flag_server_startup = False  # set to True after server startup. used to start the rcon server
        self.starting_server = False  # to prevent multiple start_server() call

        # will be assigned in reload_config()
        self.parser = None
        self.encoding_method = None
        self.decoding_method = None
        self.rcon_manager = None

        self.logger = logger.Logger(self, constant.NAME_SHORT)
        self.logger.set_file(constant.LOGGING_FILE)
        self.language_manager = LanguageManager(self, constant.LANGUAGE_FOLDER)
        self.config = config.Config(self, constant.CONFIG_FILE)
        self.rcon_manager = RconManager(self)
        self.load_config()
        self.reactors = self.load_reactor(constant.REACTOR_FOLDER)
        self.server_interface = ServerInterface(self)
        self.command_manager = CommandManager(self)
        self.plugin_manager = PluginManager(self, constant.PLUGIN_FOLDER)
        self.load_plugins()
        self.permission_manager = PermissionManager(self,
                                                    constant.PERMISSION_FILE)
Ejemplo n.º 4
0
    def __init__(self, old_process=None):
        self.console_input_thread = None
        self.info_reactor_thread = None
        self.process = old_process  # type: Popen # the process for the server
        self.server_status = ServerStatus.STOPPED
        self.flag_interrupt = False  # ctrl-c flag
        self.flag_server_startup = False  # set to True after server startup
        self.flag_server_rcon_ready = False  # set to True after server started its rcon. used to start the rcon server
        self.flag_mcdr_exit = False  # MCDR exit flag
        self.flag_exit_naturally = True  # if MCDR exit after server stop. can be modified by plugins
        self.starting_server_lock = Lock(
        )  # to prevent multiple start_server() call
        self.stop_lock = Lock()  # to prevent multiple stop() call

        # will be assigned in reload_config()
        self.encoding_method = None
        self.decoding_method = None

        self.logger = logger.Logger(self, constant.NAME_SHORT)
        self.logger.set_file(constant.LOGGING_FILE)
        self.server_logger = logger.ServerLogger('Server')
        self.language_manager = LanguageManager(self, constant.LANGUAGE_FOLDER)
        self.config = config.Config(self, constant.CONFIG_FILE)
        self.rcon_manager = RconManager(self)
        self.parser_manager = ParserManager(self, constant.PARSER_FOLDER)
        self.load_config()  # loads config, language, parsers

        self.reactor_manager = ReactorManager(self)
        self.server_interface = ServerInterface(self)
        self.command_manager = CommandManager(self)
        self.plugin_manager = PluginManager(self, constant.PLUGIN_FOLDER)
        self.load_plugins()
        self.permission_manager = PermissionManager(self,
                                                    constant.PERMISSION_FILE)
        self.update_helper = UpdateHelper(self)
        self.update_helper.check_update_start()
Ejemplo n.º 5
0
from utils.command_validator import (AnyValidator, BetweenValidator,
                                     MultiValueValidator, EmptyValidator)

from utils.command_manager import (CommandManager, MultiCommandManager)

TRACEROUTE_PARAMS = {
    "confidence":
    CommandManager("-c", BetweenValidator(0, 0.99)),
    "method":
    CommandManager("-P",
                   MultiValueValidator(["udp-paris", "icmp-paris", "icp"])),
    "dport":
    CommandManager("-d", AnyValidator()),
    "firsthop":
    CommandManager("-f", AnyValidator()),
    "maxttl":
    CommandManager("-m", BetweenValidator(1, 255)),
    "attempts":
    CommandManager("-q", BetweenValidator(1, 10)),
    "sport":
    CommandManager("-s", AnyValidator()),
    "wait":
    CommandManager("-w", BetweenValidator(1, 20)),
    "wait-probe":
    CommandManager("-W", BetweenValidator(0, 100))
}

PING_PARAMS = {
    "probecount":
    CommandManager("-c", BetweenValidator(1, 100)),
    "icmp-sum":
Ejemplo n.º 6
0
class Server:
    def __init__(self):
        self.logger = Logger()
        self.config = None
        self.bot = None
        self.language = Language(self)
        self.plugin_manager = PluginManager(self)
        self.command_manager = CommandManager(self)
        self.server_interface = None

        self.console_input_thread = None
        self.receive_server = ReceiveServer(self)

        self.should_keep_looping = True  # loop keep flag

    def t(self, text, *args):
        return self.language.translate(text, *args)

    def load_config(self):
        self.config = Config(self.logger)

        # Language
        language = self.config['lang']
        self.language.set_language(language)
        self.logger.info(self.t('server.load_config.set_lang', language))

        # api_url and receive_url
        self.logger.info(
            self.t('server.load_config.set_api_url', self.config['api_url']))
        self.logger.info(
            self.t('server.load_config.set_receive_url',
                   self.config['receive_url']))

        # Bot
        self.bot = Bot(self)

        # Debug mode
        if self.config['debug_mode'] is True:
            self.logger.set_level(debug=True)
            self.logger.info(self.t('server.load_config.debug_on'))
        else:
            self.logger.set_level(debug=False)
            self.logger.info(self.t('server.load_config.debug_off'))

    def start(self):
        # Load config
        self.load_config()

        # Load plugin
        self.server_interface = ServerInterface(self)
        self.plugin_manager.load_all_plugins()

        # Start Server
        self.receive_server.start()

        # Start Console
        self.logger.debug('Console thread starting')
        self.console_input_thread = func.start_thread(self.console_input,
                                                      name='Console')

        # Main loop
        self.loop()

    def stop(self):
        """Stop and exit"""
        # Receive server stop
        if self.receive_server.is_server_running():
            self.receive_server.stop()
        # Main loop stop
        self.should_keep_looping = False
        self.logger.info(self.t('bye'))

    def loop(self):
        """Main loop to keep main thread alive"""
        while self.should_keep_looping:
            try:
                time.sleep(0.01)
            except KeyboardInterrupt:
                break

    def console_input(self):
        """Console input thread"""
        while True:
            try:
                self.command_manager.process_command(input())
            except (KeyboardInterrupt, EOFError, SystemExit, IOError):
                self.stop()
                break
            except:
                self.logger.exception(self.t('server.console_input.error'))