def __init__(self, server_queue, client_queues, server_stats_queue, ports, accounts): self.logger = logging.getLogger(__name__) self.server_queue = server_queue self.client_queues = client_queues self.server_stats_queue = server_stats_queue self.game_servers = TracingDict() self.players = TracingDict() self.social_network = SocialNetwork() self.firewall = FirewallClient(ports) self.accounts = accounts self.message_handlers = { Auth2LoginAuthCodeRequestMessage: self.handle_authcode_request_message, Auth2LoginChatMessage: self.handle_auth_channel_chat_message, Auth2LoginRegisterAsBotMessage: self.handle_register_as_bot_message, Auth2LoginSetEmailMessage: self.handle_set_email_message, ExecuteCallbackMessage: self.handle_execute_callback_message, HttpRequestMessage: self.handle_http_request_message, PeerConnectedMessage: self.handle_client_connected_message, PeerDisconnectedMessage: self.handle_client_disconnected_message, LoginProtocolMessage: self.handle_client_message, Launcher2LoginProtocolVersionMessage: self.handle_launcher_protocol_version_message, Launcher2LoginAddressInfoMessage: self.handle_address_info_message, Launcher2LoginServerInfoMessage: self.handle_server_info_message, Launcher2LoginMapInfoMessage: self.handle_map_info_message, Launcher2LoginTeamInfoMessage: self.handle_team_info_message, Launcher2LoginScoreInfoMessage: self.handle_score_info_message, Launcher2LoginMatchTimeMessage: self.handle_match_time_message, Launcher2LoginServerReadyMessage: self.handle_server_ready_message, Launcher2LoginMatchEndMessage: self.handle_match_end_message, Launcher2LoginWaitingForMap: self.handle_waiting_for_map_message, } self.pending_callbacks = PendingCallbacks(server_queue) self.last_player_update_time = datetime.datetime.utcnow() self.address_pair, errormsg = IPAddressPair.detect() if not self.address_pair.external_ip: self.logger.warning('Unable to detect public IP address: %s\n' 'This will cause problems if the login server ' 'and any players are on the same LAN, but the ' 'game server is not.' % errormsg) else: self.logger.info('detected external IP: %s' % self.address_pair.external_ip) self.pending_callbacks.add(self, 0, self.remove_old_authcodes)
def __init__(self, server_queue, client_queues, server_stats_queue, accounts): self.logger = logging.getLogger(__name__) self.server_queue = server_queue self.client_queues = client_queues self.server_stats_queue = server_stats_queue self.game_servers = TracingDict() self.players = TracingDict() self.social_network = SocialNetwork() self.accounts = accounts self.message_handlers = { AuthCodeRequestMessage: self.handle_authcode_request_message, ExecuteCallbackMessage: self.handle_execute_callback_message, HttpRequestMessage: self.handle_http_request_message, PeerConnectedMessage: self.handle_client_connected_message, PeerDisconnectedMessage: self.handle_client_disconnected_message, LoginProtocolMessage: self.handle_client_message, Launcher2LoginProtocolVersionMessage: self.handle_launcher_protocol_version_message, Launcher2LoginAddressInfoMessage: self.handle_address_info_message, Launcher2LoginServerInfoMessage: self.handle_server_info_message, Launcher2LoginMapInfoMessage: self.handle_map_info_message, Launcher2LoginTeamInfoMessage: self.handle_team_info_message, Launcher2LoginScoreInfoMessage: self.handle_score_info_message, Launcher2LoginMatchTimeMessage: self.handle_match_time_message, Launcher2LoginServerReadyMessage: self.handle_server_ready_message, Launcher2LoginMatchEndMessage: self.handle_match_end_message, } self.pending_callbacks = PendingCallbacks(server_queue) self.address_pair, errormsg = IPAddressPair.detect() if not self.address_pair.external_ip: self.logger.warning('Unable to detect public IP address: %s\n' 'This will cause problems if the login server ' 'and any players are on the same LAN, but the ' 'game server is not.' % errormsg) else: self.logger.info('server: detected external IP: %s' % self.address_pair.external_ip)
def __init__(self, game_server_config, incoming_queue, server_handler_queue): gevent.getcurrent().name = 'launcher' self.pending_callbacks = PendingCallbacks(incoming_queue) self.logger = logging.getLogger(__name__) self.game_server_config = game_server_config self.incoming_queue = incoming_queue self.server_handler_queue = server_handler_queue self.players = TracingDict() self.game_controller = None self.login_server = None self.active_server_port = None self.pending_server_port = None self.min_next_switch_time = None self.server_stopping = False try: with open(map_rotation_state_path, 'rt') as f: self.controller_context = json.load(f) except IOError: self.controller_context = {} self.last_server_info_message = None self.last_map_info_message = None self.last_team_info_message = None self.last_score_info_message = None self.last_match_time_message = None self.last_server_ready_message = None self.last_match_end_message = None self.address_pair, errormsg = IPAddressPair.detect() if not self.address_pair.external_ip: self.logger.warning('Unable to detect public IP address: %s\n' 'This will cause problems if the login server ' 'or any of your players are not on your LAN.' % errormsg) else: self.logger.info('launcher: detected external IP: %s' % self.address_pair.external_ip) if not self.address_pair.internal_ip: self.logger.warning( 'You appear to be running the game server on a machine ' 'directly connected to the internet. This is will cause ' 'problems if the login server or any of your players ' 'are on your LAN.') else: self.logger.info('launcher: detected internal IP: %s' % self.address_pair.internal_ip) self.message_handlers = { PeerConnectedMessage: self.handle_peer_connected, PeerDisconnectedMessage: self.handle_peer_disconnected, Login2LauncherProtocolVersionMessage: self.handle_login_server_protocol_version_message, Login2LauncherNextMapMessage: self.handle_next_map_message, Login2LauncherSetPlayerLoadoutsMessage: self.handle_set_player_loadouts_message, Login2LauncherRemovePlayerLoadoutsMessage: self.handle_remove_player_loadouts_message, Login2LauncherAddPlayer: self.handle_add_player_message, Login2LauncherRemovePlayer: self.handle_remove_player_message, Login2LauncherPings: self.handle_pings_message, Game2LauncherProtocolVersionMessage: self.handle_game_controller_protocol_version_message, Game2LauncherServerInfoMessage: self.handle_server_info_message, Game2LauncherMapInfoMessage: self.handle_map_info_message, Game2LauncherTeamInfoMessage: self.handle_team_info_message, Game2LauncherScoreInfoMessage: self.handle_score_info_message, Game2LauncherMatchTimeMessage: self.handle_match_time_message, Game2LauncherMatchEndMessage: self.handle_match_end_message, Game2LauncherLoadoutRequest: self.handle_loadout_request_message, GameServerTerminatedMessage: self.handle_game_server_terminated_message, ExecuteCallbackMessage: self.handle_execute_callback_message }