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()); }
public static string GenerateLegacyDN(string parentLegacyDN, int suggestedMaxLength, ADObject obj, bool checkInvalidChar, LegacyDN.LegacyDNIsUnique dnIsUnique) { return(LegacyDN.GenerateLegacyDN(parentLegacyDN, suggestedMaxLength, obj, checkInvalidChar, dnIsUnique, null)); }