private bool DlpPolicyMatches(TransportRule rule) { if (!base.Fields.IsModified("DlpPolicy")) { return(true); } Guid immutableId; if (!Guid.TryParse(this.DlpPolicy, out immutableId)) { ADComplianceProgram adcomplianceProgram = DlpUtils.GetInstalledTenantDlpPolicies(base.DataSession, this.DlpPolicy).FirstOrDefault <ADComplianceProgram>(); if (adcomplianceProgram == null) { return(false); } immutableId = adcomplianceProgram.ImmutableId; } Guid guid; if (rule.TryGetDlpPolicyId(out guid)) { return(guid.Equals(immutableId)); } return(string.IsNullOrEmpty(this.DlpPolicy)); }
internal static ArgumentException ValidateDataClassificationParameters(OrganizationId orgId, IEnumerable <Hashtable> classifications) { if (classifications == null || classifications.Count <Hashtable>() == 0) { return(null); } ArgumentException ex = MessageContainsDataClassificationsPredicate.ValidateDataClassificationStaticParameters(classifications); if (ex != null) { return(ex); } HashSet <string> hashSet = new HashSet <string>(); foreach (Hashtable hashtable in classifications) { TargetDataClassification targetDataClassification = MessageContainsDataClassificationsPredicate.HashtableToDataClassification(hashtable); ArgumentException ex2 = MessageContainsDataClassificationsPredicate.ValidateDataClassificationParameter(targetDataClassification, hashtable); if (ex2 != null) { return(ex2); } if (!hashSet.Add(targetDataClassification.Id)) { return(new ArgumentException(RulesTasksStrings.DuplicateDataClassificationSpecified)); } } try { var source = from value in DlpUtils.QueryDataClassification(hashSet, orgId, null, null, null) select new { InvariantName = value.Name, LocalizedName = value.LocalizedName, Identity = value.Identity.ToString(), ClassificationRuleCollectionId = value.ClassificationRuleCollection.Name }; foreach (Hashtable hashtable2 in classifications) { string classificationName = (string)hashtable2["Name".ToUpper()]; var <> f__AnonymousType = source.FirstOrDefault(dataClassification => dataClassification.InvariantName == classificationName || dataClassification.LocalizedName == classificationName || string.Equals(dataClassification.Identity, classificationName, StringComparison.OrdinalIgnoreCase)); if (< > f__AnonymousType == null) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassification(classificationName))); } hashtable2["Name".ToUpper()] = < > f__AnonymousType.Identity; hashtable2[TargetDataClassification.OpaqueDataKey.ToUpper()] = < > f__AnonymousType.ClassificationRuleCollectionId; } } catch (ArgumentException result) { return(result); } return(null); }
private void GetPolicyRules(string target, List <MailFilterListReport> values) { values.AddRange(from rule in DlpUtils.GetTransportRules(base.ConfigSession, (Rule rule) => rule.DlpPolicyId == Guid.Empty) select new MailFilterListReport { Organization = this.Organization.ToString(), SelectionTarget = target, Display = rule.Name, Value = rule.Name }); }
private void SaveDlpPolicy(ADComplianceProgram instance) { bool flag = MessagingPoliciesSyncLogDataSession.IsNameNewOrChangedForTenantScopedObject(instance); this.dataSession.Save(instance); if (flag) { ADComplianceProgram dlpPolicyByName = DlpUtils.GetDlpPolicyByName(this.dataSession, this.policiesCollectionName, instance.Name); Guid value; if (this.GetExternalDirectoryOrganizationIdToLog(dlpPolicyByName, out value)) { TenantSettingSyncLogGenerator.Instance.LogChangesForSave(dlpPolicyByName, new Guid?(value), new Guid?(dlpPolicyByName.ImmutableId), null); } } }
private void GetDlpRules(string target, List <MailFilterListReport> values) { if (Schema.Utilities.HasDlpRole(this)) { values.AddRange(from rule in DlpUtils.GetTransportRules(base.ConfigSession, (Rule rule) => rule.DlpPolicyId != Guid.Empty) select new MailFilterListReport { Organization = this.Organization.ToString(), SelectionTarget = target, Display = rule.Name, Value = rule.Name, ParentTarget = GetMailFilterListReport.SelectionTargets.DlpPolicy.ToString(), ParentValue = rule.DlpPolicy }); } }
private void GetDlpPolicies(string target, List <MailFilterListReport> values) { if (Schema.Utilities.HasDlpRole(this)) { foreach (ADComplianceProgram adcomplianceProgram in DlpUtils.GetInstalledTenantDlpPolicies(base.ConfigSession)) { values.Add(new MailFilterListReport { Organization = base.Organization.ToString(), SelectionTarget = target, Display = adcomplianceProgram.Name, Value = adcomplianceProgram.Name }); } } }
internal void ValidateTransportRule(PropertyInfo property, object task, IConfigDataProvider configSession) { IList <string> list; if (this.TryGetValues <string>(property, task, out list) && list.Count > 0) { if (configSession == null) { throw new NullReferenceException("ValidateTransportRule requires an IConfigDataProvider"); } HashSet <string> installedRules = new HashSet <string>(from rule in DlpUtils.GetTransportRules(configSession, (Rule rule) => true) select rule.Name.ToLower()); if (!list.All((string rule) => installedRules.Contains(rule.ToLower()))) { this.ThrowError(property); } } }
internal void ValidateDlpPolicy(PropertyInfo property, object task, IConfigDataProvider configSession) { IList <string> list; if (!DatacenterRegistry.IsForefrontForOffice() && this.TryGetValues <string>(property, task, out list) && list.Count > 0) { if (configSession == null) { throw new NullReferenceException("ValidateDlpPolicy requires an IConfigDataProvider"); } HashSet <string> installedDlp = new HashSet <string>(from dlp in DlpUtils.GetInstalledTenantDlpPolicies(configSession) select dlp.Name.ToLower()); if (!list.All((string dlp) => installedDlp.Contains(dlp.ToLower()))) { this.ThrowError(property); } } }
protected override void InternalProcessRecord() { try { if (base.DataSession.Read <ADComplianceProgramCollection>(this.DataObject.Id) == null) { base.InternalProcessRecord(); } } catch (ADObjectAlreadyExistsException) { } using (Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(InstallOutOfBoxDlpPolicyCollection.DlpPolicyTemplatesXmlResourceId)) { DlpUtils.DeleteOutOfBoxDlpPolicies(base.DataSession); DlpUtils.SaveOutOfBoxDlpTemplates(base.DataSession, DlpPolicyParser.ParseDlpPolicyTemplates(manifestResourceStream)); } }
private void SaveTransportRule(TransportRule instance) { bool flag = MessagingPoliciesSyncLogDataSession.IsNameNewOrChangedForTenantScopedObject(instance); Guid empty = Guid.Empty; bool flag2 = false; if (instance.OrganizationId != OrganizationId.ForestWideOrgId && instance.IsChanged(TransportRuleSchema.Xml)) { flag2 = true; if (!instance.Guid.Equals(Guid.Empty)) { TransportRule transportRuleByGuid = DlpUtils.GetTransportRuleByGuid(this.dataSession, this.rulesCollectionName, instance.Guid); TransportRule transportRule = (TransportRule)TransportRuleParser.Instance.GetRule(transportRuleByGuid.Xml); transportRule.TryGetDlpPolicyId(out empty); } } this.dataSession.Save(instance); if (flag || flag2) { TransportRule transportRuleByName = DlpUtils.GetTransportRuleByName(this.dataSession, this.rulesCollectionName, instance.Name); Guid empty2 = Guid.Empty; List <KeyValuePair <string, object> > list = null; if (transportRuleByName != null) { TransportRule transportRule2 = (TransportRule)TransportRuleParser.Instance.GetRule(transportRuleByName.Xml); transportRule2.TryGetDlpPolicyId(out empty2); if (!empty2.Equals(empty)) { flag = true; list = new List <KeyValuePair <string, object> >(); list.Add(new KeyValuePair <string, object>("DLPPolicyId", empty2)); } } Guid value; if (flag && this.GetExternalDirectoryOrganizationIdToLog(transportRuleByName, out value)) { TenantSettingSyncLogGenerator.Instance.LogChangesForSave(transportRuleByName, new Guid?(value), new Guid?(transportRuleByName.ImmutableId), list); } } }
internal override string GetPredicateParameters() { bool flag = true; StringBuilder stringBuilder = new StringBuilder(); List <TargetDataClassification> list = MessageContainsDataClassificationsPredicate.HashtablesToDataClassifications(this.DataClassifications).ToList <TargetDataClassification>(); Dictionary <string, string> dictionary = null; if (this.OrganizationId != null) { dictionary = DlpUtils.QueryDataClassification(from value in list select value.Id, this.OrganizationId, null, null, null).ToDictionary((DataClassificationPresentationObject k) => k.Identity.ToString(), (DataClassificationPresentationObject v) => v.Name); } foreach (TargetDataClassification targetDataClassification in list) { if (flag) { flag = false; } else { stringBuilder.Append(", "); } string input = targetDataClassification.Id; if (dictionary != null) { input = dictionary[targetDataClassification.Id]; } stringBuilder.Append(string.Format("@{{'Name'={0}; 'MinCount'={1};{2}'MinConfidence'={3}; 'MaxConfidence'={4}}}", new object[] { Utils.QuoteCmdletParameter(input), targetDataClassification.MinCount, (targetDataClassification.MaxCount > -1) ? string.Format(" 'MaxCount'={0}; ", targetDataClassification.MaxCount) : " ", targetDataClassification.MinConfidence, targetDataClassification.MaxConfidence })); } return(stringBuilder.ToString()); }
internal static IEnumerable <string> HashtablesToStrings(IEnumerable <Hashtable> parameters, OrganizationId orgId) { IEnumerable <TargetDataClassification> source = MessageContainsDataClassificationsPredicate.HashtablesToDataClassifications(parameters); if (orgId == null) { return(from classification in source select classification.ToString()); } string empty = string.Empty; IEnumerable <string> result; try { Dictionary <string, Tuple <string, string> > resolvedClassifications = DlpUtils.QueryDataClassification(from value in source select value.Id, orgId, null, null, null).ToDictionary((DataClassificationPresentationObject k) => k.Identity.ToString(), (DataClassificationPresentationObject v) => new Tuple <string, string>(v.Name, v.LocalizedName)); result = from classificationObject in source select MessageContainsDataClassificationsPredicate.FormatClassificationString(classificationObject, resolvedClassifications); } catch (KeyNotFoundException) { throw new ArgumentException(RulesTasksStrings.InvalidMessageClassification(empty)); } return(result); }