internal static ArgumentException ValidateDataClassificationStaticParameters(IEnumerable <Hashtable> classifications) { if (classifications == null || classifications.Count <Hashtable>() == 0) { return(new ArgumentException(RulesTasksStrings.MissingDataClassificationsParameter)); } HashSet <string> hashSet = new HashSet <string>(); foreach (Hashtable hashtable in classifications) { TargetDataClassification targetDataClassification = MessageContainsDataClassificationsPredicate.HashtableToDataClassification(hashtable); if (targetDataClassification == null) { return(new ArgumentException(RulesTasksStrings.MissingDataClassificationsName)); } ArgumentException ex = MessageContainsDataClassificationsPredicate.ValidateDataClassificationParameter(targetDataClassification, hashtable); if (ex != null) { return(ex); } if (!hashSet.Add(targetDataClassification.Id)) { return(new ArgumentException(RulesTasksStrings.DuplicateDataClassificationSpecified)); } } return(null); }
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); }
internal static TargetDataClassification HashtableToDataClassification(Hashtable parameter) { string text = (string)parameter["Name".ToUpper()]; if (text == null) { return(null); } TargetDataClassification defaults = MessageContainsDataClassificationsPredicate.GetDefaults(text); if (defaults == null) { return(null); } return(new TargetDataClassification(defaults.Id, MessageContainsDataClassificationsPredicate.GetValueOrDefault(parameter, "MinCount".ToUpper(), defaults.MinCount), MessageContainsDataClassificationsPredicate.GetValueOrDefault(parameter, "MaxCount".ToUpper(), defaults.MaxCount), MessageContainsDataClassificationsPredicate.GetValueOrDefault(parameter, "MinConfidence".ToUpper(), defaults.MinConfidence), MessageContainsDataClassificationsPredicate.GetValueOrDefault(parameter, "MaxConfidence".ToUpper(), defaults.MaxConfidence), MessageContainsDataClassificationsPredicate.GetValueOrDefault(parameter, TargetDataClassification.OpaqueDataKey.ToUpper(), string.Empty))); }
internal static string FormatClassificationString(TargetDataClassification classification, Dictionary <string, Tuple <string, string> > classificationIdToNames) { return(string.Format("{{{0}:\"{1}\", {2}:\"{3}\", {4}:\"{5}\", {6}:{7}, {8}:{9}, {10}:{11}, {12}:{13}}}", new object[] { TargetDataClassification.IdKey, classificationIdToNames[classification.Id].Item1, "guid", classification.Id, "displayName", classificationIdToNames[classification.Id].Item2, TargetDataClassification.MinCountKey, classification.MinCount, TargetDataClassification.MaxCountKey, (classification.MaxCount == TargetDataClassification.IgnoreMaxCount) ? "Infinity" : classification.MaxCount.ToString(CultureInfo.InvariantCulture), TargetDataClassification.MinConfidenceKey, (classification.MinConfidence == TargetDataClassification.UseRecommendedMinConfidence) ? "Recommended" : classification.MinConfidence.ToString(CultureInfo.InvariantCulture), TargetDataClassification.MaxConfidenceKey, classification.MaxConfidence })); }
internal static ArgumentException ValidateDataClassificationParameter(TargetDataClassification targetClassification, Hashtable userInput) { if (string.IsNullOrEmpty(targetClassification.Id)) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationEmptyName)); } if (targetClassification.MinConfidence != TargetDataClassification.UseRecommendedMinConfidence && targetClassification.MinConfidence < 1) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterLessThanOne("MinConfidence"))); } if (targetClassification.MaxConfidence < 1) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterLessThanOne("MaxConfidence"))); } if (targetClassification.MinConfidence != TargetDataClassification.UseRecommendedMinConfidence && targetClassification.MinConfidence > targetClassification.MaxConfidence) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterMinGreaterThanMax("MinConfidence", "MaxConfidence"))); } if (targetClassification.MinConfidence > TargetDataClassification.MaxAllowedConfidenceValue) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterConfidenceExceedsMaxAllowed("MinConfidence", TargetDataClassification.MaxAllowedConfidenceValue))); } if (targetClassification.MaxConfidence > TargetDataClassification.MaxAllowedConfidenceValue) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterConfidenceExceedsMaxAllowed("MaxConfidence", TargetDataClassification.MaxAllowedConfidenceValue))); } if (targetClassification.MinCount < 1) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterLessThanOne("MinCount"))); } if ((targetClassification.MaxCount != TargetDataClassification.IgnoreMaxCount && targetClassification.MaxCount < 1) || (targetClassification.MaxCount == TargetDataClassification.IgnoreMaxCount && userInput.ContainsKey("MaxCount".ToUpper()))) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterLessThanOne("MaxCount"))); } if (targetClassification.MaxCount != TargetDataClassification.IgnoreMaxCount && targetClassification.MinCount > targetClassification.MaxCount) { return(new ArgumentException(RulesTasksStrings.InvalidMessageDataClassificationParameterMinGreaterThanMax("MinCount", "MaxCount"))); } return(null); }