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); }
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); }
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); } }
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); } }