Пример #1
0
        public static async Task <Result <ToastNotificationVisibility> > CheckDesktopData(
            Some <NotificationProfile> userProfile, bool isDisabled)
        {
            var groupName = ToastGroups.CheckDesktopData;
            var tag       = ToastGroups.CheckDesktopData;
            var desktopDataCheckIsDisabled = Profile.IsCheckDisabled(isDisabled, typeof(CheckDesktopDataCommand));

            return(await CheckDesktopDataPure(
                       () => ComplianceInfo.LoadInfo(DesktopData.LoadDesktopDataInfo, info => info.HasDesktopData, ScheduledTasks.ComplianceUserMeasurements, true),
                       (desktopDataInfo) => DesktopData.ShowDesktopDataToastNotification(userProfile.Value, desktopDataInfo, tag, groupName),
                       () => ToastHelper.RemoveToastNotification(groupName), desktopDataCheckIsDisabled).ConfigureAwait(false));
        }
        public static async Task <Result <ToastNotificationVisibility> > CheckPasswordExpiry(Some <NotificationProfile> userProfile, bool isDisabled)
        {
            var groupName = ToastGroups.CheckPasswordExpiry;
            var tag       = ToastGroups.CheckPasswordExpiry;
            var passwordExpiryCheckIsDisabled = Profile.IsCheckDisabled(isDisabled, typeof(CheckPasswordExpiryCommand));

            bool IsNonCompliant(PasswordExpiryInfo info) => info.PasswordExpiryStatus == PasswordExpiryStatus.ExpiringSoon;

            return(await CheckPasswordExpiryPure(
                       () => ComplianceInfo.LoadInfo <PasswordExpiryInfo>(PasswordExpire.LoadPasswordExpiryInfo, IsNonCompliant, ScheduledTasks.ComplianceUserMeasurements, true),
                       IsNonCompliant,
                       (passwordExpirationDate) => PasswordExpire.ShowPasswordExpiryToastNotification(userProfile, passwordExpirationDate, tag, groupName),
                       () => ToastHelper.RemoveToastNotification(groupName),
                       passwordExpiryCheckIsDisabled
                       ).ConfigureAwait(false));
        }
Пример #3
0
        public static async Task <Result <ToastNotificationVisibility> > CheckSystemUptime(Some <NotificationProfile> userProfile, double maxUpTimeHours, bool isDisabled)
        {
            var category             = typeof(CheckSystemUptimeCommand).GetPolicyCategory();
            var policyMaxUptimeHours = Profile.GetIntegerPolicyValue(Context.Machine, category, "MaxUptimeHours", (int)maxUpTimeHours);
            var groupName            = ToastGroups.CheckSystemUptime;
            var tag = ToastGroups.CheckSystemUptime;
            var systemUptimeCheckIsDisabled = Profile.IsCheckDisabled(isDisabled, typeof(CheckSystemUptimeCommand));

            bool IsNonCompliant(SystemUptimeInfo info) => info.Uptime.TotalHours > (double)policyMaxUptimeHours;

            return(await CheckSystemUptimePure(() => ComplianceInfo.LoadInfo <SystemUptimeInfo>(SystemUptime.LoadSystemUptimeInfo, IsNonCompliant, ScheduledTasks.ComplianceSystemMeasurements, true),
                                               IsNonCompliant,
                                               (uptime) => SystemUptime.ShowSystemUptimeToastNotification(userProfile, tag, groupName, uptime),
                                               () => ToastHelper.RemoveToastNotification(groupName),
                                               systemUptimeCheckIsDisabled
                                               ).ConfigureAwait(false));
        }
