コード例 #1
0
 // Token: 0x060002B6 RID: 694 RVA: 0x000108F8 File Offset: 0x0000EAF8
 private void CompleteReport(TagExpirationExecutor tagExpirationExecutor, RetentionActionType retention)
 {
     if (!tagExpirationExecutor.ELCReport.ContainsKey(retention))
     {
         tagExpirationExecutor.ELCReport.Add(retention, new List <List <object> >());
     }
 }
コード例 #2
0
 /// <summary>
 /// Constructor for retention policy tag.
 /// </summary>
 /// <param name="displayName">Display name.</param>
 /// <param name="retentionId">Retention id.</param>
 /// <param name="retentionPeriod">Retention period.</param>
 /// <param name="type">Retention folder type.</param>
 /// <param name="retentionAction">Retention action.</param>
 /// <param name="isVisible">Is visible.</param>
 /// <param name="optedInto">Opted into.</param>
 /// <param name="isArchive">Is archive tag.</param>
 internal RetentionPolicyTag(
     string displayName,
     Guid retentionId,
     int retentionPeriod,
     ElcFolderType type,
     RetentionActionType retentionAction,
     bool isVisible,
     bool optedInto,
     bool isArchive)
 {
     DisplayName     = displayName;
     RetentionId     = retentionId;
     RetentionPeriod = retentionPeriod;
     Type            = type;
     RetentionAction = retentionAction;
     IsVisible       = isVisible;
     OptedInto       = optedInto;
     IsArchive       = isArchive;
 }
コード例 #3
0
 /// <summary>
 /// Constructor for retention policy tag.
 /// </summary>
 /// <param name="displayName">Display name.</param>
 /// <param name="retentionId">Retention id.</param>
 /// <param name="retentionPeriod">Retention period.</param>
 /// <param name="type">Retention folder type.</param>
 /// <param name="retentionAction">Retention action.</param>
 /// <param name="isVisible">Is visible.</param>
 /// <param name="optedInto">Opted into.</param>
 /// <param name="isArchive">Is archive tag.</param>
 internal RetentionPolicyTag(
     string displayName,
     Guid retentionId,
     int retentionPeriod,
     ElcFolderType type,
     RetentionActionType retentionAction,
     bool isVisible,
     bool optedInto,
     bool isArchive)
 {
     DisplayName = displayName;
     RetentionId = retentionId;
     RetentionPeriod = retentionPeriod;
     Type = type;
     RetentionAction = retentionAction;
     IsVisible = isVisible;
     OptedInto = optedInto;
     IsArchive = isArchive;
 }
コード例 #4
0
		private string GetLocalizedRetentionAction(bool retentionEnabled, RetentionActionType retentionActionType)
		{
			string result = LocalizedDescriptionAttribute.FromEnum(typeof(RetentionActionType), retentionActionType);
			bool flag = retentionActionType == RetentionActionType.MoveToArchive;
			if (retentionActionType == RetentionActionType.DeleteAndAllowRecovery)
			{
				result = OwaOptionStrings.RetentionActionDeleteAndAllowRecovery;
			}
			if (!retentionEnabled)
			{
				if (flag)
				{
					result = OwaOptionStrings.RetentionActionNeverMove;
				}
				else
				{
					result = OwaOptionStrings.RetentionActionNeverDelete;
				}
			}
			return result;
		}
コード例 #5
0
        public static void PopulateRetentionActions(RadioButtonList rblRetentionAction, bool includeArchive)
        {
            RetentionActionType[] array = new RetentionActionType[]
            {
                RetentionActionType.DeleteAndAllowRecovery,
                RetentionActionType.PermanentlyDelete,
                RetentionActionType.MoveToArchive
            };
            foreach (RetentionActionType retentionActionType in array)
            {
                if (RetentionActionType.MoveToArchive != retentionActionType || includeArchive)
                {
                    string value = string.Empty;
                    switch (retentionActionType)
                    {
                    case RetentionActionType.DeleteAndAllowRecovery:
                        value = Strings.RetentionActionEnumDeleteAndAllowRecovery;
                        break;

                    case RetentionActionType.PermanentlyDelete:
                        value = Strings.RetentionActionEnumPermanentlyDelete;
                        break;

                    case RetentionActionType.MoveToArchive:
                        value = Strings.RetentionActionEnumMoveToArchive;
                        break;
                    }
                    string   value2 = retentionActionType.ToString();
                    ListItem item   = new ListItem(RtlUtil.ConvertToDecodedBidiString(value, RtlUtil.IsRtl), value2);
                    rblRetentionAction.Items.Add(item);
                }
            }
            if (rblRetentionAction.Items.Count > 0)
            {
                rblRetentionAction.Items[0].Selected = true;
            }
        }
