Beispiel #1
0
        // Tự động hóa việc Logoff các User ở trạng thái disconnected.

        public void RemoveDisconnectSessions(int sessionID)
        {
            int k = 0;

            foreach (DisconnectSession dcss in ListDisconnectedSessions)
            {
                if (dcss.SessionID == sessionID)
                {
                    ListDisconnectedSessions.RemoveAt(k);
                    ListSessions.LogofftUserSession(WTS_CURRENT_SERVER_HANDLE, sessionID, false);
                    break;
                }
                k++;
            }
        }
Beispiel #2
0
        public void UpdateTimeDisconnection(Session[] listSessions, int timeUpdate)
        {
            int  k = 0;
            bool isDisconnect;

            for (int i = 0; i < listSessions.Length; i++)
            {
                int    currSessionID = listSessions[i].sessionID;
                string currUserName  = listSessions[i].userName;
                // Xét xem Session User này có nằm trong danh sách được lọc hay không.
                // Nếu có thì sẽ không tự động Logoff User này.
                isDisconnect     = true;
                List_FilterUsers = Load_FilterLogoffUsers();
                foreach (var obj in List_FilterUsers)
                {
                    if (obj.UserName.Equals(currUserName))
                    {
                        isDisconnect = false;
                        break;
                    }
                }
                if (isDisconnect == true)
                {
                    if (listSessions[i].connectedState == Enums.CONNECTSTATE_CLASS.Disconnected)
                    {
                        k = 0;
                        if (ListDisconnectedSessions.Count > 0)
                        {
                            foreach (DisconnectSession dcss in ListDisconnectedSessions)
                            {
                                if (dcss.SessionID == currSessionID)
                                {
                                    if (dcss.TimeHasDisconnected >= MaxTime)
                                    {
                                        // Đã đạt ngưỡng thời gian giới hạn. Hệ thống sẽ tự động logoff user này.
                                        ListDisconnectedSessions.RemoveAt(k);
                                        ListSessions.LogofftUserSession(WTS_CURRENT_SERVER_HANDLE, currSessionID, false);
                                        Logging.WriteLogSessions("User " + currUserName + " bị hệ thống tự động tắt khỏi máy chủ", "Auto Logoff");
                                        break;
                                    }
                                    else
                                    {
                                        dcss.TimeHasDisconnected += timeUpdate;
                                        break;
                                    }
                                }
                                else if (++k >= ListDisconnectedSessions.Count)
                                {
                                    // Nếu user này vừa mới disconnect nên chưa tồn tại trong danh sách disconnect
                                    // Ta thêm user này vào danh sách disconnect
                                    ListDisconnectedSessions.Add(new DisconnectSession(currSessionID, currUserName, timeUpdate));
                                    // Logging.WriteLogSessions("User " + currUserName + " rời khỏi máy chủ", "Disconnect");
                                    break;
                                }
                            }
                        }
                        else
                        {
                            // Nếu danh sách disconnect chưa có gì, ta thêm user vừa mới disconnect
                            ListDisconnectedSessions.Add(new DisconnectSession(currSessionID, currUserName, timeUpdate));
                            // Logging.WriteLogSessions("User " + currUserName + " thoát khỏi máy chủ", "Disconnect");
                        }
                    }
                    else
                    {
                        // Nếu User kết nối lại thì xóa user này trong danh sách disconnect sessions
                        k = 0;
                        foreach (DisconnectSession dcss in ListDisconnectedSessions)
                        {
                            if (dcss.SessionID == currSessionID)
                            {
                                ListDisconnectedSessions.RemoveAt(k);
                                // Logging.WriteLogSessions("User " + currUserName + " kết nối lại vào máy chủ", "Reconnect");
                                break;
                            }
                            k++;
                        }
                    }
                }
            }
        }