private void HandleRadioClientsSync(SRSClientSession session, NetworkMessage message) { //store new client var replyMessage = new NetworkMessage { MsgType = NetworkMessage.MessageType.SYNC, Clients = new List <SRClient>(_clients.Values), ServerSettings = _serverSettings.ToDictionary(), Version = UpdaterChecker.VERSION }; session.Send(replyMessage.Encode()); //send update to everyone //Remove Client Radio Info var update = new NetworkMessage { MsgType = NetworkMessage.MessageType.UPDATE, Client = new SRClient { ClientGuid = message.Client.ClientGuid, RadioInfo = message.Client.RadioInfo, Name = message.Client.Name, Coalition = message.Client.Coalition, Seat = message.Client.Seat, LatLngPosition = message.Client.LatLngPosition } }; Multicast(update.Encode()); }
private void HandleVersionMismatch(SRSClientSession session) { //send server settings var replyMessage = new NetworkMessage { MsgType = NetworkMessage.MessageType.VERSION_MISMATCH, }; session.Send(replyMessage.Encode()); }
private void HandleExternalAWACSModePassword(SRSClientSession session, string password, SRClient client) { // Response of clientCoalition = 0 indicates authentication success (or external AWACS mode disabled) int clientCoalition = 0; if (_serverSettings.GetGeneralSetting(ServerSettingsKeys.EXTERNAL_AWACS_MODE).BoolValue && !string.IsNullOrWhiteSpace(password)) { if (_serverSettings.GetExternalAWACSModeSetting(ServerSettingsKeys.EXTERNAL_AWACS_MODE_BLUE_PASSWORD).StringValue == password) { clientCoalition = 2; } else if (_serverSettings.GetExternalAWACSModeSetting(ServerSettingsKeys.EXTERNAL_AWACS_MODE_RED_PASSWORD).StringValue == password) { clientCoalition = 1; } } if (_clients.ContainsKey(client.ClientGuid)) { _clients[client.ClientGuid].Coalition = clientCoalition; _clients[client.ClientGuid].Name = client.Name; _eventAggregator.PublishOnUIThread(new ServerStateMessage(true, new List <SRClient>(_clients.Values))); } var replyMessage = new NetworkMessage { Client = new SRClient { Coalition = clientCoalition }, MsgType = NetworkMessage.MessageType.EXTERNAL_AWACS_MODE_PASSWORD, }; session.Send(replyMessage.Encode()); var message = new NetworkMessage { MsgType = NetworkMessage.MessageType.UPDATE, ServerSettings = _serverSettings.ToDictionary(), Client = new SRClient { ClientGuid = client.ClientGuid, Coalition = clientCoalition, Name = client.Name, LastUpdate = client.LastUpdate, Position = client.Position, LatLngPosition = client.LatLngPosition } }; Multicast(message.Encode()); }