// Token: 0x06000423 RID: 1059 RVA: 0x0001D818 File Offset: 0x0001BA18
 private bool GetStoreData()
 {
     if (this.configItem == null)
     {
         this.EnsureUserConfigurationIsValid();
     }
     try
     {
         this.storeTagDictionary = MrmFaiFormatter.Deserialize(this.configItem, base.MailboxSession.MailboxOwner, out this.deletedTags, out this.fullCrawlRequired);
         if (this.IsArchiveMailUser)
         {
             foreach (StoreTagData storeTagData in this.storeTagDictionary.Values)
             {
                 bool flag = ElcMailboxHelper.IsArchiveTag(storeTagData, false);
                 if (storeTagData.Tag.Type == ElcFolderType.All && !flag)
                 {
                     foreach (ContentSetting contentSetting in storeTagData.ContentSettings.Values)
                     {
                         if (contentSetting.MessageClass.Equals(ElcMessageClass.AllMailboxContent, StringComparison.CurrentCultureIgnoreCase))
                         {
                             this.defaultAdTag = storeTagData.Tag.RetentionId;
                             break;
                         }
                         if (contentSetting.MessageClass.Equals(ElcMessageClass.VoiceMail, StringComparison.CurrentCultureIgnoreCase))
                         {
                             this.defaultVmAdTag = storeTagData.Tag.RetentionId;
                             break;
                         }
                     }
                 }
             }
             this.defaultContentSettingList = new List <ElcPolicySettings>();
             if (!this.defaultAdTag.Equals(Guid.Empty))
             {
                 foreach (ContentSetting elcContentSetting in this.storeTagDictionary[this.defaultAdTag].ContentSettings.Values)
                 {
                     ElcPolicySettings.ParseContentSettings(this.defaultContentSettingList, elcContentSetting);
                 }
             }
             if (!this.defaultVmAdTag.Equals(Guid.Empty))
             {
                 foreach (ContentSetting elcContentSetting2 in this.storeTagDictionary[this.defaultVmAdTag].ContentSettings.Values)
                 {
                     ElcPolicySettings.ParseContentSettings(this.defaultContentSettingList, elcContentSetting2);
                 }
             }
         }
     }
     catch (ObjectNotFoundException arg)
     {
         ElcUserInformation.Tracer.TraceDebug <ObjectNotFoundException>((long)this.GetHashCode(), "Deserialize of MRM FAI message failed because it could not be found. Exception: {0}", arg);
         return(false);
     }
     return(true);
 }
 // Token: 0x06000366 RID: 870 RVA: 0x00017BCC File Offset: 0x00015DCC
 internal ProvisionedFolder(StoreObjectId folderId, string displayName, string fullFolderPath, string containerClass, bool isProvisionedFolder, ContentSetting[] elcContentSettings, Guid elcFolderGuid, bool inheritedPolicy)
 {
     this.folderId            = folderId;
     this.displayName         = displayName;
     this.fullFolderPath      = fullFolderPath;
     this.containerClass      = containerClass;
     this.isProvisionedFolder = isProvisionedFolder;
     this.elcFolderGuid       = elcFolderGuid;
     this.inheritedPolicy     = inheritedPolicy;
     if (elcContentSettings != null)
     {
         this.elcPolicies = new List <ElcPolicySettings>();
         foreach (ContentSetting elcContentSetting in elcContentSettings)
         {
             ElcPolicySettings.ParseContentSettings(this.elcPolicies, elcContentSetting);
         }
         this.elcPolicies.Sort(delegate(ElcPolicySettings first, ElcPolicySettings second)
         {
             if (first == second)
             {
                 return(0);
             }
             string text = first.MessageClass.TrimEnd(new char[]
             {
                 '*'
             });
             string text2 = second.MessageClass.TrimEnd(new char[]
             {
                 '*'
             });
             if (text.Length > text2.Length)
             {
                 return(-1);
             }
             if (text.Length < text2.Length)
             {
                 return(1);
             }
             if (first.MessageClass.EndsWith("*"))
             {
                 return(1);
             }
             if (second.MessageClass.EndsWith("*"))
             {
                 return(-1);
             }
             return(0);
         });
     }
 }
        // Token: 0x06000419 RID: 1049 RVA: 0x0001D084 File Offset: 0x0001B284
        internal void GetDefaultTagInAD()
        {
            this.defaultAdTag   = Guid.Empty;
            this.defaultVmAdTag = Guid.Empty;
            Guid key  = Guid.Empty;
            Guid key2 = Guid.Empty;

            foreach (AdTagData adTagData in this.tagsInUserPolicy.Values)
            {
                if (adTagData.Tag.Type == ElcFolderType.All)
                {
                    if (ElcMailboxHelper.IsArchiveTag(adTagData, true))
                    {
                        ElcUserInformation.Tracer.TraceDebug <ElcUserTagInformation, string>((long)this.GetHashCode(), "{0}: Default move to archive tag found: {1}", this, adTagData.Tag.Name);
                        this.defaultArchiveAdTag         = adTagData.Tag.RetentionId;
                        this.defaultArchiveTagObjectGuid = adTagData.Tag.Guid;
                        this.archivingEnabled            = true;
                        continue;
                    }
                    if (ElcMailboxHelper.IsArchiveTag(adTagData, false))
                    {
                        continue;
                    }
                    ElcUserInformation.Tracer.TraceDebug <ElcUserTagInformation, string>((long)this.GetHashCode(), "{0}: Default tag found: {1}", this, adTagData.Tag.Name);
                    using (SortedDictionary <Guid, ContentSetting> .ValueCollection.Enumerator enumerator2 = adTagData.ContentSettings.Values.GetEnumerator())
                    {
                        while (enumerator2.MoveNext())
                        {
                            ContentSetting contentSetting = enumerator2.Current;
                            if (contentSetting.MessageClass.Equals(ElcMessageClass.AllMailboxContent, StringComparison.CurrentCultureIgnoreCase))
                            {
                                this.defaultAdTag = adTagData.Tag.RetentionId;
                                key = adTagData.Tag.Guid;
                                this.compactDefaultPolicy = null;
                                break;
                            }
                            if (contentSetting.MessageClass.Equals(ElcMessageClass.VoiceMail, StringComparison.CurrentCultureIgnoreCase))
                            {
                                this.defaultVmAdTag = adTagData.Tag.RetentionId;
                                key2 = adTagData.Tag.Guid;
                                this.compactDefaultPolicy = null;
                                break;
                            }
                        }
                        continue;
                    }
                }
                if (adTagData.Tag.Type != ElcFolderType.RecoverableItems && ElcMailboxHelper.IsArchiveTag(adTagData, true))
                {
                    ElcUserInformation.Tracer.TraceDebug <ElcUserTagInformation, string>((long)this.GetHashCode(), "{0}: Enabled Archive tag found: {1}", this, adTagData.Tag.Name);
                    this.archivingEnabled = true;
                }
            }
            this.defaultContentSettingList = new List <ElcPolicySettings>();
            if (!this.defaultAdTag.Equals(Guid.Empty))
            {
                foreach (ContentSetting elcContentSetting in this.tagsInUserPolicy[key].ContentSettings.Values)
                {
                    ElcPolicySettings.ParseContentSettings(this.defaultContentSettingList, elcContentSetting);
                }
            }
            if (!this.defaultVmAdTag.Equals(Guid.Empty))
            {
                foreach (ContentSetting elcContentSetting2 in this.tagsInUserPolicy[key2].ContentSettings.Values)
                {
                    ElcPolicySettings.ParseContentSettings(this.defaultContentSettingList, elcContentSetting2);
                }
            }
            if (!this.defaultArchiveAdTag.Equals(Guid.Empty))
            {
                this.storeDefaultArchiveTagDictionary = new Dictionary <Guid, StoreTagData>();
                this.storeDefaultArchiveTagDictionary[this.defaultArchiveAdTag] = new StoreTagData(this.tagsInUserPolicy[this.defaultArchiveTagObjectGuid]);
                this.defaultArchiveContentSettingList = new List <ElcPolicySettings>();
                foreach (ContentSetting elcContentSetting3 in this.tagsInUserPolicy[this.defaultArchiveTagObjectGuid].ContentSettings.Values)
                {
                    ElcPolicySettings.ParseContentSettings(this.defaultArchiveContentSettingList, elcContentSetting3);
                }
            }
        }
