Beispiel #1
0
        //Обработка отключения пользователя
        public void Disconnect(ChatUser User)
        {
            //Определение подключения
            ICallbackMessage Connection = ConnectedUsers.FirstOrDefault(x => x.Value.Name == User.Name).Key;

            Console.WriteLine(User.Name + " trying to disconnect!");
            //Если подкючение найдено
            if (Connection != null)
            {
                //Удаление текущего пользователя из списка подключенных
                ConnectedUsers.Remove(Connection);
                Console.WriteLine(User.Name + " disconnected!");
                //Обновление списка подключенных у всех пользователей
                foreach (ICallbackMessage u in ConnectedUsers.Keys)
                {
                    u.UpdateConnected(ConnectedUsers.Values.ToArray());
                }
                return;
            }
            else
            {
                Console.WriteLine(User.Name + " connection not found!");
                return;
            }
        }
        // TODO: logging
        public static async Task Ban(SausageConnection user)
        {
            try
            {
                if (!(user.Socket.Connected || MainSocket.Connected))
                {
                    return;
                }
                // user exists
                if (ConnectedUsers.Any(x => x.UserInfo.Guid == user.UserInfo.Guid))
                {
                    Blacklisted.Add(user.Ip.Address);
                    PacketFormat packet = new PacketFormat(PacketOption.UserBanned)
                    {
                        Guid    = user.UserInfo.Guid,
                        Content = "Place-holder reason"
                    };
                    Log(packet);
                    await Task.Delay(1000);

                    // delay for waiting on the client to recieve a message
                    user.Disconnect();
                    UiCtx.Send(x => ConnectedUsers.Remove(user));
                }
                else
                {
                    MessageBox.Show("User not found", "Ban result");
                }
            }
            catch (ArgumentNullException e)
            {
                MessageBox.Show($"User returned null {e}", "Exception Caught");
            }
        }
Beispiel #3
0
        public void RemoveUser(User user)
        {
            if (ConnectedUsers.Contains(user))
            {
                ConnectedUsers.Remove(user);

                AddMessage($"{user.Name} left the chat", ChatMessage.ChatMessageTypes.META);
            }
        }
 public void RemoveUser(string user, string reason)
 {
     if (UserExists(user))
     {
         Send(user, "close", reason);
         ConnectedUsers[user].Connected = false;
         ConnectedUsers.Remove(user);
     }
 }
Beispiel #5
0
 private void ChannelOnUserLeft(object sender, IrcChannelUserEventArgs e)
 {
     ExecuteOnUiThread(() =>
     {
         var vm = ConnectedUsers.FirstOrDefault(vmu => vmu.User == e.ChannelUser.User);
         if (vm != null)
         {
             ConnectedUsers.Remove(vm);
         }
     });
 }
Beispiel #6
0
        public override void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo)
        {
            NebulaUser user = GetUser(peer.Id);

            if (user != null)
            {
                ConnectedUsers.Remove(user.Id);
            }
            UserDisconnected?.Invoke(this, new UserDisconnectedEventArgs(user, disconnectInfo));
            WriteLine($"Client Disconnected '{peer.EndPoint.Address}:{peer.EndPoint.Port}'. Reason: {disconnectInfo.Reason} ({disconnectInfo.SocketErrorCode})",
                      ConsoleColor.Red);
        }
Beispiel #7
0
        public override Task OnDisconnectedAsync(Exception exception)
        {
            var user = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);

            if (user == null)
            {
                return(base.OnDisconnectedAsync(exception));
            }

            ConnectedUsers.Remove(user);
            return(base.OnDisconnectedAsync(exception));
        }
Beispiel #8
0
 private void ConnectedUsersOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     if (e.NewItems is IList <UserInfoBoxViewModel> newViewModels)
     {
         foreach (var userVm in newViewModels)
         {
             userVm.User.Quit += (o, args) =>
             {
                 ExecuteOnUiThread(() => ConnectedUsers.Remove(userVm));
             };
         }
     }
 }
Beispiel #9
0
        public override Task OnDisconnectedAsync(Exception exception)
        {
            var user = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);

            if (user == null)
            {
                return(base.OnDisconnectedAsync(exception));
            }

            Clients.All.SendAsync(ChatHubMethods.UserNotAvailable, user.UserId);
            ConnectedUsers.Remove(user);
            return(base.OnDisconnectedAsync(exception));
        }