コード例 #6
0
        internal static PolicyTagList GetPolicyTagListFromMailboxSession(RetentionActionType type, MailboxSession session)
        {
            StoreId defaultFolderId = session.GetDefaultFolderId(DefaultFolderType.Inbox);
            IReadableUserConfiguration readableUserConfiguration = null;

            try
            {
                readableUserConfiguration = session.UserConfigurationManager.GetReadOnlyFolderConfiguration("MRM", UserConfigurationTypes.Stream | UserConfigurationTypes.XML | UserConfigurationTypes.Dictionary, defaultFolderId);
                if (readableUserConfiguration != null)
                {
                    using (Stream xmlStream = readableUserConfiguration.GetXmlStream())
                    {
                        string sessionCultureName = null;
                        if (session.Capabilities.CanHaveCulture)
                        {
                            sessionCultureName = session.PreferedCulture.Name;
                        }
                        return(PolicyTagList.GetPolicyTakListFromXmlStream(type, xmlStream, sessionCultureName));
                    }
                }
            }
            catch (ObjectNotFoundException)
            {
            }
            catch (CorruptDataException)
            {
            }
            finally
            {
                if (readableUserConfiguration != null)
                {
                    readableUserConfiguration.Dispose();
                }
            }
            return(null);
        }
コード例 #7
0
 public static string GetLocalizedRetentionActionType(RetentionActionType retentionActionType)
 {
     return((retentionActionType == RetentionActionType.MoveToArchive) ? Strings.RetentionActionTypeArchive : Strings.RetentionActionTypeDelete);
 }
