private IEnumerable <TransportRuleCollection> FindTransportRuleCollections(QueryFilter filter, ObjectId rootId, bool deepSearch, SortBy sortBy, int pageSize = 2147483647)
        {
            object obj;
            Guid   objectGuid;
            IEnumerable <TransportRuleCollection> enumerable;

            if (DalHelper.TryFindPropertyValueByName(filter, ADObjectSchema.Name.Name, out obj) && obj is string && FfoConfigurationSession.builtInTransportRuleContainers.TryGetValue((string)obj, out objectGuid))
            {
                TransportRuleCollection transportRuleCollection = new TransportRuleCollection
                {
                    Name = (string)obj
                };
                FfoDirectorySession.FixDistinguishedName(transportRuleCollection, base.TenantId.DistinguishedName, base.TenantId.ObjectGuid, objectGuid, null);
                enumerable = new TransportRuleCollection[]
                {
                    transportRuleCollection
                };
            }
            else
            {
                enumerable = base.FindAndHandleException <TransportRuleCollection>(filter, rootId, deepSearch, sortBy, pageSize);
                foreach (TransportRuleCollection transportRuleCollection2 in enumerable)
                {
                    FfoDirectorySession.FixDistinguishedName(transportRuleCollection2, base.TenantId.DistinguishedName, base.TenantId.ObjectGuid, ((ADObjectId)transportRuleCollection2.Identity).ObjectGuid, null);
                }
            }
            return(enumerable);
        }
Exemple #2
0
 internal static Exception TryParseE14Format(Stream contentStream, out TransportRuleCollection rules)
 {
     try
     {
         contentStream.Position = 0L;
         rules = (TransportRuleCollection)TransportRuleParser.Instance.LoadStream(contentStream);
     }
     catch (ParserException result)
     {
         rules = null;
         return(result);
     }
     return(null);
 }
        private ADObjectId GetSupervisionTransportRuleCollectionId()
        {
            QueryFilter filter = new TextFilter(ADObjectSchema.Name, "TransportVersioned", MatchOptions.FullString, MatchFlags.Default);
            IEnumerable <TransportRuleCollection> enumerable = base.DataSession.FindPaged <TransportRuleCollection>(filter, null, true, null, 2);
            TransportRuleCollection transportRuleCollection  = null;

            if (enumerable != null)
            {
                foreach (TransportRuleCollection transportRuleCollection2 in enumerable)
                {
                    if (transportRuleCollection != null)
                    {
                        base.WriteError(new ManagementObjectAmbiguousException(Strings.SupervisionPolicyCollectionAmbiguous), (ErrorCategory)1003, null);
                    }
                    transportRuleCollection = transportRuleCollection2;
                }
            }
            if (transportRuleCollection == null)
            {
                base.WriteError(new RuleCollectionNotInAdException("TransportVersioned"), (ErrorCategory)1003, this.Identity);
            }
            return(transportRuleCollection.Id);
        }
Exemple #4
0
        protected override void InternalProcessRecord()
        {
            if (!base.ShouldContinue(Strings.PromptToOverwriteRulesOnImport))
            {
                return;
            }
            ADJournalRuleStorageManager adjournalRuleStorageManager;

            try
            {
                adjournalRuleStorageManager = new ADJournalRuleStorageManager("JournalingVersioned", base.DataSession);
            }
            catch (RuleCollectionNotInAdException exception)
            {
                base.WriteError(exception, ErrorCategory.InvalidOperation, null);
                return;
            }
            TransportRuleCollection transportRuleCollection = null;

            using (Stream stream = new MemoryStream(this.FileData))
            {
                try
                {
                    transportRuleCollection = (TransportRuleCollection)JournalingRuleParser.Instance.LoadStream(stream);
                }
                catch (ParserException exception2)
                {
                    base.WriteError(exception2, ErrorCategory.InvalidData, "FileData");
                    return;
                }
            }
            JournalRuleObject journalRuleObject = new JournalRuleObject();

            foreach (Microsoft.Exchange.MessagingPolicies.Rules.Rule rule in transportRuleCollection)
            {
                JournalingRule journalingRule = (JournalingRule)rule;
                try
                {
                    journalRuleObject.Deserialize(journalingRule);
                }
                catch (RecipientInvalidException exception3)
                {
                    base.WriteError(exception3, ErrorCategory.InvalidArgument, journalRuleObject.JournalEmailAddress);
                    return;
                }
                catch (JournalRuleCorruptException exception4)
                {
                    base.WriteError(exception4, ErrorCategory.InvalidArgument, journalingRule.Name);
                }
                if (journalingRule.IsTooAdvancedToParse)
                {
                    base.WriteError(new InvalidOperationException(Strings.CannotCreateRuleDueToVersion(journalingRule.Name)), ErrorCategory.InvalidOperation, null);
                    return;
                }
            }
            try
            {
                adjournalRuleStorageManager.ReplaceRules(transportRuleCollection, this.ResolveCurrentOrganization());
            }
            catch (DataValidationException exception5)
            {
                base.WriteError(exception5, ErrorCategory.InvalidArgument, null);
            }
        }
