예제 #1
0
        protected override void OnPowerChange(PowerChangeEvent e)
        {
            ITerminalServicesSession consoleSession = this[null];

            string clientUser = consoleSession.GetClientUser();

            if (Context.DebugLog)
            {
                var sb = new StringBuilder();
                sb.Append($"PowerEvent: Status={e.Status} ");

                sb.Append("(");
                sb.Append($"Console: SessionId={consoleSession.SessionId}, ");
                if (clientUser.Length > 0)
                {
                    sb.Append($"User={clientUser}, ");
                }
                sb.Append($"State={consoleSession.ConnectionState}");
                if (consoleSession.ConnectionState == Cassia.ConnectionState.Active)
                {
                    sb.Append($"|{(ConsoleLocked ? "Locked" : "Unlocked")}");
                }
                sb.Append(")");

                EventLog.WriteEntry(sb.ToString(), EventLogEntryType.Information, 90);
            }
        }
예제 #2
0
        protected override void OnSessionChange(SessionChangeEvent e)
        {
            SessionChangeDescription desc = e.Description;

            ITerminalServicesSession session        = wtsServer.GetSession(desc.SessionId);
            ITerminalServicesSession consoleSession = wtsServer.GetConsoleSession();

            string clientUser = session.GetClientUser();

            if (Context.DebugLog)
            {
                var sb = new StringBuilder();
                sb.Append($"SessionChange: SessionId={desc.SessionId}, Reason={desc.Reason}");

                sb.Append("(");
                if (clientUser.Length > 0)
                {
                    sb.Append($"User={clientUser}, ");
                }
                sb.Append($"State={session.ConnectionState}");
                sb.Append(")");

                EventLog.WriteEntry(sb.ToString(), EventLogEntryType.Information, 91);
            }

            if (session.SessionId == consoleSession.SessionId)
            {
                if (desc.Reason == SessionChangeReason.SessionLock)
                {
                    ConsoleLocked = true;
                }
                else if (desc.Reason == SessionChangeReason.SessionUnlock)
                {
                    ConsoleLocked = false;
                }
            }

            if (desc.Reason == SessionChangeReason.SessionLogon ||
                desc.Reason == SessionChangeReason.SessionUnlock && !session.IsRemoteConnected() ||
                desc.Reason == SessionChangeReason.ConsoleConnect ||
                desc.Reason == SessionChangeReason.RemoteConnect)
            {
                if (session.ConnectionState == ConnectionState.Active)
                {
                    if (Context.EventLog)
                    {
                        EventLog.WriteEntry($"User login: {clientUser}", EventLogEntryType.Information, 1);
                    }

                    UserLogin?.Invoke(this, new UserLoginEventArgs {
                        Session = session
                    });
                }
            }
        }