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);
        }
Пример #2
0
 internal void Save(MailboxSession itemStore)
 {
     UserOofSettings.Validate(itemStore, this);
     this.setByLegacyClient = false;
     this.userChangeTime    = new DateTime?(DateTime.MaxValue);
     UserOofSettingsStorage.SaveUserOofSettings(itemStore, this);
 }
Пример #3
0
        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);
        }
Пример #5
0
 internal static UserOofSettings GetUserOofSettings(MailboxSession itemStore)
 {
     return(UserOofSettingsStorage.LoadUserOofSettings(itemStore));
 }