コード例 #8
0
 // Token: 0x060001C7 RID: 455 RVA: 0x0000C2B4 File Offset: 0x0000A4B4
 protected void AddToReport(RetentionActionType policy, object[] itemProperties, PropertyIndexHolder propertyIndexHolder, Dictionary <Guid, string> allPolicyTags)
 {
     try
     {
         if (this.isReportEnabled)
         {
             object propertyObject  = this.GetPropertyObject(itemProperties[propertyIndexHolder.ConversationTopic]);
             object propertyObject2 = this.GetPropertyObject(itemProperties[propertyIndexHolder.MessageSenderDisplayName]);
             object propertyObject3 = this.GetPropertyObject(itemProperties[propertyIndexHolder.ParentDisplayName]);
             object propertyObject4 = this.GetPropertyObject(itemProperties[propertyIndexHolder.ReceivedTimeIndex]);
             object propertyObject5 = this.GetPropertyObject(itemProperties[propertyIndexHolder.LastModifiedTime]);
             Guid   key             = (itemProperties[propertyIndexHolder.PolicyTagIndex] is PropertyError) ? Guid.Empty : new Guid((byte[])itemProperties[propertyIndexHolder.PolicyTagIndex]);
             Guid   key2            = (itemProperties[propertyIndexHolder.ArchiveTagIndex] is PropertyError) ? Guid.Empty : new Guid((byte[])itemProperties[propertyIndexHolder.ArchiveTagIndex]);
             bool   flag            = (!(itemProperties[propertyIndexHolder.MessageToMe] is PropertyError) && (bool)itemProperties[propertyIndexHolder.MessageToMe]) || (!(itemProperties[propertyIndexHolder.MessageCcMe] is PropertyError) && (bool)itemProperties[propertyIndexHolder.MessageCcMe]);
             object obj             = key.Equals(Guid.Empty) ? Strings.ElcEmailDefaultTag : (allPolicyTags.ContainsKey(key) ? allPolicyTags[key] : Strings.ElcEmailUnknownTag);
             object obj2            = key2.Equals(Guid.Empty) ? Strings.ElcEmailDefaultTag : (allPolicyTags.ContainsKey(key2) ? allPolicyTags[key2] : Strings.ElcEmailUnknownTag);
             object item            = null;
             object item2           = null;
             if (policy.Equals(RetentionActionType.MoveToArchive))
             {
                 item  = obj2;
                 item2 = obj;
             }
             else
             {
                 item  = obj;
                 item2 = obj2;
             }
             if (!this.ELCReport.ContainsKey(policy))
             {
                 this.ELCReport.Add(policy, new List <List <object> >());
             }
             if (this.ELCReport[policy].Count < ElcGlobals.ReportItemLimit)
             {
                 foreach (List <object> list in this.ELCReport[policy])
                 {
                     if (list[0].Equals(itemProperties[propertyIndexHolder.ConversationId]))
                     {
                         if (((ExDateTime)propertyObject4).CompareTo(list[4]) < 0)
                         {
                             list[2] = propertyObject2;
                             list[3] = propertyObject3;
                             list[6] = propertyObject4;
                             list[7] = propertyObject5;
                             list[8] = (int)list[8] + 1;
                         }
                         return;
                     }
                 }
                 List <object> list2 = new List <object>(9);
                 list2.Add(itemProperties[propertyIndexHolder.ConversationId]);
                 list2.Add(propertyObject);
                 list2.Add(propertyObject2);
                 list2.Add(propertyObject3);
                 list2.Add(item);
                 list2.Add(item2);
                 list2.Add(propertyObject4);
                 list2.Add(propertyObject5);
                 list2.Add(1);
                 if (flag)
                 {
                     this.ELCReport[policy].Insert(0, list2);
                     this.separationIndices[policy] = this.separationIndices[policy] + 1;
                 }
                 else
                 {
                     this.ELCReport[policy].Add(list2);
                 }
             }
             else
             {
                 foreach (List <object> list3 in this.ELCReport[policy])
                 {
                     if (list3[0].Equals(itemProperties[propertyIndexHolder.ConversationId]))
                     {
                         if (((ExDateTime)itemProperties[propertyIndexHolder.ReceivedTimeIndex]).CompareTo(list3[6]) < 0)
                         {
                             list3[2] = propertyObject2;
                             list3[3] = propertyObject3;
                             list3[6] = propertyObject4;
                             list3[7] = propertyObject5;
                             list3[8] = (int)list3[8] + 1;
                         }
                         return;
                     }
                 }
                 if (this.separationIndices[policy] < ElcGlobals.ReportItemLimit)
                 {
                     if (flag)
                     {
                         List <object> list4 = new List <object>(9);
                         list4.Add(itemProperties[propertyIndexHolder.ConversationId]);
                         list4.Add(propertyObject);
                         list4.Add(propertyObject2);
                         list4.Add(propertyObject3);
                         list4.Add(item);
                         list4.Add(item2);
                         list4.Add(propertyObject4);
                         list4.Add(propertyObject5);
                         list4.Add(1);
                         this.ELCReport[policy][this.separationIndices[policy]] = list4;
                         this.separationIndices[policy] = this.separationIndices[policy] + 1;
                         this.elcReportOverflow         = true;
                     }
                     else
                     {
                         this.elcReportOverflow = true;
                     }
                 }
                 else
                 {
                     this.elcReportOverflow = true;
                 }
             }
         }
     }
     catch (IndexOutOfRangeException ex)
     {
         this.tracer.TraceError <ExpirationExecutor>((long)this.GetHashCode(), "{0}: Didn't receive a parameter for an item that's being reported: " + ex.Message, this);
         StatisticsLogEntry statisticsLogEntry = this.MailboxData.StatisticsLogEntry;
         statisticsLogEntry.ExceptionType += ex.GetType();
         this.MailboxData.StatisticsLogEntry.AddExceptionToLog(ex);
     }
     finally
     {
         if (this.ELCReport.ContainsKey(policy) && this.ELCReport[policy].Count == 0)
         {
             this.ELCReport.Remove(policy);
         }
     }
 }
