private static UserOofSettings CreateDefaultUserOofSettings(MailboxSession itemStore) { UserOofSettings userOofSettings = UserOofSettings.CreateDefault(); userOofSettings.ExternalAudience = ExternalAudience.All; if (OofStateHandler.Get(itemStore)) { userOofSettings.OofState = OofState.Enabled; } else { userOofSettings.OofState = OofState.Disabled; } UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: Created default OOF settings, saving to mailbox", itemStore.MailboxOwner); UserOofSettingsStorage.TracerPfd.TracePfd <int, IExchangePrincipal>(0L, "PFD IWO {0} Mailbox:{1}: Created default OOF settings, saving to mailbox", 17559, itemStore.MailboxOwner); try { UserOofSettingsStorage.SaveUserOofSettings(itemStore, userOofSettings); } catch (VirusException arg) { UserOofSettingsStorage.settingsStorageHandler.Delete(itemStore); UserOofSettingsStorage.Tracer.TraceError <IExchangePrincipal, VirusException>(0L, "Mailbox:{0}: Exception on create default useroofsettings, exception = {1}, re-creating default useroofsettings.", itemStore.MailboxOwner, arg); userOofSettings.InternalReply.RawMessage = Strings.descOOFVirusDetectedOofReplyMessage; userOofSettings.ExternalReply.RawMessage = null; userOofSettings.OofState = OofState.Disabled; UserOofSettingsStorage.SaveUserOofSettings(itemStore, userOofSettings); } return(userOofSettings); }
public static void SaveUserOofSettings(MailboxSession itemStore, UserOofSettings userOofSettings) { UserOofSettingsSerializer o = UserOofSettingsSerializer.Serialize(userOofSettings); using (StringWriter stringWriter = new StringWriter()) { using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, new XmlWriterSettings { CheckCharacters = false })) { UserOofSettingsSerializer.Serializer.Serialize(xmlWriter, o); string body = stringWriter.ToString(); VersionedId versionedId = UserOofSettingsStorage.settingsStorageHandler.SetItemContent(itemStore, body); itemStore.Mailbox[MailboxSchema.UserOofSettingsItemId] = versionedId.ObjectId.ProviderLevelItemId; } } UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: Adding OOF rules", itemStore.MailboxOwner); using (RuleGenerator ruleGenerator = new RuleGenerator(itemStore, userOofSettings)) { ruleGenerator.OnUserOofSettingsChanges(); } UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: OOF rules added, setting OOF mailbox table properties.", itemStore.MailboxOwner); OofStateHandler.Set(itemStore, userOofSettings.OofState == OofState.Enabled, (userOofSettings.UserChangeTime != null) ? userOofSettings.UserChangeTime.Value : DateTime.UtcNow); itemStore.Mailbox[MailboxSchema.OofScheduleStart] = ((userOofSettings.OofState == OofState.Scheduled) ? ((ExDateTime)userOofSettings.StartTime) : UserOofSettingsStorage.Date1601Utc); itemStore.Mailbox[MailboxSchema.OofScheduleEnd] = ((userOofSettings.OofState == OofState.Scheduled) ? ((ExDateTime)userOofSettings.EndTime) : UserOofSettingsStorage.Date1601Utc); itemStore.Mailbox.Save(); itemStore.Mailbox.Load(); }
internal bool GlobalOofEnabled(MailboxSession itemStore) { return(OofStateHandler.Get(itemStore)); }