コード例 #1
0
        // returns e.g. "somename" (for nameValue = CN=somename,OU=xxx,...)
        public static String GetCnValueUnescaped(String nameValue)
        {
            IADsPathname pathName = getADSPathname(null, null, nameValue);

            try
            {
                pathName.EscapedMode = (int)ADS_ESCAPE_MODE_ENUM.ADS_ESCAPEDMODE_OFF_EX;
                String leaf = pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_LEAF);
                if (leaf == null)       // should not occur
                {
                    return(null);
                }
                if (leaf.StartsWith("CN=", StringComparison.CurrentCultureIgnoreCase))
                {
                    return(leaf.Substring(3));
                }
                else
                {
                    LOG.Warn("Common Name cannot be found for DN {0}", nameValue);
                    return(null);
                }
            }
            finally
            {
                Marshal.FinalReleaseComObject(pathName);
            }
        }
コード例 #2
0
        private void SetNextPath(DirectoryEntry entry, string dn)
        {
            IADsPathname pathCracker = (IADsPathname) new Pathname();

            pathCracker.Set(entry.Path, 1);
            pathCracker.Set(dn, 4);

            entry.Path = pathCracker.Retrieve(5);
        }
コード例 #3
0
        /// <summary>
        /// Returns the leaf value of a distinguished name
        /// </summary>
        /// <param name="nameValue"></param>
        /// <returns>e.g. CN=somename</returns>
        public static String GetNameAsCN(String nameValue)
        {
            IADsPathname pathName = getADSPathname(null, null, nameValue);

            try
            {
                return(pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_LEAF));
            }
            finally
            {
                Marshal.FinalReleaseComObject(pathName);
            }
        }
コード例 #4
0
        /// <summary>
        /// Gets the dn of the parent object of the object specified by childDn
        /// </summary>
        /// <param name="childDn">distinguished name of an object to retrieve the parent of</param>
        /// <returns>distinguished name of the parent of 'childDn' or null</returns>
        public static string GetParentDn(string childDn)
        {
            IADsPathname pathName = getADSPathname(null, null, childDn);

            try
            {
                return(pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_X500_PARENT));
            }
            finally
            {
                Marshal.FinalReleaseComObject(pathName);
            }
        }
コード例 #5
0
        /// <summary>
        /// Returns a path string in the format:
        /// provider://servernameIfSpecified/path
        /// </summary>
        /// <param name="provider">provider (such as ldap or gc)</param>
        /// <param name="serverName">servername - optional</param>
        /// <param name="path">path to resource</param>
        /// <returns></returns>
        internal static String GetFullPath(string provider, string serverName, string path)
        {
            IADsPathname pathName = getADSPathname(provider, serverName, path);

            try
            {
                return(pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_X500));
            }
            finally
            {
                Marshal.ReleaseComObject(pathName);
            }
        }
コード例 #6
0
        // returns e.g. "somename" (for nameValue = CN=somename,OU=xxx,...)
        public static String GetCnValueUnescaped(String nameValue)
        {
            IADsPathname pathName = getADSPathname(null, null, nameValue);

            pathName.EscapedMode = (int)ADS_ESCAPE_MODE_ENUM.ADS_ESCAPEDMODE_OFF_EX;
            String leaf = pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_LEAF);

            if (leaf == null)       // should not occur
            {
                return(null);
            }
            if (leaf.StartsWith("CN=", StringComparison.CurrentCultureIgnoreCase))
            {
                return(leaf.Substring(3));
            }
            else
            {
                LOGGER.TraceEvent(TraceEventType.Warning, CAT_DEFAULT, "Common Name cannot be found for DN {0}", nameValue);
                return(null);
            }
        }
コード例 #7
0
        /// <summary>
        /// Returns the leaf value of a distinguished name
        /// </summary>
        /// <param name="nameValue"></param>
        /// <returns>e.g. CN=somename</returns>
        public static String GetNameAsCN(String nameValue)
        {
            IADsPathname pathName = getADSPathname(null, null, nameValue);

            return(pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_LEAF));
        }
コード例 #8
0
        /// <summary>
        /// Gets the dn of the parent object of the object specified by childDn
        /// </summary>
        /// <param name="childDn">distinguished name of an object to retrieve the parent of</param>
        /// <returns>distinguished name of the parent of 'childDn' or null</returns>
        internal static string GetParentDn(string childDn)
        {
            IADsPathname pathName = getADSPathname(null, null, childDn);

            return(pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_X500_PARENT));
        }
コード例 #9
0
        /// <summary>
        /// Returns a path string in the format:
        /// provider://servernameIfSpecified/path
        /// </summary>
        /// <param name="provider">provider (such as ldap or gc)</param>
        /// <param name="serverName">servername - optional</param>
        /// <param name="path">path to resource</param>
        /// <returns></returns>
        internal static String GetFullPath(string provider, string serverName, string path)
        {
            IADsPathname pathName = getADSPathname(provider, serverName, path);

            return(pathName.Retrieve((int)ADS_FORMAT_ENUM.ADS_FORMAT_X500));
        }