Beispiel #10
0
        public HostServerViewModel(INetworkInteractionFactory networkInteractionFactory, IEventAggregator eventAggregator, INetworkService networkService, IPlayServerService playServerService)
        {
            _networkInteractionFactory = networkInteractionFactory;
            _eventAggregator           = eventAggregator;
            _networkService            = networkService;
            _playServerService         = playServerService;

            playServerService.ClientConnected    += (sender, e) => ConnectedUsers.Add(e.Address);
            playServerService.ClientDisconnected += (sender, e) => ConnectedUsers.Remove(e.Address);

            Task.Run(async() => await networkService.ConfigureMachineForHosting().ContinueWith(task =>
            {
                HostAddress = new NetworkAddress(networkService.ExternalIp, networkService.Port);
                IsLoading   = false;
            }));
        }
Beispiel #11
0
 private void ClientUnSubscribed(User user)
 {
     try
     {
         this._currentDispatcher.Invoke(DispatcherPriority.Normal, (Action)(() =>
         {
             if (ConnectedUsers.Contains(user))
             {
                 ConnectedUsers.Remove(user);
                 ConnectedUsersCount--;
             }
         }));
     }
     catch (Exception exception)
     {
         Logger.Error(exception, OType.FullName, "ClientUnSubscribed");
     }
 }
Beispiel #12
0
        public override async Task OnDisconnectedAsync(Exception exception)
        {
            var c = ConnectedUsers.FirstOrDefault(u => u.ID == Context.ConnectionId);

            c.Room.ReadyUsers.Remove(c);
            c.Room.WaitingUsers.Remove(c);
            if ((c.Room.WaitingUsers.Count + c.Room.ReadyUsers.Count) == 0)
            {
                OnlineRooms.Remove(c.Room);
            }
            Game();
            await Clients.Group(c.Room.Name).SendAsync("updateUsers", c.Room.WaitingUsers.Count, c.Room.WaitingUsers.Select(u => u.Usuario));

            await Clients.Group(c.Room.Name).SendAsync("updateReadyUsers", c.Room.WaitingUsers.Count + c.Room.ReadyUsers.Count, c.Room.ReadyUsers.Count, c.Room.ReadyUsers.Select(u => u.Usuario), c.Room.game);

            await Clients.Caller.SendAsync("close");

            ConnectedUsers.Remove(c);
        }
 private void E_ReceivedMsg(object sender, string e)
 {
     if (e.StartsWith("@quit"))
     {
         var client = sender as ClientHandler;
         ConnectedUsers.Remove(client.Username); // remove username
     }
     else
     {
         App.Current.Dispatcher.Invoke(() =>
         {
             var client = sender as ClientHandler;
             ReceivedMsg.Add(client.Username + ":" + e);
             RaisePropertyChanged(nameof(CountMsg));
             if (!ConnectedUsers.Contains(client.Username))
             {
                 ConnectedUsers.Add(client.Username);
             }
         });
     }
 }