コード例 #9
0
        protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            if (!base.Fields.Contains("Mailbox"))
            {
                SharedConfigurationTaskHelper.VerifyIsNotTinyTenant(base.CurrentOrgState, new Task.ErrorLoggerDelegate(base.WriteError));
            }
            if (base.ParameterSetName == "ParameterSetMailboxTask")
            {
                return;
            }
            if (base.Fields.IsModified("LegacyManagedFolder"))
            {
                if (this.LegacyManagedFolder != null)
                {
                    ELCFolder elcfolder = (ELCFolder)base.GetDataObject <ELCFolder>(this.LegacyManagedFolder, base.DataSession, null, new LocalizedString?(Strings.ErrorElcFolderNotFound(this.LegacyManagedFolder.ToString())), new LocalizedString?(Strings.ErrorAmbiguousElcFolderId(this.LegacyManagedFolder.ToString())));
                    this.DataObject.LegacyManagedFolder = elcfolder.Id;
                }
                else
                {
                    this.DataObject.LegacyManagedFolder = null;
                }
            }
            base.InternalValidate();
            if (this.contentSettingsObject.IsChanged(ElcContentSettingsSchema.RetentionAction))
            {
                RetentionActionType[] source = new RetentionActionType[]
                {
                    RetentionActionType.MoveToFolder
                };
                if (source.Any((RetentionActionType x) => x == this.contentSettingsObject.RetentionAction))
                {
                    base.WriteError(new RetentionPolicyTagTaskException(Strings.ErrorRetentionActionNowAllowed), ErrorCategory.InvalidOperation, null);
                }
                if (this.DataObject.Type == ElcFolderType.RecoverableItems && !this.contentSettingsObject.RetentionAction.Equals(RetentionActionType.MoveToArchive))
                {
                    base.WriteError(new ArgumentException(Strings.ErrorDumpsterTagWrongRetentionAction), ErrorCategory.InvalidArgument, this);
                }
                if (this.DataObject.Type != ElcFolderType.All && this.DataObject.Type != ElcFolderType.Personal && this.DataObject.Type != ElcFolderType.RecoverableItems && this.RetentionAction == RetentionActionType.MoveToArchive)
                {
                    base.WriteError(new RetentionPolicyTagTaskException(Strings.ErrorMoveToArchiveAppliedToSystemFolder), ErrorCategory.InvalidArgument, null);
                }
            }
            if (this.contentSettingsObject.IsChanged(ElcContentSettingsSchema.MessageClass) && this.DataObject.Type != ElcFolderType.All && !this.contentSettingsObject.MessageClass.Equals(ElcMessageClass.AllMailboxContent))
            {
                base.WriteError(new RetentionPolicyTagTaskException(Strings.ErrorOnlyDefaultTagAllowCustomizedMessageClass), ErrorCategory.InvalidOperation, this.DataObject);
            }
            string tagName;

            if (this.DataObject.IsChanged(RetentionPolicyTagSchema.RetentionId) && !(base.DataSession as IConfigurationSession).CheckForRetentionTagWithConflictingRetentionId(this.DataObject.RetentionId, this.DataObject.Identity.ToString(), out tagName))
            {
                base.WriteError(new RetentionPolicyTagTaskException(Strings.ErrorRetentionIdConflictsWithRetentionTag(this.DataObject.RetentionId.ToString(), tagName)), ErrorCategory.InvalidOperation, this.DataObject);
            }
            if (this.contentSettingsObject.IsChanged(ElcContentSettingsSchema.RetentionAction) || this.contentSettingsObject.IsChanged(ElcContentSettingsSchema.RetentionEnabled) || this.contentSettingsObject.IsChanged(ElcContentSettingsSchema.MessageClass))
            {
                this.ValidateRetentionPolicy();
            }
            if (base.Fields.IsModified("AddressForJournaling"))
            {
                if (this.AddressForJournaling != null)
                {
                    ADRecipient adrecipient = (ADRecipient)base.GetDataObject <ADRecipient>(this.AddressForJournaling, base.TenantGlobalCatalogSession, null, new LocalizedString?(Strings.ErrorMailboxAddressNotFound(this.AddressForJournaling.ToString())), new LocalizedString?(Strings.ErrorMailboxAddressNotUnique(this.AddressForJournaling.ToString())));
                    if (!this.DataObject.OrganizationId.Equals(OrganizationId.ForestWideOrgId))
                    {
                        RecipientTaskHelper.CheckRecipientInSameOrganizationWithDataObject(this.DataObject, adrecipient, new Task.ErrorLoggerDelegate(base.WriteError));
                    }
                    if (adrecipient.EmailAddresses == null || adrecipient.EmailAddresses.FindPrimary(ProxyAddressPrefix.Smtp) == null)
                    {
                        base.WriteError(new ArgumentException(Strings.SmtpAddressMissingForAutocopy(this.AddressForJournaling.ToString()), "AddressForJournaling"), ErrorCategory.InvalidData, this);
                    }
                    this.contentSettingsObject.AddressForJournaling = adrecipient.Id;
                }
                else
                {
                    this.contentSettingsObject.AddressForJournaling = null;
                }
            }
            ValidationError[] array = this.contentSettingsObject.Validate();
            if (array.Length > 0)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    this.WriteError(new DataValidationException(array[i]), (ErrorCategory)1003, this.contentSettingsObject.Identity, array.Length - 1 == i);
                }
            }
            if (base.HasErrors)
            {
                return;
            }
            TaskLogger.LogExit();
        }
