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); }
internal void Save(MailboxSession itemStore) { UserOofSettings.Validate(itemStore, this); this.setByLegacyClient = false; this.userChangeTime = new DateTime?(DateTime.MaxValue); UserOofSettingsStorage.SaveUserOofSettings(itemStore, this); }
internal static ExternalAudience GetUserPolicy(IExchangePrincipal mailboxOwner) { if (mailboxOwner == null) { throw new ArgumentNullException("mailboxOwner"); } ExternalAudience result = ExternalAudience.All; try { result = UserOofSettingsStorage.GetUserPolicy(mailboxOwner); } catch (ADPossibleOperationException arg) { UserOofSettings.Tracer.TraceError <string, ADPossibleOperationException>(0L, "Mailbox:{0}: Exception while getting user policy, exception = {1}.", mailboxOwner.MailboxInfo.DisplayName, arg); } catch (MailStorageNotFoundException arg2) { UserOofSettings.Tracer.TraceError <string, MailStorageNotFoundException>(0L, "Mailbox:{0}: Exception while getting user policy, exception = {1}.", mailboxOwner.MailboxInfo.DisplayName, arg2); } return(result); }
public static UserOofSettings LoadUserOofSettings(MailboxSession itemStore) { UserOofSettings userOofSettings = null; string text = null; string text2 = null; try { text2 = UserOofSettingsStorage.LoadUserOofSettingsByItemId(itemStore); if (string.IsNullOrEmpty(text2)) { text2 = UserOofSettingsStorage.settingsStorageHandler.GetItemContent(itemStore); } } catch (ObjectNotFoundException arg) { UserOofSettingsStorage.Tracer.TraceError <IExchangePrincipal, ObjectNotFoundException>(0L, "Mailbox:{0}: Exception on loading useroofsettings, exception = {1}, re-creating default useroofsettings.", itemStore.MailboxOwner, arg); } catch (VirusException arg2) { UserOofSettingsStorage.Tracer.TraceError <IExchangePrincipal, VirusException>(0L, "Mailbox:{0}: Exception on loading useroofsettings, exception = {1}, re-creating default useroofsettings.", itemStore.MailboxOwner, arg2); text = Strings.descOOFVirusDetectedOofReplyMessage; } if (string.IsNullOrEmpty(text2)) { userOofSettings = UserOofSettingsStorage.CreateDefaultUserOofSettings(itemStore); if (text != null) { userOofSettings.InternalReply.RawMessage = text; } } else { using (StringReader stringReader = new StringReader(text2)) { using (XmlReader xmlReader = XmlReader.Create(stringReader, new XmlReaderSettings { CheckCharacters = false })) { try { UserOofSettingsSerializer userOofSettingsSerializer = (UserOofSettingsSerializer)UserOofSettingsSerializer.Serializer.Deserialize(xmlReader); userOofSettings = userOofSettingsSerializer.Deserialize(); userOofSettings.InternalReply.SetByLegacyClient = userOofSettings.SetByLegacyClient; userOofSettings.ExternalReply.SetByLegacyClient = userOofSettings.SetByLegacyClient; } catch (InvalidOperationException) { UserOofSettingsStorage.Tracer.TraceError <IExchangePrincipal>(0L, "Mailbox:{0}: Cannot read user OOF settings, InvalidOperationException", itemStore.MailboxOwner); userOofSettings = UserOofSettingsStorage.CreateDefaultUserOofSettings(itemStore); } catch (InvalidUserOofSettingsXmlDocument) { userOofSettings = UserOofSettingsStorage.CreateDefaultUserOofSettings(itemStore); } } } UserOofSettingsStorage.Tracer.TraceDebug <IExchangePrincipal>(0L, "Mailbox:{0}: Loaded existing OOF settings", itemStore.MailboxOwner); } if (userOofSettings.OofState == OofState.Scheduled && userOofSettings.EndTime < DateTime.UtcNow) { userOofSettings.OofState = OofState.Disabled; } if (userOofSettings.OofState != OofState.Scheduled) { DateTime utcNow = DateTime.UtcNow; DateTime dateTime = utcNow.AddDays(1.0); Duration duration = new Duration(DateTime.SpecifyKind(new DateTime(utcNow.Year, utcNow.Month, utcNow.Day, utcNow.Hour, 0, 0), DateTimeKind.Utc), DateTime.SpecifyKind(new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, 0, 0), DateTimeKind.Utc)); userOofSettings.Duration = duration; } return(userOofSettings); }
internal static UserOofSettings GetUserOofSettings(MailboxSession itemStore) { return(UserOofSettingsStorage.LoadUserOofSettings(itemStore)); }