コード例 #1
0
        internal static IADOPathNode ToSearchFromResourcePropertyNameToDN(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            string str = ADPathModule.MakePath(cmdletSessionInfo.ADRootDSE.ConfigurationNamingContext, "CN=Claims Configuration,CN=Services,", ADPathFormat.X500);

            str = ADPathModule.MakePath(str, "CN=Resource Properties,", ADPathFormat.X500);
            return(SearchConverters.ToSearchFromADEntityToAttributeValue <ADResourcePropertyFactory <ADResourceProperty>, ADResourceProperty>(str, null, extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
        }
コード例 #2
0
ファイル: ADFactoryBase`1.cs プロジェクト: modulexcite/pash-1
 internal virtual IADOPathNode BuildSearchFilter(IADOPathNode filter)
 {
     if (this.CmdletSessionInfo != null)
     {
         MappingTable <AttributeConverterEntry> item = ADFactoryBase <T> .AttributeTable[this.ConnectedStore];
         BinaryADOPathNode binaryADOPathNode         = filter as BinaryADOPathNode;
         if (binaryADOPathNode == null)
         {
             return(null);
         }
         else
         {
             string ldapFilterString = binaryADOPathNode.LeftNode.GetLdapFilterString();
             AttributeConverterEntry attributeConverterEntry = null;
             if (!item.TryGetValue(ldapFilterString, out attributeConverterEntry))
             {
                 string[] strArrays = new string[1];
                 strArrays[0] = ldapFilterString;
                 return(SearchConverters.ToSearchUsingSchemaInfo(ldapFilterString, strArrays, filter, this.CmdletSessionInfo));
             }
             else
             {
                 return(attributeConverterEntry.InvokeToSearcherConverter(filter, this.CmdletSessionInfo));
             }
         }
     }
     else
     {
         throw new ArgumentNullException(StringResources.SessionRequired);
     }
 }
コード例 #3
0
        internal static IADOPathNode BuildSearchFilter(IADOPathNode filter, MappingTable <AttributeConverterEntry> attrMapBaseObj, MappingTable <AttributeConverterEntry> attrMapChildObj, CmdletSessionInfo sessionInfo)
        {
            BinaryADOPathNode binaryADOPathNode = filter as BinaryADOPathNode;

            if (binaryADOPathNode == null)
            {
                return(null);
            }
            else
            {
                string ldapFilterString = binaryADOPathNode.LeftNode.GetLdapFilterString();
                AttributeConverterEntry attributeConverterEntry = null;
                if (!attrMapBaseObj.TryGetValue(ldapFilterString, out attributeConverterEntry))
                {
                    if (!attrMapChildObj.TryGetValue(ldapFilterString, out attributeConverterEntry))
                    {
                        string[] strArrays = new string[1];
                        strArrays[0] = ldapFilterString;
                        return(SearchConverters.ToSearchObjectClientSideFilter(ldapFilterString, strArrays, filter, sessionInfo));
                    }
                    else
                    {
                        return(attributeConverterEntry.InvokeToSearcherConverter(filter, sessionInfo));
                    }
                }
                else
                {
                    return(attributeConverterEntry.InvokeToSearcherConverter(filter, sessionInfo));
                }
            }
        }
コード例 #4
0
        internal static IADOPathNode ToSearchFromTopologyObjectNameToDN <F, O>(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
            where F : ADFactory <O>, new()
            where O : ADEntity, new()
        {
            string str = ADPathModule.MakePath(cmdletSessionInfo.ADRootDSE.ConfigurationNamingContext, "CN=Sites,", ADPathFormat.X500);

            return(SearchConverters.ToSearchFromADEntityToAttributeValue <F, O>(str, null, extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
        }
コード例 #5
0
        internal static IADOPathNode ToSearchFlagInInt(int bit, bool isInverted, string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode != null)
            {
                IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode != null)
                {
                    if (rightNode.DataObject is bool)
                    {
                        ADOperator @operator = binaryADOPathNode.Operator;
                        if (@operator == ADOperator.Eq || @operator == ADOperator.Ne)
                        {
                            IADOPathNode aDOPathNode = new BinaryADOPathNode(ADOperator.Bor, new PropertyADOPathNode(directoryAttributes[0]), new ObjectADOPathNode((object)bit));
                            bool         dataObject  = !(bool)rightNode.DataObject;
                            if (@operator == ADOperator.Ne)
                            {
                                dataObject = !dataObject;
                            }
                            if (isInverted)
                            {
                                dataObject = !dataObject;
                            }
                            if (dataObject)
                            {
                                aDOPathNode = ADOPathUtil.CreateNotClause(aDOPathNode);
                            }
                            return(aDOPathNode);
                        }
                        else
                        {
                            object[]     str             = new object[2];
                            ADOperator[] aDOperatorArray = new ADOperator[2];
                            aDOperatorArray[1] = ADOperator.Ne;
                            str[0]             = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                            str[1]             = extendedAttributeName;
                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str));
                        }
                    }
                    else
                    {
                        object[] type = new object[2];
                        type[0] = rightNode.DataObject.GetType();
                        type[1] = extendedAttributeName;
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSInvalidType, type));
                    }
                }
                else
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
            }
            else
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
        }
コード例 #6
0
ファイル: GroupTypeUtils.cs プロジェクト: modulexcite/pash-1
        public static IADOPathNode ToSearchGroupScope(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            ADGroupScope      aDGroupScope      = ADGroupScope.DomainLocal;
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode == null)
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
            else
            {
                if (binaryADOPathNode.Operator == ADOperator.Eq || binaryADOPathNode.Operator == ADOperator.Ne)
                {
                    IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                    if (rightNode == null)
                    {
                        throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                    }
                    else
                    {
                        if (!Utils.TryParseEnum <ADGroupScope>(rightNode.DataObject.ToString(), out aDGroupScope))
                        {
                            object[] str = new object[2];
                            str[0] = rightNode.DataObject.ToString();
                            str[1] = extendedAttributeName;
                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterInvalidValue, str));
                        }
                        else
                        {
                            PropertyADOPathNode propertyADOPathNode = new PropertyADOPathNode(directoryAttributes[0]);
                            ObjectADOPathNode   objectADOPathNode   = new ObjectADOPathNode((object)GroupTypeUtils.GetDirectoryGroupTypeValue(aDGroupScope));
                            IADOPathNode        aDOPathNode         = new BinaryADOPathNode(ADOperator.Band, propertyADOPathNode, objectADOPathNode);
                            if (binaryADOPathNode.Operator != ADOperator.Eq)
                            {
                                return(ADOPathUtil.CreateNotClause(aDOPathNode));
                            }
                            else
                            {
                                return(aDOPathNode);
                            }
                        }
                    }
                }
                else
                {
                    object[]     objArray        = new object[2];
                    ADOperator[] aDOperatorArray = new ADOperator[2];
                    aDOperatorArray[1] = ADOperator.Ne;
                    objArray[0]        = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                    objArray[1]        = extendedAttributeName;
                    throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, objArray));
                }
            }
        }
コード例 #7
0
        internal static IADOPathNode ToSearchComputerSamAccountName(string extendedAttribute, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode != null)
            {
                IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode != null)
                {
                    string dataObject = rightNode.DataObject as string;
                    if (dataObject != null)
                    {
                        bool       flag      = dataObject.EndsWith("$", StringComparison.OrdinalIgnoreCase);
                        bool       flag1     = dataObject.EndsWith("*", StringComparison.OrdinalIgnoreCase);
                        ADOperator @operator = binaryADOPathNode.Operator;
                        if ((@operator == ADOperator.Eq || @operator == ADOperator.Ne) && !flag)
                        {
                            object[] objArray = new object[3];
                            objArray[0] = extendedAttribute;
                            objArray[1] = "$";
                            objArray[2] = filterClause;
                            cmdletSessionInfo.CmdletMessageWriter.WriteWarningBuffered(string.Format(CultureInfo.CurrentCulture, StringResources.WarningSamAccountNameClauseLacksDollarSign, objArray));
                        }
                        else
                        {
                            if ((@operator == ADOperator.Like || @operator == ADOperator.NotLike) && !flag && !flag1)
                            {
                                object[] objArray1 = new object[3];
                                objArray1[0] = extendedAttribute;
                                objArray1[1] = "$";
                                objArray1[2] = filterClause;
                                cmdletSessionInfo.CmdletMessageWriter.WriteWarningBuffered(string.Format(CultureInfo.CurrentCulture, StringResources.WarningSamAccountNameClauseLacksDollarSign, objArray1));
                            }
                        }
                        return(SearchConverters.ToSearchObject(extendedAttribute, directoryAttributes, filterClause, cmdletSessionInfo));
                    }
                    else
                    {
                        object[] type = new object[2];
                        type[0] = rightNode.DataObject.GetType();
                        type[1] = extendedAttribute;
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSInvalidType, type));
                    }
                }
                else
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
            }
            else
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
        }
コード例 #8
0
        internal static IADOPathNode BuildIPFilter(string extendedAttribute, string directoryAttribute, IADOPathNode filterClause, IPUtil.IPVersion ipVersion)
        {
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode != null)
            {
                IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode != null)
                {
                    if (rightNode.DataObject as string != null)
                    {
                        ADOperator @operator = binaryADOPathNode.Operator;
                        if (@operator == ADOperator.Eq || @operator == ADOperator.Ne)
                        {
                            return(IPUtil.BuildHostFilterFromIP(rightNode.DataObject as string, ipVersion, extendedAttribute, directoryAttribute, @operator));
                        }
                        else
                        {
                            object[]     str             = new object[2];
                            ADOperator[] aDOperatorArray = new ADOperator[2];
                            aDOperatorArray[1] = ADOperator.Ne;
                            str[0]             = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                            str[1]             = extendedAttribute;
                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str));
                        }
                    }
                    else
                    {
                        object[] type = new object[2];
                        type[0] = rightNode.DataObject.GetType();
                        type[1] = extendedAttribute;
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSInvalidType, type));
                    }
                }
                else
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
            }
            else
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
        }
コード例 #9
0
        internal static IADOPathNode ToSearchMultivalueCertificate(string extendedAttribute, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode == null)
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
            else
            {
                if (binaryADOPathNode.Operator == ADOperator.Eq || binaryADOPathNode.Operator == ADOperator.Ne)
                {
                    IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                    if (rightNode == null)
                    {
                        throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                    }
                    else
                    {
                        X509Certificate dataObject = rightNode.DataObject as X509Certificate;
                        if (dataObject != null)
                        {
                            IADOPathNode aDOPathNode = ADOPathUtil.CreateFilterClause(binaryADOPathNode.Operator, directoryAttributes[0], dataObject.GetRawCertData());
                            return(aDOPathNode);
                        }
                        else
                        {
                            throw new ArgumentException(StringResources.SearchConverterInvalidValue);
                        }
                    }
                }
                else
                {
                    object[]     str             = new object[2];
                    ADOperator[] aDOperatorArray = new ADOperator[2];
                    aDOperatorArray[1] = ADOperator.Ne;
                    str[0]             = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                    str[1]             = extendedAttribute;
                    throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str));
                }
            }
        }
コード例 #10
0
        internal static IADOPathNode ToSearchFlagEnumerationInInt <T>(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            T                 t = default(T);
            object            num;
            IADOPathNode      item;
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode != null)
            {
                IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode != null)
                {
                    ADOperator @operator = binaryADOPathNode.Operator;
                    if (@operator == ADOperator.Eq || @operator == ADOperator.Ne)
                    {
                        char[] chrArray = new char[1];
                        chrArray[0] = ',';
                        string[]            strArrays    = rightNode.DataObject.ToString().Split(chrArray);
                        List <IADOPathNode> aDOPathNodes = new List <IADOPathNode>();
                        string[]            strArrays1   = strArrays;
                        int num1 = 0;
                        while (num1 < (int)strArrays1.Length)
                        {
                            string str = strArrays1[num1];
                            if (!Utils.TryParseEnum <T>(str, out t))
                            {
                                object[] objArray = new object[1];
                                objArray[0] = extendedAttributeName;
                                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSNotMatchEnumValue, objArray));
                            }
                            else
                            {
                                if (Enum.GetUnderlyingType(typeof(T)) != typeof(int))
                                {
                                    num = Convert.ToInt64(t, CultureInfo.InvariantCulture);
                                }
                                else
                                {
                                    num = Convert.ToInt32(t, CultureInfo.InvariantCulture);
                                }
                                IADOPathNode aDOPathNode = new BinaryADOPathNode(ADOperator.Bor, new PropertyADOPathNode(directoryAttributes[0]), new ObjectADOPathNode(num));
                                aDOPathNodes.Add(aDOPathNode);
                                num1++;
                            }
                        }
                        if (aDOPathNodes.Count <= 1)
                        {
                            if (aDOPathNodes.Count != 1)
                            {
                                object[] objArray1 = new object[1];
                                objArray1[0] = extendedAttributeName;
                                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSNotMatchEnumValue, objArray1));
                            }
                            else
                            {
                                item = aDOPathNodes[0];
                            }
                        }
                        else
                        {
                            item = ADOPathUtil.CreateAndClause(aDOPathNodes.ToArray());
                        }
                        if (@operator == ADOperator.Ne)
                        {
                            item = ADOPathUtil.CreateNotClause(item);
                        }
                        return(item);
                    }
                    else
                    {
                        object[]     str1            = new object[2];
                        ADOperator[] aDOperatorArray = new ADOperator[2];
                        aDOperatorArray[1] = ADOperator.Ne;
                        str1[0]            = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                        str1[1]            = extendedAttributeName;
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str1));
                    }
                }
                else
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
            }
            else
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
        }
コード例 #11
0
        internal static IADOPathNode ToSearchFromADEntityToAttributeValue <F, O>(string searchBase, string attributeName, string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
            where F : ADFactory <O>, new()
            where O : ADEntity, new()
        {
            ADEntity          extendedObjectFromIdentity;
            IADOPathNode      binaryADOPathNode;
            BinaryADOPathNode binaryADOPathNode1 = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode1 == null)
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
            else
            {
                if (binaryADOPathNode1.Operator == ADOperator.Eq || binaryADOPathNode1.Operator == ADOperator.Ne)
                {
                    IDataNode rightNode = binaryADOPathNode1.RightNode as IDataNode;
                    if (rightNode == null)
                    {
                        throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                    }
                    else
                    {
                        PropertyADOPathNode propertyADOPathNode = new PropertyADOPathNode(directoryAttributes[0]);
                        ObjectADOPathNode   objectADOPathNode   = new ObjectADOPathNode(null);
                        O dataObject = (O)(rightNode.DataObject as O);
                        if (dataObject == null)
                        {
                            string str = rightNode.DataObject as string;
                            if (str != null)
                            {
                                dataObject          = Activator.CreateInstance <O>();
                                dataObject.Identity = str;
                            }
                        }
                        if (dataObject == null)
                        {
                            object[] objArray = new object[2];
                            objArray[0] = rightNode.DataObject.ToString();
                            objArray[1] = extendedAttributeName;
                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterInvalidValue, objArray));
                        }
                        else
                        {
                            F f = Activator.CreateInstance <F>();
                            f.SetCmdletSessionInfo(cmdletSessionInfo);
                            try
                            {
                                if (attributeName != null)
                                {
                                    HashSet <string> strs = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                                    strs.Add(attributeName);
                                    extendedObjectFromIdentity   = f.GetExtendedObjectFromIdentity(dataObject, searchBase, strs, false);
                                    objectADOPathNode.DataObject = (string)extendedObjectFromIdentity[attributeName].Value;
                                }
                                else
                                {
                                    extendedObjectFromIdentity   = f.GetDirectoryObjectFromIdentity(dataObject, searchBase);
                                    objectADOPathNode.DataObject = (string)extendedObjectFromIdentity["DistinguishedName"].Value;
                                }
                                binaryADOPathNode = new BinaryADOPathNode(binaryADOPathNode1.Operator, propertyADOPathNode, objectADOPathNode);
                            }
                            catch (ADIdentityNotFoundException aDIdentityNotFoundException1)
                            {
                                ADIdentityNotFoundException aDIdentityNotFoundException = aDIdentityNotFoundException1;
                                object[] message = new object[2];
                                message[0] = extendedAttributeName;
                                message[1] = aDIdentityNotFoundException.Message;
                                throw new ADIdentityResolutionException(string.Format(CultureInfo.CurrentCulture, StringResources.IdentityInExtendedAttributeCannotBeResolved, message), aDIdentityNotFoundException);
                            }
                            catch (ADIdentityResolutionException aDIdentityResolutionException1)
                            {
                                ADIdentityResolutionException aDIdentityResolutionException = aDIdentityResolutionException1;
                                object[] message1 = new object[2];
                                message1[0] = extendedAttributeName;
                                message1[1] = aDIdentityResolutionException.Message;
                                throw new ADIdentityResolutionException(string.Format(CultureInfo.CurrentCulture, StringResources.IdentityInExtendedAttributeCannotBeResolved, message1), aDIdentityResolutionException);
                            }
                            return(binaryADOPathNode);
                        }
                    }
                }
                else
                {
                    object[]     str1            = new object[2];
                    ADOperator[] aDOperatorArray = new ADOperator[2];
                    aDOperatorArray[1] = ADOperator.Ne;
                    str1[0]            = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                    str1[1]            = extendedAttributeName;
                    throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str1));
                }
            }
        }
コード例 #12
0
 internal static ToSearchFilterDelegate GetDelegateToSearchFlagInInt(int bit, bool isInverted)
 {
     return((string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo) => SearchConverters.ToSearchFlagInInt(bit, isInverted, extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
 }
コード例 #13
0
        private static IADOPathNode BuildGPLinkFilter(string extendedAttribute, string directoryAttribute, IADOPathNode filterClause)
        {
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode != null)
            {
                IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode != null)
                {
                    string dataObject = rightNode.DataObject as string;
                    if (dataObject != null)
                    {
                        ADOperator @operator = binaryADOPathNode.Operator;
                        if (@operator == ADOperator.Eq || @operator == ADOperator.Ne || @operator == ADOperator.Like || @operator == ADOperator.NotLike)
                        {
                            if (@operator != ADOperator.Eq)
                            {
                                if (@operator == ADOperator.Ne)
                                {
                                    dataObject = ADOPathUtil.LdapSearchEncodeString(dataObject, true);
                                    @operator  = ADOperator.NotLike;
                                }
                            }
                            else
                            {
                                dataObject = ADOPathUtil.LdapSearchEncodeString(dataObject, true);
                                @operator  = ADOperator.Like;
                            }
                            dataObject = string.Concat(GPLinkUtil.GpLinkFilterPrefix, dataObject, GPLinkUtil.GpLinkFilterSuffix);
                            return(ADOPathUtil.CreateFilterClause(@operator, directoryAttribute, dataObject));
                        }
                        else
                        {
                            object[]     str             = new object[2];
                            ADOperator[] aDOperatorArray = new ADOperator[4];
                            aDOperatorArray[1] = ADOperator.Ne;
                            aDOperatorArray[2] = ADOperator.Like;
                            aDOperatorArray[3] = ADOperator.NotLike;
                            str[0]             = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                            str[1]             = extendedAttribute;
                            throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str));
                        }
                    }
                    else
                    {
                        object[] type = new object[2];
                        type[0] = rightNode.DataObject.GetType();
                        type[1] = extendedAttribute;
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterRHSInvalidType, type));
                    }
                }
                else
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
            }
            else
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
        }
コード例 #14
0
 internal static IADOPathNode ToSearchFromADObjectToDN <F, O>(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
     where F : ADFactory <O>, new()
     where O : ADObject, new()
 {
     return(SearchConverters.ToSearchFromADEntityToAttributeValue <F, O>(cmdletSessionInfo.DefaultPartitionPath, null, extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
 }
コード例 #15
0
        internal static IADOPathNode ToSearchFromTrustNameToDN(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            string wellKnownGuidDN = Utils.GetWellKnownGuidDN(cmdletSessionInfo.ADSessionInfo, cmdletSessionInfo.ADRootDSE.DefaultNamingContext, WellKnownGuids.SystemsContainerGuid);

            return(SearchConverters.ToSearchFromADEntityToAttributeValue <ADTrustFactory <ADTrust>, ADTrust>(wellKnownGuidDN, null, extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
        }
コード例 #16
0
 internal static IADOPathNode ToSearchFromSchemaObjectNameToDN(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
 {
     return(SearchConverters.ToSearchFromADEntityToAttributeValue <ADSchemaObjectFactory <ADSchemaObject>, ADSchemaObject>(cmdletSessionInfo.ADRootDSE.SchemaNamingContext, null, extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
 }
コード例 #17
0
        internal static IADOPathNode ToSearchGuid(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode != null)
            {
                IDataNode rightNode = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode != null)
                {
                    ADOperator @operator = binaryADOPathNode.Operator;
                    if (@operator == ADOperator.Eq || @operator == ADOperator.Ne)
                    {
                        byte[] byteArray = null;
                        if (!(rightNode.DataObject is Guid))
                        {
                            if (rightNode.DataObject as byte[] == null)
                            {
                                if (rightNode.DataObject as string == null)
                                {
                                    object[] type = new object[2];
                                    type[0] = rightNode.DataObject.GetType();
                                    type[1] = extendedAttributeName;
                                    throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterUnrecognizedObjectType, type));
                                }
                                else
                                {
                                    Guid?nullable = null;
                                    if (!Utils.TryParseGuid((string)rightNode.DataObject, out nullable))
                                    {
                                        return(ADOPathUtil.CreateFilterClause(@operator, directoryAttributes[0], rightNode.DataObject));
                                    }
                                    else
                                    {
                                        Guid value = nullable.Value;
                                        byteArray = value.ToByteArray();
                                    }
                                }
                            }
                            else
                            {
                                byteArray = (byte[])rightNode.DataObject;
                            }
                        }
                        else
                        {
                            Guid dataObject = (Guid)rightNode.DataObject;
                            byteArray = dataObject.ToByteArray();
                        }
                        return(ADOPathUtil.CreateFilterClause(@operator, directoryAttributes[0], byteArray));
                    }
                    else
                    {
                        object[]     str             = new object[2];
                        ADOperator[] aDOperatorArray = new ADOperator[2];
                        aDOperatorArray[1] = ADOperator.Ne;
                        str[0]             = SearchConverters.ConvertOperatorListToString(aDOperatorArray);
                        str[1]             = extendedAttributeName;
                        throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, StringResources.SearchConverterSupportedOperatorListErrorMessage, str));
                    }
                }
                else
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
            }
            else
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
        }
コード例 #18
0
        public static IADOPathNode ToSearchAccountExpirationDate(string extendedAttribute, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
        {
            bool flag;
            BinaryADOPathNode binaryADOPathNode = filterClause as BinaryADOPathNode;

            if (binaryADOPathNode == null)
            {
                throw new ArgumentException(StringResources.SearchConverterNotBinaryNode);
            }
            else
            {
                PropertyADOPathNode propertyADOPathNode = new PropertyADOPathNode(directoryAttributes[0]);
                IDataNode           rightNode           = binaryADOPathNode.RightNode as IDataNode;
                if (rightNode == null)
                {
                    throw new ArgumentException(StringResources.SearchConverterRHSNotDataNode);
                }
                else
                {
                    ObjectADOPathNode objectADOPathNode = new ObjectADOPathNode(rightNode.DataObject);
                    objectADOPathNode.EncodeAsteriskChar = rightNode.EncodeAsteriskChar;
                    IADOPathNode searchDateTimeUsingSchemaInfo = new BinaryADOPathNode(binaryADOPathNode.Operator, propertyADOPathNode, objectADOPathNode);
                    searchDateTimeUsingSchemaInfo = SearchConverters.ToSearchDateTimeUsingSchemaInfo(extendedAttribute, directoryAttributes, searchDateTimeUsingSchemaInfo, cmdletSessionInfo);
                    bool flag1 = true;
                    if (binaryADOPathNode.Operator != ADOperator.Eq)
                    {
                        if (binaryADOPathNode.Operator == ADOperator.Like)
                        {
                            if (rightNode.DataObject as string == null)
                            {
                                flag = false;
                            }
                            else
                            {
                                flag = ADOPathUtil.IsValueAllAsterisk((string)rightNode.DataObject);
                            }
                            flag1 = flag;
                        }
                    }
                    else
                    {
                        flag1 = false;
                    }
                    if (!flag1)
                    {
                        return(searchDateTimeUsingSchemaInfo);
                    }
                    else
                    {
                        IADOPathNode[] aDOPathNodeArray = new IADOPathNode[2];
                        aDOPathNodeArray[0] = ADOPathUtil.CreateFilterClause(ADOperator.Eq, directoryAttributes[0], 0);
                        aDOPathNodeArray[1] = ADOPathUtil.CreateFilterClause(ADOperator.Eq, directoryAttributes[0], 0x7fffffffffffffffL);
                        IADOPathNode   aDOPathNode       = ADOPathUtil.CreateNotClause(ADOPathUtil.CreateOrClause(aDOPathNodeArray));
                        IADOPathNode[] aDOPathNodeArray1 = new IADOPathNode[2];
                        aDOPathNodeArray1[0] = searchDateTimeUsingSchemaInfo;
                        aDOPathNodeArray1[1] = aDOPathNode;
                        return(ADOPathUtil.CreateAndClause(aDOPathNodeArray1));
                    }
                }
            }
        }
コード例 #19
0
 internal static IADOPathNode ToSearchMultivalueObject(string extendedAttributeName, string[] directoryAttributes, IADOPathNode filterClause, CmdletSessionInfo cmdletSessionInfo)
 {
     return(SearchConverters.ToSearchObject(extendedAttributeName, directoryAttributes, filterClause, cmdletSessionInfo));
 }
コード例 #20
0
 static ADTrustFactory()
 {
     ADTrustFactory <T> ._rDNPrefix = "CN";
     string[] strArrays = new string[1];
     strArrays[0] = "name";
     ADTrustFactory <T> ._identityLdapAttributes = strArrays;
     IdentityResolverDelegate[] customIdentityResolver = new IdentityResolverDelegate[2];
     customIdentityResolver[0] = IdentityResolverMethods.GetCustomIdentityResolver(new IdentityResolverDelegate(IdentityResolverMethods.DistinguishedNameIdentityResolver));
     IdentityResolverDelegate[] genericIdentityResolver = new IdentityResolverDelegate[2];
     genericIdentityResolver[0]             = IdentityResolverMethods.GetGenericIdentityResolver(ADTrustFactory <T> ._identityLdapAttributes);
     genericIdentityResolver[1]             = new IdentityResolverDelegate(IdentityResolverMethods.GuidSearchFilterIdentityResolver);
     customIdentityResolver[1]              = IdentityResolverMethods.GetAggregatedIdentityResolver(ADOperator.Or, genericIdentityResolver);
     ADTrustFactory <T> ._identityResolvers = customIdentityResolver;
     AttributeConverterEntry[] attributeConverterEntry = new AttributeConverterEntry[19];
     attributeConverterEntry[0]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.Source.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.Source.ADAttribute, TypeConstants.String, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(ADTrustFactory <T> .ToExtendedSourceNameFromDN), null, new ToSearchFilterDelegate(SearchConverters.ToSearchNotSupported));
     attributeConverterEntry[1]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.Target.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.Target.ADAttribute, TypeConstants.String, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.ToExtendedObject), null, new ToSearchFilterDelegate(SearchConverters.ToSearchUsingSchemaInfo));
     attributeConverterEntry[2]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.TrustDirection.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.TrustDirection.ADAttribute, TypeConstants.ADTrustDirection, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.ToExtendedObjectWithCast <ADTrustDirection>), null, new ToSearchFilterDelegate(SearchConverters.ToSearchEnum <ADTrustDirection>));
     attributeConverterEntry[3]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.TrustType.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.TrustType.ADAttribute, TypeConstants.ADTrustType, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.ToExtendedObjectWithCast <ADTrustType>), null, new ToSearchFilterDelegate(SearchConverters.ToSearchEnum <ADTrustType>));
     attributeConverterEntry[4]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.TrustAttributes.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.TrustAttributes.ADAttribute, TypeConstants.Int, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.ToExtendedObject), null, new ToSearchFilterDelegate(SearchConverters.ToSearchUsingSchemaInfo));
     attributeConverterEntry[5]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.TrustingPolicy.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.TrustingPolicy.ADAttribute, TypeConstants.ADClaimTransformPolicy, true, TypeAdapterAccess.ReadWrite, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.ToExtendedObject), new ToDirectoryFormatDelegate(AttributeConverters.ToDirectoryObject), new ToSearchFilterDelegate(ADTrustFactory <T> .ToSearchFromClaimTransformPolicyToDN));
     attributeConverterEntry[6]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.TrustedPolicy.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.TrustedPolicy.ADAttribute, TypeConstants.ADClaimTransformPolicy, true, TypeAdapterAccess.ReadWrite, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.ToExtendedObject), new ToDirectoryFormatDelegate(AttributeConverters.ToDirectoryObject), new ToSearchFilterDelegate(ADTrustFactory <T> .ToSearchFromClaimTransformPolicyToDN));
     attributeConverterEntry[7]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.DisallowTransivity.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.DisallowTransivity.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(1, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(1, false).Invoke));
     attributeConverterEntry[8]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.UplevelOnly.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.UplevelOnly.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(2, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(2, false).Invoke));
     attributeConverterEntry[9]         = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.SIDFilteringQuarantined.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.SIDFilteringQuarantined.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(4, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(4, false).Invoke));
     attributeConverterEntry[10]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.ForestTransitive.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.ForestTransitive.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(8, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(8, false).Invoke));
     attributeConverterEntry[11]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.SelectiveAuthentication.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.SelectiveAuthentication.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(16, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(16, false).Invoke));
     attributeConverterEntry[12]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.IntraForest.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.IntraForest.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(32, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(32, false).Invoke));
     attributeConverterEntry[13]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.SIDFilteringForestAware.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.SIDFilteringForestAware.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(64, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(64, false).Invoke));
     attributeConverterEntry[14]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.UsesRC4Encryption.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.UsesRC4Encryption.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(128, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(128, false).Invoke));
     attributeConverterEntry[15]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.UsesAESKeys.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.UsesAESKeys.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(0x100, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(0x100, false).Invoke));
     attributeConverterEntry[16]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.IsTreeParent.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.IsTreeParent.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(0x400000, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(0x400000, false).Invoke));
     attributeConverterEntry[17]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.IsTreeRoot.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.IsTreeRoot.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(0x800000, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(0x800000, false).Invoke));
     attributeConverterEntry[18]        = new AttributeConverterEntry(ADTrustFactory <T> .ADTrustPropertyMap.TGTDelegation.PropertyName, ADTrustFactory <T> .ADTrustPropertyMap.TGTDelegation.ADAttribute, TypeConstants.Bool, true, TypeAdapterAccess.Read, true, AttributeSet.Default, new ToExtendedFormatDelegate(AttributeConverters.GetDelegateToExtendedFlagFromInt(0x200, false).Invoke), null, new ToSearchFilterDelegate(SearchConverters.GetDelegateToSearchFlagInInt(0x200, false).Invoke));
     ADTrustFactory <T> .ADMappingTable = attributeConverterEntry;
     ADFactoryBase <T> .RegisterMappingTable(ADTrustFactory <T> .ADMappingTable, ADServerType.ADDS);
 }