示例#1
0
        public static string GenerateLegacyDN(string parentLegacyDN, int suggestedMaxLength, ADObject obj, bool checkInvalidChar, LegacyDN.LegacyDNIsUnique dnIsUnique, string cnName)
        {
            StringBuilder stringBuilder  = new StringBuilder(64);
            StringBuilder stringBuilder2 = new StringBuilder(parentLegacyDN).Append("/cn=");
            int           length         = stringBuilder2.Length;
            string        text           = cnName ?? obj.Name;

            if (checkInvalidChar && !LegacyDN.IsValidLegacyCommonName(text))
            {
                stringBuilder.Append(obj.MostDerivedObjectClass).Append(LegacyDN.GenerateRandomString(8));
            }
            else
            {
                stringBuilder.Append(text);
            }
            if (suggestedMaxLength > 0 && length + stringBuilder.Length > suggestedMaxLength && length <= suggestedMaxLength - 8)
            {
                stringBuilder.Length = suggestedMaxLength - length;
            }
            stringBuilder2.Append(stringBuilder.ToString());
            if (dnIsUnique != null)
            {
                int num = 0;
                while (num < 1000 && !dnIsUnique(stringBuilder2.ToString().Trim()))
                {
                    string text2 = LegacyDN.GenerateRandomString(8);
                    int    num2  = stringBuilder.Length + text2.Length;
                    if (num2 > 64)
                    {
                        stringBuilder.Length -= num2 - 64;
                        num2 = 64;
                    }
                    if (suggestedMaxLength > 0 && length + num2 > suggestedMaxLength && length <= suggestedMaxLength - 8)
                    {
                        stringBuilder.Length = suggestedMaxLength - length - 8;
                    }
                    stringBuilder.Append(text2);
                    stringBuilder2.Length = length;
                    stringBuilder2.Append(stringBuilder.ToString());
                    num++;
                }
                if (num >= 1000)
                {
                    throw new GenerateUniqueLegacyDnException(DirectoryStrings.ErrorCannotFindUnusedLegacyDN);
                }
            }
            return(stringBuilder2.ToString().Trim());
        }
示例#2
0
 public static string GenerateLegacyDN(string parentLegacyDN, int suggestedMaxLength, ADObject obj, bool checkInvalidChar, LegacyDN.LegacyDNIsUnique dnIsUnique)
 {
     return(LegacyDN.GenerateLegacyDN(parentLegacyDN, suggestedMaxLength, obj, checkInvalidChar, dnIsUnique, null));
 }