Exemple #4
0
        // Token: 0x060004E5 RID: 1253 RVA: 0x000252C0 File Offset: 0x000234C0
        internal void LoadStoreTagDataFromStore(MailboxSession mailboxSession)
        {
            this.ResetState();
            StoreId   defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.Inbox);
            Exception ex = null;

            this.underRetentionPolicy       = false;
            this.storeTagDictionary         = null;
            this.folderTagDictionary        = null;
            this.folderArchiveTagDictionary = null;
            this.itemClassToPolicyMapping   = null;
            try
            {
                using (UserConfiguration folderConfiguration = mailboxSession.UserConfigurationManager.GetFolderConfiguration("MRM", UserConfigurationTypes.Stream | UserConfigurationTypes.XML | UserConfigurationTypes.Dictionary, defaultFolderId))
                {
                    this.storeTagDictionary               = MrmFaiFormatter.Deserialize(folderConfiguration, mailboxSession.MailboxOwner);
                    this.haveCheckedForDefault            = false;
                    this.checkedForDefaultForMessageClass = false;
                    this.defaultTag   = null;
                    this.defaultVmTag = null;
                    StoreTagData storeTagData = new StoreTagData();
                    storeTagData.Tag      = new RetentionTag();
                    storeTagData.Tag.Guid = PolicyTagHelper.SystemCleanupTagGuid;
                    this.storeTagDictionary[PolicyTagHelper.SystemCleanupTagGuid] = storeTagData;
                    this.defaultContentSettingList = new List <ElcPolicySettings>();
                    foreach (StoreTagData storeTagData2 in this.storeTagDictionary.Values)
                    {
                        if (storeTagData2.Tag.Type == ElcFolderType.All)
                        {
                            foreach (ContentSetting elcContentSetting in storeTagData2.ContentSettings.Values)
                            {
                                ElcPolicySettings.ParseContentSettings(this.defaultContentSettingList, elcContentSetting);
                            }
                        }
                    }
                    this.folderTypeDictionary       = new Dictionary <StoreObjectId, DefaultFolderType>();
                    this.folderTagDictionary        = new Dictionary <StoreObjectId, Guid>();
                    this.folderArchiveTagDictionary = new Dictionary <StoreObjectId, Guid>();
                    this.itemClassToPolicyMapping   = new Dictionary <string, ContentSetting>();
                    this.underRetentionPolicy       = true;
                    if (this.rootFolderId == null)
                    {
                        StoreObjectId defaultFolderId2 = mailboxSession.GetDefaultFolderId(DefaultFolderType.Root);
                        if (defaultFolderId2 != null)
                        {
                            this.rootFolderId = defaultFolderId2.ProviderLevelItemId;
                        }
                    }
                    if (this.sentItemsId == null)
                    {
                        StoreObjectId defaultFolderId3 = mailboxSession.GetDefaultFolderId(DefaultFolderType.SentItems);
                        if (defaultFolderId3 != null)
                        {
                            this.sentItemsId = defaultFolderId3.ProviderLevelItemId;
                        }
                    }
                    if (this.deletedItemsId == null)
                    {
                        StoreObjectId defaultFolderId4 = mailboxSession.GetDefaultFolderId(DefaultFolderType.DeletedItems);
                        if (defaultFolderId4 != null)
                        {
                            this.deletedItemsId = defaultFolderId4.ProviderLevelItemId;
                        }
                    }
                    this.CacheFolderIdsToSkip(mailboxSession);
                }
            }
            catch (ObjectNotFoundException ex2)
            {
                ex = ex2;
            }
            catch (CorruptDataException ex3)
            {
                ex = ex3;
            }
            catch (StorageTransientException ex4)
            {
                ex = ex4;
            }
            catch (StoragePermanentException ex5)
            {
                ex = ex5;
            }
            if (ex != null)
            {
                UserRetentionPolicyCache.Tracer.TraceDebug <UserRetentionPolicyCache, Exception>((long)this.GetHashCode(), "{0}: Config message with store settings is missing or corrupt. Recreate it. Exception: {1}", this, ex);
                this.underRetentionPolicy       = false;
                this.storeTagDictionary         = null;
                this.folderTagDictionary        = null;
                this.folderArchiveTagDictionary = null;
                this.itemClassToPolicyMapping   = null;
            }
        }