Beispiel #14
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BindableChannel"/> class.
        /// </summary>
        /// <param name="model">API Channel Model.</param>
        /// <param name="guildId">Id of Channel's guild.</param>
        /// <param name="states">List of VoiceStates for users in a voice channel.</param>
        public BindableChannel([NotNull] Channel model, [CanBeNull] IEnumerable<VoiceState> states = null) : base(model)
        {
            MessengerInstance.Register<GatewayUserGuildSettingsUpdatedMessage>(this, m =>
            {
                if ((m.Settings.GuildId ?? "DM") == GuildId)
                {
                    DispatcherHelper.CheckBeginInvokeOnUi(() =>
                    {
                        // Updated channel settings
                        ChannelOverride channelOverride = ChannelsService.GetChannelSettings(Model.Id);
                        if (channelOverride != null)
                        {
                            Muted = channelOverride.Muted;
                        }
                    });
                }
            });

            MessengerInstance.Register<SettingChangedMessage<bool>>(this, m =>
            {
                if (m.Key == SettingKeys.ShowNoPermssions)
                {
                    RaisePropertyChanged(nameof(Hidden));
                }
            });

            MessengerInstance.Register<SettingChangedMessage<CollapseOverride>>(this, m =>
            {
                if (m.Key == SettingKeys.CollapseOverride)
                {
                    RaisePropertyChanged(nameof(Hidden));
                }
            });

            MessengerInstance.Register<SpeakMessage>(this, e =>
            {
                if (e.EventData.UserId != null && ConnectedUsers.ContainsKey(e.EventData.UserId))
                {
                    DispatcherHelper.CheckBeginInvokeOnUi(() => { ConnectedUsers[e.EventData.UserId].Speaking = e.EventData.Speaking > 0; });
                }
            });

            MessengerInstance.Register<GatewayVoiceStateUpdateMessage>(this, m =>
            {
                DispatcherHelper.CheckBeginInvokeOnUi(() =>
                {
                    if (m.VoiceState.ChannelId == Model.Id)
                    {
                        if (ConnectedUsers.ContainsKey(m.VoiceState.UserId))
                        {
                            ConnectedUsers[m.VoiceState.UserId].Model = m.VoiceState;
                            ConnectedUsers[m.VoiceState.UserId].UpateProperties();
                        }
                        else
                        {
                            ConnectedUsers.Add(m.VoiceState.UserId, new BindableVoiceUser(m.VoiceState));
                        }
                    }
                    else if (ConnectedUsers.ContainsKey(m.VoiceState.UserId))
                    {
                        ConnectedUsers.Remove(m.VoiceState.UserId);
                    }
                });
            });

            if (states != null)
            {
                foreach (var state in states)
                {
                    if (state.ChannelId == Model.Id)
                    {
                        state.GuildId = GuildId;
                        ConnectedUsers.Add(state.UserId, new BindableVoiceUser(state));
                    }
                }
            }
        }
Beispiel #15
0
 protected internal virtual void OnClientDisconnected(TUser user)
 {
     ConnectedUsers.Remove(user);
 }
Beispiel #16
0
 public void Disconnect(int userid)
 {
     ConnectedUsers.Remove(userid);
     HasMarkedUnRead = false;
 }
Beispiel #17
0
        public void RemoveConectedUser(string connectionId)
        {
            var usertoremove = ConnectedUsers.Find(x => x.ConnectionID == connectionId);

            ConnectedUsers.Remove(usertoremove);
        }
Beispiel #18
0
        void WorkerOnProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            Message message = e.UserState as Message;

            if (message != null)
            {
                switch (message.Type)
                {
                case Message.MessageType.Connect:
                {
                    if (message.Username.Equals(Username))
                    {
                        ChatMessages += String.Format("({1}) Welcome, {0}!\n", Username, message.MessageCreationTime.ToString("G"));
                        IsConnected   = true;
                    }
                    else
                    {
                        ConnectedUsers.Add(message.Username);
                        ChatMessages += String.Format("({1}) {0} has joined the server.\n", message.Username, message.MessageCreationTime.ToString("G"));
                    }
                    break;
                }

                case Message.MessageType.Disconnect:
                {
                    if (!message.Username.Equals(Username))
                    {
                        ConnectedUsers.Remove(message.Username);
                        ChatMessages += String.Format("({1}) {0} has left the server.\n", message.Username, message.MessageCreationTime.ToString("G"));
                    }
                    break;
                }

                case Message.MessageType.ChatMessage:
                {
                    if (message.Username != Username && !ConnectedUsers.Contains(message.Username))
                    {
                        ConnectedUsers.Add(message.Username);
                    }

                    ChatMessages += String.Format("({1}) {2}: {0} \n", message.ChatMessage, message.MessageCreationTime.ToString("G"), message.Username);
                    break;
                }

                case Message.MessageType.UsernameAlreadyTaken:
                {
                    ChatMessages += String.Format("({1}) Username {0} is already taken!\n", Username, message.MessageCreationTime.ToString("G"));

                    _networkStream.Close();
                    _tcpClient.Close();
                    _tcpClient = new TcpClient();
                    _worker.CancelAsync();

                    break;
                }

                default:
                    //do nothing
                    break;
                }
            }
        }