Пример #1
0
        private void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            lock (ObjectLock)
            {
                var users = new ServiceUserLogins().GetUsersLoggedIn();
                foreach (var user in users)
                {
                    if (!_loggedInUsers.Contains(user))
                    {
                        //user logged in
                        var en = new EntityUserLogin();
                        en.UserName      = user;
                        en.LoginDateTime = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);
                        new ServiceUserTracker().AddTrackerEvent(en);
                    }
                    else
                    {
                        _loggedInUsers.Remove(user);
                    }
                }
                foreach (var user in _loggedInUsers)
                {
                    //user logged out
                    var loginEntity = new ServiceUserTracker().GetUserLastLogin(user);
                    if (loginEntity != null)
                    {
                        loginEntity.LogoutDateTime = DateTime.UtcNow.ToString(CultureInfo.InvariantCulture);
                        new ServiceUserTracker().UpdateTrackerEvent(loginEntity);
                    }
                }

                _loggedInUsers = users;
            }
        }
Пример #2
0
        private DtoTriggerResponse GetAllPoliciesForTriggerType(EnumPolicy.Trigger triggerType)
        {
            var policyRequest = new DtoPolicyRequest();

            policyRequest.ClientIdentity.Name           = DtoGobalSettings.ClientIdentity.Name;
            policyRequest.ClientIdentity.Guid           = DtoGobalSettings.ClientIdentity.Guid;
            policyRequest.ClientIdentity.InstallationId = DtoGobalSettings.ClientIdentity.InstallationId;
            policyRequest.Trigger = triggerType;
            //user login history and application usage is submitted for every startup or checkin trigger
            if (triggerType != EnumPolicy.Trigger.Login)
            {
                var serviceUserTracker = new ServiceUserTracker();
                serviceUserTracker.CleanupOldEvents();
                policyRequest.UserLogins = serviceUserTracker.GetUserCompletedEvents();

                var serviceAppMonitor = new ServiceAppMonitor();
                //Clean up duplicates before sending data to server
                serviceAppMonitor.CleanupOldEvents();
                serviceAppMonitor.RemoveDuplicates();
                policyRequest.AppMonitors = serviceAppMonitor.GetCompletedEvents();
            }

            var response = new APICall().PolicyApi.GetClientPolicies(policyRequest);

            if (response == null)
            {
                return(null);
            }

            //only update checkin time for startup and checkin
            if (triggerType != EnumPolicy.Trigger.Login)
            {
                DtoGobalSettings.ShutdownDelay = response.ShutdownDelay;
                //Cannot have a checkin time less than 1 minute
                DtoGobalSettings.CheckinTime = response.CheckinTime >= 1 ? response.CheckinTime : 1;
            }
            if (response.UserLoginsSubmitted && policyRequest.UserLogins != null)
            {
                new ServiceUserTracker().DeleteEvents(policyRequest.UserLogins);
            }

            if (response.AppMonitorSubmitted && policyRequest.AppMonitors != null)
            {
                new ServiceAppMonitor().DeleteEvents(policyRequest.AppMonitors);
            }

            if (!ValidatePolicies(response.Policies))
            {
                return(null);
            }

            return(response);
        }