Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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)));
        }
Exemple #4
0
 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
     }));
 }
Exemple #5
0
 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);
 }