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)); }
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)); }
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)); }
/// <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)); }