예제 #1
0
 internal static void ToDirectoryXmlFromADSuggestedValueEntryList(string extendedAttribute, string[] directoryAttributes, ADPropertyValueCollection extendedData, ADEntity directoryObj, CmdletSessionInfo cmdletSessionInfo)
 {
     if (extendedData == null || extendedData.Value == null)
     {
         directoryObj.ForceRemove(directoryAttributes[0]);
         return;
     }
     else
     {
         ADSuggestedValueEntry[] valueList = extendedData.ValueList as ADSuggestedValueEntry[];
         directoryObj.InternalProperties["SuggestedValues"].Value = valueList;
         return;
     }
 }
예제 #2
0
 internal static void ToRuleXmlFromPolicyString(string extendedAttribute, string[] directoryAttributes, ADPropertyValueCollection extendedData, ADEntity directoryObj, CmdletSessionInfo cmdletSessionInfo)
 {
     if (extendedData == null || extendedData.Value == null)
     {
         directoryObj.ForceRemove(directoryAttributes[0]);
         return;
     }
     else
     {
         object[] value = new object[1];
         value[0] = extendedData.Value;
         string      str         = string.Format(CultureInfo.InvariantCulture, ADClaimTransformPolicyFactory <T> .RuleXml, value);
         RulesParser rulesParser = new RulesParser();
         try
         {
             rulesParser.ValidateRules(str);
         }
         catch (XmlParseException xmlParseException1)
         {
             XmlParseException xmlParseException = xmlParseException1;
             object[]          message           = new object[2];
             message[0] = extendedData.Value;
             message[1] = xmlParseException.Message;
             throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.XmlFormattingError, message));
         }
         catch (PolicyValidationException policyValidationException1)
         {
             PolicyValidationException policyValidationException = policyValidationException1;
             object[] objArray = new object[2];
             objArray[0] = extendedData.Value;
             objArray[1] = policyValidationException.Message;
             throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.RuleValidationFailure, objArray));
         }
         directoryObj[directoryAttributes[0]].Value = str;
         return;
     }
 }
 internal static void ToDirectoryResouceConditionFromString(string extendedAttribute, string[] directoryAttributes, ADPropertyValueCollection extendedData, ADEntity directoryObj, CmdletSessionInfo cmdletSessionInfo)
 {
     if (extendedData == null || extendedData.Value == null)
     {
         directoryObj.ForceRemove(directoryAttributes[0]);
         return;
     }
     else
     {
         object[] value = new object[1];
         value[0] = extendedData.Value as string;
         string str = string.Format(CultureInfo.InvariantCulture, "D:(XA;;GA;;;S-1-1-0;({0}))", value);
         int    num = AttributeConverters.ValidateSDDLString(str, cmdletSessionInfo);
         if (num != 0)
         {
             object[] objArray = new object[1];
             objArray[0] = extendedData.Value as string;
             Win32Exception win32Exception = new Win32Exception(num, string.Format(CultureInfo.CurrentCulture, StringResources.ResouceConditionValidationFailed, objArray));
             cmdletSessionInfo.CmdletBase.ThrowTerminatingError(new ErrorRecord(win32Exception, num.ToString(CultureInfo.InvariantCulture), ErrorCategory.InvalidArgument, directoryObj));
         }
         directoryObj.SetValue(directoryAttributes[0], extendedData.Value);
         return;
     }
 }
