Ejemplo n.º 1
0
 // Token: 0x060002D1 RID: 721 RVA: 0x00011000 File Offset: 0x0000F200
 internal bool IsPolicyValid(ProvisionedFolder provisionedFolder, ContentSetting policy, string itemClass, MailboxDataForFolders mailboxData)
 {
     if (!ElcPolicySettings.ArePolicyPropertiesValid(policy, TraceContext.Get(), this.mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString()))
     {
         return(false);
     }
     FolderProcessor.CircularPolicyType circularPolicyType = this.LookForCircularPolicies(provisionedFolder, policy, itemClass, mailboxData);
     if (circularPolicyType == FolderProcessor.CircularPolicyType.BadCycle)
     {
         throw new SkipException(Strings.descCycleInPolicies(this.mailboxSession.MailboxOwner.MailboxInfo.PrimarySmtpAddress.ToString(), policy.Name));
     }
     return(true);
 }
Ejemplo n.º 2
0
        // Token: 0x060002D8 RID: 728 RVA: 0x00011C28 File Offset: 0x0000FE28
        private FolderProcessor.CircularPolicyType LookForCircularPolicies(ProvisionedFolder provisionedFolder, ContentSetting policy, string itemClass, MailboxDataForFolders mailboxData)
        {
            if (provisionedFolder.ValidatedPolicies.Contains(itemClass))
            {
                return(FolderProcessor.CircularPolicyType.NoCycle);
            }
            List <FolderProcessor.FolderPolicy> list = new List <FolderProcessor.FolderPolicy>();

            list.Add(new FolderProcessor.FolderPolicy(provisionedFolder, policy));
            while (policy.RetentionAction == RetentionActionType.MoveToFolder || policy.RetentionAction == RetentionActionType.MoveToDeletedItems)
            {
                ProvisionedFolder destinationFolder = this.GetDestinationFolder(policy, mailboxData);
                if (destinationFolder == null)
                {
                    FolderProcessor.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "{0}: The destination folder of Policy '{1}' is not in the list of provisioned folders. Quit.", TraceContext.Get(), policy.Name);
                }
                else
                {
                    FolderProcessor.CircularPolicyType circularPolicyType = this.CheckDestinationFolder(list, destinationFolder, policy);
                    if (circularPolicyType != FolderProcessor.CircularPolicyType.NoCycle)
                    {
                        return(circularPolicyType);
                    }
                    ContentSetting destinationPolicy = this.GetDestinationPolicy(destinationFolder, itemClass);
                    if (destinationPolicy != null)
                    {
                        list.Add(new FolderProcessor.FolderPolicy(destinationFolder, destinationPolicy));
                        policy = destinationPolicy;
                        continue;
                    }
                    FolderProcessor.Tracer.TraceDebug <object, string, string>((long)this.GetHashCode(), "{0}: The destination folder '{1}' of Policy '{2}' does not have a valid policy on it. Quit.", TraceContext.Get(), destinationFolder.FullFolderPath, policy.Name);
                }
IL_E8:
                provisionedFolder.ValidatedPolicies.Add(itemClass);
                return(FolderProcessor.CircularPolicyType.NoCycle);
            }
            FolderProcessor.Tracer.TraceDebug <object, string>((long)this.GetHashCode(), "{0}: The Policy '{1}' is not a MoveTo policy. Quit", TraceContext.Get(), policy.Name);
            goto IL_E8;
        }