Beispiel #1
0
        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());
        }
Beispiel #2
0
        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());
        }