コード例 #10
0
        internal static PolicyTagList GetPolicyTakListFromXmlStream(RetentionActionType type, Stream xmlStream, string sessionCultureName)
        {
            PolicyTagList policyTagList = new PolicyTagList();

            if (xmlStream.Length == 0L)
            {
                return(policyTagList);
            }
            using (XmlTextReader xmlTextReader = SafeXmlFactory.CreateSafeXmlTextReader(xmlStream))
            {
                try
                {
                    xmlTextReader.MoveToContent();
                    while ((xmlTextReader.NodeType != XmlNodeType.Element || (string.CompareOrdinal(xmlTextReader.Name, "PolicyTag") != 0 && string.CompareOrdinal(xmlTextReader.Name, "ArchiveTag") != 0 && string.CompareOrdinal(xmlTextReader.Name, "DefaultArchiveTag") != 0)) && xmlTextReader.Read())
                    {
                    }
                    for (;;)
                    {
                        bool flag  = string.CompareOrdinal(xmlTextReader.Name, "PolicyTag") == 0;
                        bool flag2 = string.CompareOrdinal(xmlTextReader.Name, "ArchiveTag") == 0 || string.CompareOrdinal(xmlTextReader.Name, "DefaultArchiveTag") == 0;
                        if (!flag && !flag2)
                        {
                            break;
                        }
                        PolicyTag policyTag = new PolicyTag();
                        policyTag.IsArchive = flag2;
                        if (xmlTextReader.MoveToAttribute("Guid"))
                        {
                            policyTag.PolicyGuid = new Guid(xmlTextReader.Value);
                        }
                        if (xmlTextReader.MoveToAttribute("Name"))
                        {
                            policyTag.Name = xmlTextReader.Value;
                        }
                        if (xmlTextReader.MoveToAttribute("Comment"))
                        {
                            policyTag.Description = xmlTextReader.Value;
                        }
                        if (xmlTextReader.MoveToAttribute("Type"))
                        {
                            string value;
                            switch (value = xmlTextReader.Value)
                            {
                            case "Calendar":
                                policyTag.Type = ElcFolderType.Calendar;
                                goto IL_341;

                            case "Contacts":
                                policyTag.Type = ElcFolderType.Contacts;
                                goto IL_341;

                            case "DeletedItems":
                                policyTag.Type = ElcFolderType.DeletedItems;
                                goto IL_341;

                            case "Drafts":
                                policyTag.Type = ElcFolderType.Drafts;
                                goto IL_341;

                            case "Inbox":
                                policyTag.Type = ElcFolderType.Inbox;
                                goto IL_341;

                            case "JunkEmail":
                                policyTag.Type = ElcFolderType.JunkEmail;
                                goto IL_341;

                            case "Journal":
                                policyTag.Type = ElcFolderType.Journal;
                                goto IL_341;

                            case "Notes":
                                policyTag.Type = ElcFolderType.Notes;
                                goto IL_341;

                            case "Outbox":
                                policyTag.Type = ElcFolderType.Outbox;
                                goto IL_341;

                            case "SentItems":
                                policyTag.Type = ElcFolderType.SentItems;
                                goto IL_341;

                            case "Tasks":
                                policyTag.Type = ElcFolderType.Tasks;
                                goto IL_341;

                            case "All":
                                policyTag.Type = ElcFolderType.All;
                                goto IL_341;

                            case "ManagedCustomFolder":
                                policyTag.Type = ElcFolderType.ManagedCustomFolder;
                                goto IL_341;

                            case "RssSubscriptions":
                                policyTag.Type = ElcFolderType.RssSubscriptions;
                                goto IL_341;

                            case "SyncIssues":
                                policyTag.Type = ElcFolderType.SyncIssues;
                                goto IL_341;

                            case "ConversationHistory":
                                policyTag.Type = ElcFolderType.ConversationHistory;
                                goto IL_341;
                            }
                            policyTag.Type = ElcFolderType.Personal;
                        }
IL_341:
                        if (xmlTextReader.MoveToAttribute("IsVisible"))
                        {
                            policyTag.IsVisible = bool.Parse(xmlTextReader.Value);
                        }
                        if (xmlTextReader.MoveToAttribute("OptedInto"))
                        {
                            policyTag.OptedInto = bool.Parse(xmlTextReader.Value);
                        }
                        while (string.CompareOrdinal(xmlTextReader.Name, "ContentSettings") != 0 && string.CompareOrdinal(xmlTextReader.Name, "PolicyTag") != 0 && string.CompareOrdinal(xmlTextReader.Name, "ArchiveTag") != 0)
                        {
                            if (string.CompareOrdinal(xmlTextReader.Name, "DefaultArchiveTag") == 0)
                            {
                                break;
                            }
                            if (!xmlTextReader.Read())
                            {
                                break;
                            }
                            if (!string.IsNullOrEmpty(sessionCultureName))
                            {
                                if (string.CompareOrdinal(xmlTextReader.Name, "LocalizedName") == 0)
                                {
                                    xmlTextReader.Read();
                                    bool flag3 = false;
                                    while (string.CompareOrdinal(xmlTextReader.Name, "LocalizedName") != 0)
                                    {
                                        if (!flag3 && !string.IsNullOrEmpty(xmlTextReader.Value))
                                        {
                                            string stringFromLocalizedStringPair = PolicyTagList.GetStringFromLocalizedStringPair(sessionCultureName, xmlTextReader.Value);
                                            if (stringFromLocalizedStringPair != null)
                                            {
                                                policyTag.Name = stringFromLocalizedStringPair;
                                                flag3          = true;
                                            }
                                        }
                                        if (!xmlTextReader.Read())
                                        {
                                            break;
                                        }
                                    }
                                }
                                if (string.CompareOrdinal(xmlTextReader.Name, "LocalizedComment") == 0)
                                {
                                    xmlTextReader.Read();
                                    bool flag4 = false;
                                    while (string.CompareOrdinal(xmlTextReader.Name, "LocalizedComment") != 0)
                                    {
                                        if (!flag4 && !string.IsNullOrEmpty(xmlTextReader.Value))
                                        {
                                            string stringFromLocalizedStringPair2 = PolicyTagList.GetStringFromLocalizedStringPair(sessionCultureName, xmlTextReader.Value);
                                            if (stringFromLocalizedStringPair2 != null)
                                            {
                                                policyTag.Description = stringFromLocalizedStringPair2;
                                                flag4 = true;
                                            }
                                        }
                                        if (!xmlTextReader.Read())
                                        {
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                        while (string.CompareOrdinal(xmlTextReader.Name, "ContentSettings") == 0)
                        {
                            if (xmlTextReader.MoveToAttribute("ExpiryAgeLimit"))
                            {
                                policyTag.TimeSpanForRetention = EnhancedTimeSpan.FromDays(double.Parse(xmlTextReader.Value));
                            }
                            if (xmlTextReader.MoveToAttribute("RetentionAction"))
                            {
                                policyTag.RetentionAction = (RetentionActionType)Enum.Parse(typeof(RetentionActionType), xmlTextReader.Value, true);
                            }
                            xmlTextReader.Read();
                        }
                        if (type == (RetentionActionType)0 || (type == RetentionActionType.MoveToArchive && flag2) || (type != (RetentionActionType)0 && type != RetentionActionType.MoveToArchive && flag))
                        {
                            policyTagList[policyTag.PolicyGuid] = policyTag;
                        }
                        if ((string.CompareOrdinal(xmlTextReader.Name, "PolicyTag") == 0 || string.CompareOrdinal(xmlTextReader.Name, "ArchiveTag") == 0 || string.CompareOrdinal(xmlTextReader.Name, "DefaultArchiveTag") == 0) && xmlTextReader.NodeType == XmlNodeType.EndElement)
                        {
                            xmlTextReader.Read();
                        }
                    }
                }
                catch (XmlException ex)
                {
                }
                catch (ArgumentException ex2)
                {
                }
                catch (FormatException ex3)
                {
                }
            }
            return(policyTagList);
        }
コード例 #11
0
        private ElcContentSettings[] GetUpgradedConentSettings(ElcContentSettings[] folderContentSettings, bool defaultTag)
        {
            List <ElcContentSettings> upgradedSettings = new List <ElcContentSettings>();

            ElcContentSettings[] array = (from x in folderContentSettings
                                          where x.RetentionEnabled || x.JournalingEnabled
                                          select x).ToArray <ElcContentSettings>();
            folderContentSettings.Except(array).ForEach(delegate(ElcContentSettings x)
            {
                this.WriteWarning(Strings.CouldNotUpgradeDisabledContentSettings(x.Name));
            });
            RetentionActionType[] allowedRetentionActions = new RetentionActionType[]
            {
                RetentionActionType.PermanentlyDelete,
                RetentionActionType.DeleteAndAllowRecovery,
                RetentionActionType.MoveToDeletedItems
            };
            if (!defaultTag)
            {
                ElcContentSettings elcContentSettings = new ElcContentSettings();
                elcContentSettings.JournalingEnabled = false;
                elcContentSettings.RetentionEnabled  = false;
                elcContentSettings.RetentionAction   = RetentionActionType.PermanentlyDelete;
                ElcContentSettings[] array2 = (from x in array
                                               where x.RetentionEnabled
                                               select x).ToArray <ElcContentSettings>();
                ElcContentSettings[] array3 = (from x in array2
                                               where allowedRetentionActions.Any((RetentionActionType y) => x.RetentionAction == y)
                                               select x).ToArray <ElcContentSettings>();
                array2.Except(array3).ForEach(delegate(ElcContentSettings x)
                {
                    this.WriteWarning(Strings.CouldNotUpgradeSpecificContentSetting(x.Name));
                });
                ElcContentSettings[] array4 = (from x in array3
                                               where x.TriggerForRetention == RetentionDateType.WhenDelivered
                                               select x).ToArray <ElcContentSettings>();
                array3.Except(array4).ForEach(delegate(ElcContentSettings x)
                {
                    this.WriteWarning(Strings.CouldNotUpgradeRetentionTrigger(x.TriggerForRetention.ToString(), x.Name, RetentionDateType.WhenDelivered.ToString()));
                });
                array4.Aggregate(elcContentSettings, delegate(ElcContentSettings a, ElcContentSettings x)
                {
                    if (a.AgeLimitForRetention == null)
                    {
                        a.AgeLimitForRetention = x.AgeLimitForRetention;
                    }
                    else if (x.AgeLimitForRetention != null && a.AgeLimitForRetention < x.AgeLimitForRetention)
                    {
                        a.AgeLimitForRetention = x.AgeLimitForRetention;
                    }
                    if (Array.FindIndex <RetentionActionType>(allowedRetentionActions, (RetentionActionType y) => y == a.RetentionAction) < Array.FindIndex <RetentionActionType>(allowedRetentionActions, (RetentionActionType y) => y == x.RetentionAction))
                    {
                        a.RetentionAction = x.RetentionAction;
                    }
                    a.RetentionEnabled = true;
                    return(a);
                });
                if (elcContentSettings.RetentionEnabled)
                {
                    elcContentSettings.TriggerForRetention = RetentionDateType.WhenDelivered;
                    elcContentSettings.MessageClass        = ElcMessageClass.AllMailboxContent;
                    (from x in array4
                     where string.Compare(x.MessageClass, ElcMessageClass.AllMailboxContent, StringComparison.OrdinalIgnoreCase) != 0
                     select x).ForEach(delegate(ElcContentSettings x)
                    {
                        this.WriteWarning(Strings.ChangedMessageClass(x.Name, x.MessageClass));
                    });
                }
                ElcContentSettings[] array5 = (from x in array
                                               where x.JournalingEnabled
                                               select x).ToArray <ElcContentSettings>();
                if (array5.Length > 0)
                {
                    elcContentSettings.JournalingEnabled          = true;
                    elcContentSettings.MessageFormatForJournaling = array5[0].MessageFormatForJournaling;
                    elcContentSettings.AddressForJournaling       = array5[0].AddressForJournaling;
                    elcContentSettings.LabelForJournaling         = array5[0].LabelForJournaling;
                    array5.Skip(1).ForEach(delegate(ElcContentSettings x)
                    {
                        this.WriteWarning(Strings.CouldNotUpgradeJournaling(x.Name));
                    });
                }
                if (elcContentSettings.RetentionEnabled || elcContentSettings.JournalingEnabled)
                {
                    upgradedSettings.Add(elcContentSettings);
                }
            }
            else
            {
                array.ForEach(delegate(ElcContentSettings x)
                {
                    ElcContentSettings elcContentSettings2 = new ElcContentSettings();
                    if (x.RetentionEnabled)
                    {
                        if (allowedRetentionActions.Any((RetentionActionType y) => x.RetentionAction == y))
                        {
                            if (x.TriggerForRetention != RetentionDateType.WhenDelivered)
                            {
                                this.WriteWarning(Strings.CouldNotUpgradeRetentionTrigger(x.TriggerForRetention.ToString(), x.Name, RetentionDateType.WhenDelivered.ToString()));
                            }
                            else
                            {
                                elcContentSettings2.RetentionAction      = x.RetentionAction;
                                elcContentSettings2.AgeLimitForRetention = x.AgeLimitForRetention;
                                elcContentSettings2.TriggerForRetention  = RetentionDateType.WhenDelivered;
                                elcContentSettings2.RetentionEnabled     = x.RetentionEnabled;
                                if (x.MessageClass.Equals(ElcMessageClass.AllMailboxContent, StringComparison.OrdinalIgnoreCase) || x.MessageClass.Equals(ElcMessageClass.VoiceMail, StringComparison.OrdinalIgnoreCase))
                                {
                                    elcContentSettings2.MessageClass = x.MessageClass;
                                }
                                else
                                {
                                    elcContentSettings2.MessageClass = ElcMessageClass.AllMailboxContent;
                                    this.WriteWarning(Strings.ChangedMessageClass(x.Name, x.MessageClass));
                                }
                            }
                        }
                        else
                        {
                            this.WriteWarning(Strings.CouldNotUpgradeSpecificContentSetting(x.Name));
                        }
                    }
                    if (x.JournalingEnabled)
                    {
                        elcContentSettings2.MessageFormatForJournaling = x.MessageFormatForJournaling;
                        elcContentSettings2.JournalingEnabled          = x.JournalingEnabled;
                        elcContentSettings2.AddressForJournaling       = x.AddressForJournaling;
                        elcContentSettings2.LabelForJournaling         = x.LabelForJournaling;
                        if (x.MessageClass.Equals(ElcMessageClass.AllMailboxContent, StringComparison.OrdinalIgnoreCase) || x.MessageClass.Equals(ElcMessageClass.VoiceMail, StringComparison.OrdinalIgnoreCase))
                        {
                            elcContentSettings2.MessageClass = x.MessageClass;
                        }
                        else
                        {
                            elcContentSettings2.MessageClass = ElcMessageClass.AllMailboxContent;
                            this.WriteWarning(Strings.ChangedMessageClass(x.Name, x.MessageClass));
                        }
                    }
                    if (elcContentSettings2.RetentionEnabled || elcContentSettings2.JournalingEnabled)
                    {
                        upgradedSettings.Add(elcContentSettings2);
                    }
                });
            }
            return(upgradedSettings.ToArray());
        }
コード例 #12
0
        // Token: 0x0600037E RID: 894 RVA: 0x00018700 File Offset: 0x00016900
        private void AddToPolicyTagCollection(MailboxDataForFolders mailboxData, Dictionary <Guid, string> allPolicyTagsRet, RetentionActionType retention)
        {
            Dictionary <Guid, PolicyTag> policyTagList = mailboxData.MailboxSession.GetPolicyTagList(retention);

            if (policyTagList != null)
            {
                foreach (KeyValuePair <Guid, PolicyTag> keyValuePair in policyTagList)
                {
                    if (!allPolicyTagsRet.ContainsKey(keyValuePair.Key))
                    {
                        allPolicyTagsRet.Add(keyValuePair.Key, keyValuePair.Value.Name);
                    }
                }
                policyTagList.Clear();
            }
        }