Ejemplo n.º 1
0
        private void ValidateSessionsAsync()
        {
            ThreadPool.QueueUserWorkItem(async(object o) =>
            {
                ITerminalServicesManager manager = new TerminalServicesManager();
                using (ITerminalServer server = manager.GetLocalServer())
                {
                    server.Open();

                    var localSessions = server.GetSessions().Where(s => s.SessionId > 0 && (s.ConnectionState == Cassia.ConnectionState.Active));
                    var messages      = await _msgReader.GetAllMessages();

                    if (messages.Count(m => m.Command.Type == WinGuard.Domain.Enumaretions.ClientCommandType.LOGOUT) > 0 &&
                        localSessions.Any(s => messages.Any(m => m.Command.ClientIdentifier == s.SessionId.ToString())))
                    {
                        foreach (var session in localSessions.Where(s => messages.Any(m => m.Command.ClientIdentifier == s.SessionId.ToString())))
                        {
                            session.Logoff();
                        }
                        return;
                    }
                    foreach (ITerminalServicesSession session in localSessions)
                    {
                        await _authService.Login(_encryptService.EncryptMessage(session.SessionId.ToString()),
                                                 _encryptService.EncryptMessage(session.UserName));
                    }
                }
            });
        }
        public async Task <bool> Login(string clientId, string userName)
        {
            await _service.Login(_encryptService.DecryptMessage(clientId),
                                 _encryptService.DecryptMessage(userName));

            return(true);
        }