Пример #4
0
        public static async Task <Result <ToastNotificationVisibility> > CheckMissingMsUpdates(
            Some <NotificationProfile> userProfile, int hoursToWaitBeforeNotifyUser, bool isDisabled)
        {
            var category = typeof(CheckMissingMsUpdatesCommand).GetPolicyCategory();
            var policyHoursToWaitBeforeNotifyUser = Profile.GetIntegerPolicyValue(Context.Machine, category, "HoursToWaitBeforeNotifyingUser", (int)hoursToWaitBeforeNotifyUser);

            var groupName = ToastGroups.CheckMissingMsUpdates;
            var tag       = ToastGroups.CheckMissingMsUpdates;
            var systemUptimeCheckIsDisabled = Profile.IsCheckDisabled(isDisabled, typeof(CheckMissingMsUpdatesCommand));

            bool IsNonCompliant(MissingMsUpdatesInfo info) => info.Updates.Count > 0 && info.Updates.Any(update => (DateTime.Now - update.FirstMeasuredMissing).TotalHours >= policyHoursToWaitBeforeNotifyUser);

            return(await CheckMissingMsUpdatesPure(() => ComplianceInfo.LoadInfo(MissingMsUpdates.LoadMissingMsUpdatesInfo, IsNonCompliant, ScheduledTasks.ComplianceSystemMeasurements, true),
                                                   IsNonCompliant,
                                                   (info) => MissingMsUpdates.ShowMissingUpdatesToastNotification(userProfile, tag, groupName, info),
                                                   () => ToastHelper.RemoveToastNotification(groupName),
                                                   systemUptimeCheckIsDisabled
                                                   ).ConfigureAwait(false));
        }
        public static async Task <Result <ToastNotificationVisibility> > CheckPendingReboot(Some <NotificationProfile> userProfile, bool isDisabled)
        {
            var groupName = ToastGroups.CheckPendingReboot;
            var tag       = ToastGroups.CheckPendingReboot;
            var isPendingRebootCheckDisabled = Profile.IsCheckDisabled(isDisabled, typeof(CheckPendingRebootCommand));

            bool IsNonCompliant(PendingRebootInfo info)
            {
                var newInfo = info.RemoveRebootSources(RebootSource.AllSources.Where(source => source.IsDisabled()));

                return(newInfo.RebootIsPending);
            }

            return(await CheckPendingRebootPure(
                       () => ComplianceInfo.LoadInfo <PendingRebootInfo>(PendingReboot.LoadPendingRebootInfo, IsNonCompliant, ScheduledTasks.ComplianceSystemMeasurements, true),
                       IsNonCompliant,
                       (info, companyName) => PendingReboot.ShowPendingRebootToastNotification(userProfile, info, tag, groupName),
                       () => ToastHelper.RemoveToastNotification(groupName),
                       isPendingRebootCheckDisabled
                       ).ConfigureAwait(false));
        }
Пример #6
0
        /// <summary>
        /// Check disk space compliance.
        /// </summary>
        /// <param name="notificationProfile"></param>
        /// <param name="requiredFreeDiskSpace">Required free disk space in GB.</param>
        /// <param name="subtractSccmCache">When set to true, disk space is compliant if: ((CurrentTotalFreeDiskSpace + CurrentSizeOfSccmCache) - requiredFreeDiskSpace) > 0</param>
        /// <param name="isDisabled"></param>
        /// <returns></returns>
        public static async Task <Result <ToastNotificationVisibility> > CheckDiskSpace(Some <NotificationProfile> notificationProfile, UDecimal requiredFreeDiskSpace, bool subtractSccmCache, bool isDisabled)
        {
            var category = typeof(CheckDiskSpaceCommand).GetPolicyCategory();
            var policyRequiredFreeDiskSpace = Profile.GetIntegerPolicyValue(Context.Machine, category, "RequiredFreeDiskSpace", (int)requiredFreeDiskSpace);
            var policySubtractSccmCache     = Profile.GetBooleanPolicyValue(Context.Machine, category, "SubtractSccmCache", subtractSccmCache);
            var diskSpaceCheckIsDisabled    = Profile.IsCheckDisabled(isDisabled, typeof(CheckDiskSpaceCommand));

            var groupName = ToastGroups.CheckDiskSpace;
            var tag       = ToastGroups.CheckDiskSpace;

            bool IsNonCompliant(DiskSpaceInfo spaceInfo) => RequiredCleanupAmount(spaceInfo, policyRequiredFreeDiskSpace, policySubtractSccmCache) > 0;

            return(await CheckDiskSpaceCommand.CheckDiskSpacePure(
                       policyRequiredFreeDiskSpace,
                       policySubtractSccmCache,
                       () => ComplianceInfo.LoadInfo <DiskSpaceInfo>(DiskSpace.LoadDiskSpaceResult, IsNonCompliant, ScheduledTasks.ComplianceSystemMeasurements, true),
                       IsNonCompliant,
                       (requiredCleanupAmount) => DiskSpace.ShowDiskSpaceToastNotification(notificationProfile, requiredCleanupAmount, tag, groupName),
                       () => ToastHelper.RemoveToastNotification(groupName), diskSpaceCheckIsDisabled)
                   .ConfigureAwait(false));
        }