예제 #4
0
 internal static void ToDirectoryFromSourceAttributeToDN(string extendedAttribute, string[] directoryAttributes, ADPropertyValueCollection extendedData, ADEntity directoryObj, CmdletSessionInfo cmdletSessionInfo)
 {
     if (extendedData == null || extendedData.Value == null)
     {
         directoryObj.ForceRemove(directoryAttributes[0]);
         return;
     }
     else
     {
         ADSchemaObjectFactory <ADSchemaObject> aDSchemaObjectFactory = new ADSchemaObjectFactory <ADSchemaObject>();
         aDSchemaObjectFactory.SetCmdletSessionInfo(cmdletSessionInfo);
         ADSchemaObject aDSchemaObject = new ADSchemaObject();
         aDSchemaObject.Identity = extendedData.Value;
         ADObject extendedObjectFromIdentity = aDSchemaObjectFactory.GetExtendedObjectFromIdentity(aDSchemaObject, cmdletSessionInfo.ADRootDSE.SchemaNamingContext, ADClaimTypeFactory <T> .SchemaAttributeProperties);
         if (extendedObjectFromIdentity != null)
         {
             if (!extendedObjectFromIdentity.Contains("lDAPDisplayName") || !extendedObjectFromIdentity.Contains("attributeSyntax"))
             {
                 object[] value = new object[1];
                 value[0] = extendedData.Value;
                 throw new ADException(string.Format(CultureInfo.CurrentCulture, StringResources.SPCTInvalidSourceAttribute, value));
             }
             else
             {
                 string           str    = (string)extendedObjectFromIdentity["lDAPDisplayName"].Value;
                 string           value1 = (string)extendedObjectFromIdentity["attributeSyntax"].Value;
                 HashSet <string> strs   = new HashSet <string>(ADClaimTypeFactory <T> .BlockedAttributes, StringComparer.OrdinalIgnoreCase);
                 if (!strs.Contains(str))
                 {
                     if (!extendedObjectFromIdentity.Contains("systemFlags") || ((int)extendedObjectFromIdentity["systemFlags"].Value & ADClaimTypeFactory <T> .FLAG_ATTR_NOT_REPLICATED) == 0)
                     {
                         if (!extendedObjectFromIdentity.Contains("searchFlags") || ((int)extendedObjectFromIdentity["searchFlags"].Value & ADClaimTypeFactory <T> .RODCFilteredAttribute) == 0)
                         {
                             if (!extendedObjectFromIdentity.Contains("isDefunct") || !(bool)extendedObjectFromIdentity["isDefunct"].Value)
                             {
                                 ADClaimValueType aDClaimValueType = ADClaimValueType.Invalid;
                                 HashSet <string> strs1            = new HashSet <string>(ADClaimTypeFactory <T> .ValidAttributeSyntaxInt, StringComparer.OrdinalIgnoreCase);
                                 HashSet <string> strs2            = new HashSet <string>(ADClaimTypeFactory <T> .ValidAttributeSyntaxString, StringComparer.OrdinalIgnoreCase);
                                 if (!strs2.Contains(value1))
                                 {
                                     if (!strs1.Contains(value1))
                                     {
                                         if (string.Compare(value1, ADClaimTypeFactory <T> .ValidAttributeSyntaxUInt, true, CultureInfo.InvariantCulture) != 0)
                                         {
                                             if (string.Compare(value1, ADClaimTypeFactory <T> .ValidBooleanAttributeSyntax, true, CultureInfo.InvariantCulture) != 0)
                                             {
                                                 throw new ADException(StringResources.SPCTInvalidAttributeSyntax);
                                             }
                                             else
                                             {
                                                 aDClaimValueType = ADClaimValueType.Boolean;
                                             }
                                         }
                                         else
                                         {
                                             aDClaimValueType = ADClaimValueType.UInt64;
                                         }
                                     }
                                     else
                                     {
                                         aDClaimValueType = ADClaimValueType.Int64;
                                     }
                                 }
                                 else
                                 {
                                     aDClaimValueType = ADClaimValueType.String;
                                 }
                                 directoryObj[directoryAttributes[0]].Value = extendedObjectFromIdentity.DistinguishedName;
                                 if (!directoryObj.Contains("msDS-ClaimValueType"))
                                 {
                                     directoryObj.Add("msDS-ClaimValueType", (long)aDClaimValueType);
                                 }
                                 else
                                 {
                                     long?nullable = (long?)(directoryObj["msDS-ClaimValueType"].Value as long?);
                                     if ((ADClaimValueType)nullable.Value != aDClaimValueType)
                                     {
                                         throw new ADException(StringResources.CTSourceAttributeValueTypeError);
                                     }
                                 }
                                 directoryObj.InternalProperties[directoryAttributes[0]].Value = str;
                                 return;
                             }
                             else
                             {
                                 throw new ADException(StringResources.SPCTDefuctSourceAttr);
                             }
                         }
                         else
                         {
                             throw new ADException(StringResources.SPCTRODCFilteredSourceAttr);
                         }
                     }
                     else
                     {
                         throw new ADException(StringResources.SPCTNonREPLSourceAttrError);
                     }
                 }
                 else
                 {
                     throw new ADException(StringResources.SPCTBlockedSourceAttribute);
                 }
             }
         }
         else
         {
             throw new ADException(StringResources.SPCTInvalidSourceAttributeName);
         }
     }
 }