Exemple #5
0
        private void ProcessE14Format(TransportRuleCollection rules)
        {
            ADRuleStorageManager adruleStorageManager;

            try
            {
                IConfigDataProvider session = new MessagingPoliciesSyncLogDataSession(base.DataSession, null, null);
                adruleStorageManager = new ADRuleStorageManager(this.ruleCollectionName, session);
            }
            catch (RuleCollectionNotInAdException exception)
            {
                base.WriteError(exception, ErrorCategory.InvalidOperation, null);
                return;
            }
            Exception ex = null;

            try
            {
                if (!Utils.IsEdgeRoleInstalled())
                {
                    Version v     = null;
                    bool    flag  = false;
                    bool    flag2 = false;
                    foreach (Rule rule in rules)
                    {
                        TransportRule transportRule = (TransportRule)rule;
                        if (transportRule.IsTooAdvancedToParse)
                        {
                            base.WriteError(new InvalidOperationException(Strings.CannotCreateRuleDueToVersion(transportRule.Name)), ErrorCategory.InvalidOperation, null);
                            return;
                        }
                        Version minimumVersion = transportRule.MinimumVersion;
                        if (v == null || v < minimumVersion)
                        {
                            v = minimumVersion;
                        }
                        if (!flag || !flag2)
                        {
                            foreach (Action action in transportRule.Actions)
                            {
                                if (string.Equals(action.Name, "ApplyDisclaimer") || string.Equals(action.Name, "ApplyDisclaimerWithSeparator") || string.Equals(action.Name, "ApplyDisclaimerWithSeparatorAndReadingOrder"))
                                {
                                    flag = true;
                                }
                                if (string.Equals(action.Name, "LogEvent"))
                                {
                                    flag2 = true;
                                }
                            }
                        }
                    }
                    if (flag && !this.Force && !base.ShouldContinue(Strings.PromptToUpgradeRulesFormat))
                    {
                        return;
                    }
                    if (flag2 && !this.Force && !base.ShouldContinue(Strings.PromptToRemoveLogEventAction))
                    {
                        return;
                    }
                }
                try
                {
                    adruleStorageManager.ReplaceRules(rules, this.ResolveCurrentOrganization());
                }
                catch (DataValidationException exception2)
                {
                    base.WriteError(exception2, ErrorCategory.InvalidArgument, null);
                    return;
                }
            }
            catch (ArgumentOutOfRangeException ex2)
            {
                ex = ex2;
            }
            catch (ArgumentException ex3)
            {
                ex = ex3;
            }
            catch (PathTooLongException ex4)
            {
                ex = ex4;
            }
            catch (DirectoryNotFoundException ex5)
            {
                ex = ex5;
            }
            catch (UnauthorizedAccessException ex6)
            {
                ex = ex6;
            }
            catch (FileNotFoundException ex7)
            {
                ex = ex7;
            }
            catch (IOException ex8)
            {
                ex = ex8;
            }
            catch (NotSupportedException ex9)
            {
                ex = ex9;
            }
            if (ex != null)
            {
                base.WriteError(ex, ErrorCategory.InvalidOperation, null);
            }
        }