Пример #1
0
        public async Task Invoke(
            HttpContext context,
            IDeviceResolver deviceResolver,
            IBrowserResolver browserResolver,
            IClientRepository clientRepository)
        {
            if (!deviceResolver.Device.Crawler)
            {
                Parser     uaParser   = Parser.GetDefault();
                ClientInfo clientInfo = null;

                Guid clientId  = Guid.Empty;
                Guid sessionId = Guid.Empty;

                var cookieId       = context.Request.Cookies[_key];
                var isExistingUser = context.Request.Cookies.ContainsKey(_key);
                if (!isExistingUser || !Guid.TryParse(cookieId, out clientId) || clientRepository.Get(clientId) is null)
                {
                    clientId = Guid.NewGuid();
                    var userAgent = deviceResolver.UserAgent.ToString();
                    if (clientInfo is null)
                    {
                        clientInfo = uaParser.Parse(userAgent);
                    }
                    context.Response.Cookies.Append(_key, clientId.ToString());
                    var newClient = new DAL.Entities.Client()
                    {
                        ClientId        = clientId,
                        Ip              = context.Connection.RemoteIpAddress.ToString(),
                        Device          = deviceResolver.Device.Type.ToString(),
                        Browser         = browserResolver.Browser.Type.ToString(),
                        BrowserVersion  = browserResolver.Browser.Version.ToString(),
                        Platform        = clientInfo.OS.Family,
                        PlatformVersion = clientInfo.OS.Major,
                    };
                    clientRepository.Add(newClient);
                }
                if (clientInfo is null)
                {
                    clientInfo = uaParser.Parse(deviceResolver.UserAgent.ToString());
                }
                var onlineClient = new OnlineClientViewModel()
                {
                    ClientId     = clientId,
                    Ip           = context.Connection.RemoteIpAddress.ToString(),
                    UserAgent    = $"Device: {deviceResolver.Device.Type.ToString()}, OS: {clientInfo.OS.Family} - {clientInfo.OS.Major}, Browser: {browserResolver.Browser.Type.ToString()} - {browserResolver.Browser.Version.ToString()}",
                    LastActivity = DateTime.Now
                };
                OnlineClients.AddOrUpdate(clientId.ToString(), onlineClient, (key, value) => { value.LastActivity = DateTime.Now; return(value); });
            }
            foreach (var item in OnlineClients)
            {
                if ((DateTime.Now - item.Value.LastActivity).Seconds >= _timeout)
                {
                    OnlineClients.Remove(item.Key, out OnlineClientViewModel deletedUser);
                }
            }
            await _next(context);
        }
Пример #2
0
 private void btn_Sign_In_Click(object sender, RoutedEventArgs e)
 {
     _currentСlient = _common.SignIn(txt_NickName.Text,
                                     txt_Password.Text);
     if (_currentСlient != null)
     {
         this.Close();
     }
     txt_NickName.Text = String.Empty;
     txt_Password.Text = String.Empty;
 }
Пример #3
0
        public MainWindow()
        {
            ModalWindow modalWindow = new ModalWindow();

            modalWindow.ShowDialog();
            _currentСlient = ModalWindow._currentСlient;
            if (_currentСlient == null)
            {
                System.Windows.Application.Current.Shutdown();
            }
            else
            {
                InitializeComponent();
                _common                      = new BLL.Common();
                Conversations                = new ObservableCollection <ConversationModel>();
                Messages                     = new ObservableCollection <MessageEventArgsModel>();
                _clientTcp                   = new TcpClientConnection();
                _clientTcp.OnMessage        += SetMessage;
                _clientTcp.SentStartMessage += SentStartMessage;
                UpdateСlientData();
                _clientTcp.StartTcpClient(_portNumber);
            }
        }