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 __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()
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)
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()
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":
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'))