/// <summary> Build the attribuite list from an LdapEntry. /// /// </summary> /// <param name="entry">The LdapEntry associated with this add request. /// </param> private static RfcAttributeList makeRfcAttrList(LdapEntry entry) { // convert Java-API LdapEntry to RFC2251 AttributeList LdapAttributeSet attrSet = entry.getAttributeSet(); RfcAttributeList attrList = new RfcAttributeList(attrSet.Count); IEnumerator itr = attrSet.GetEnumerator(); while (itr.MoveNext()) { LdapAttribute attr = (LdapAttribute)itr.Current; Asn1SetOf vals = new Asn1SetOf(attr.size()); IEnumerator attrEnum = attr.ByteValues; while (attrEnum.MoveNext()) { vals.add(new RfcAttributeValue((sbyte[])attrEnum.Current)); } attrList.add(new RfcAttributeTypeAndValues(new RfcAttributeDescription(attr.Name), vals)); } return(attrList); }
/// <summary> /// Iterates the ZFD Application attributes /// </summary> /// <param name="attrSet"> /// A <see cref="LdapAttributeSet"/> /// </param> /// <param name="dn"> /// A <see cref="System.String"/> /// </param> /// <returns> /// A <see cref="LDAPGroup"/> /// </returns> public static LDAPZFDApp iterZFDAppAttrs(LdapAttributeSet attrSet, string dn) { LDAPZFDApp app; System.Collections.IEnumerator ienum = attrSet.GetEnumerator(); if (attrSet.Count == 0) return null; app = new LDAPZFDApp(dn); while(ienum.MoveNext()) { LdapAttribute attribute=(LdapAttribute)ienum.Current; if (AttrEquals(attribute, ATTRNAME.APPASSOCIATIONS)) app.setAssociations(AttributeUtil.getListofAttr(attrSet, ATTRNAME.APPASSOCIATIONS)); } return app; }
/// <summary> /// Parses a group objects attributes building the LDAPGroup object /// Requires the group objects attribute set and the DN. /// </summary> /// <param name="attrSet"> /// A <see cref="LdapAttributeSet"/> /// </param> /// <param name="dn"> /// A <see cref="System.String"/> /// </param> /// <returns> /// A <see cref="LDAPUser"/> /// </returns> public static LDAPGroup iterGroupAttrs(LdapAttributeSet attrSet, string dn) { LDAPGroup grp; System.Collections.IEnumerator ienum = attrSet.GetEnumerator(); if (attrSet.Count == 0) return null; grp = new LDAPGroup(dn); while(ienum.MoveNext()) { LdapAttribute attribute=(LdapAttribute)ienum.Current; if (AttrEquals(attribute, (ATTRNAME.SN))) grp.setSN(AttributeUtil.getAttr(attrSet, ATTRNAME.SN)); if (AttrEquals(attribute, (ATTRNAME.CN))) grp.setCN(AttributeUtil.getAttr(attrSet, ATTRNAME.CN)); if (AttrEquals(attribute, ATTRNAME.MEMBERS)) grp.setGroupMembers( AttributeUtil.getListofAttr(attrSet, ATTRNAME.MEMBERS)); } return grp; }
/// <summary> /// Parses a LdapAttributeSet and the specified user DN /// Returns a user object. /// </summary> /// <param name="attrSet"> /// A <see cref="LdapAttributeSet"/> /// </param> /// <param name="dn"> /// A <see cref="System.String"/> /// </param> /// <returns> /// A <see cref="LDAPUser"/> /// </returns> public static LDAPUser iterUsrAttrs(LdapAttributeSet attrSet, string dn) { LDAPUser user; System.Collections.IEnumerator ienum = attrSet.GetEnumerator(); if (attrSet.Count == 0) { Logger.Debug("No attributes in the AttributeSet for {0}", dn); return null; } user = new LDAPUser(dn); while(ienum.MoveNext()) { LdapAttribute attribute=(LdapAttribute)ienum.Current; Logger.Debug("Parsing {0}", attribute); if (AttrEquals(attribute, ATTRNAME.NDSHOMEDIRECTORY)) user.parseNdsHomeDirPath(AttributeUtil.getAttr(attrSet, ATTRNAME.NDSHOMEDIRECTORY)); if (AttrEquals(attribute, ATTRNAME.SN)) user.setSN(AttributeUtil.getAttr(attrSet, ATTRNAME.SN)); if (AttrEquals(attribute, ATTRNAME.GIVENNAME)) user.setGivenName(AttributeUtil.getAttr(attrSet, ATTRNAME.GIVENNAME)); if (AttrEquals(attribute, ATTRNAME.TITLE)) user.Title = AttributeUtil.getAttr(attrSet, ATTRNAME.TITLE); if (AttrEquals(attribute, ATTRNAME.HOMEPHONE)) user.HOMEPHONE = AttributeUtil.getAttr(attrSet, ATTRNAME.HOMEPHONE); if (AttrEquals(attribute, ATTRNAME.DISPLAYNAME)) user.DISPLAYNAME = AttributeUtil.getAttr(attrSet, ATTRNAME.DISPLAYNAME); if (AttrEquals(attribute, ATTRNAME.NGWFID)) user.GW_FID = AttributeUtil.getAttr(attrSet, ATTRNAME.NGWFID); } return user; }
/// <summary> /// Returns null of no attributes match the attr parameter value /// Returns a list of strings that contain the attribute values that were specified in the attr param /// </summary> /// <param name="attrSet"> /// A <see cref="LdapAttributeSet"/> /// </param> /// <param name="attr"> /// A <see cref="System.String"/> /// </param> /// <returns> /// A <see cref="List<System.String>"/> /// </returns> public static List<string> getListofAttr(LdapAttributeSet attrSet, ATTRNAME attr) { string sAttr = attr.ToString(); if (attrSet.getAttribute(sAttr) == null) return null; List<string> values = null; System.Collections.IEnumerator ienum = attrSet.GetEnumerator(); while(ienum.MoveNext()) { LdapAttribute attribute=(LdapAttribute)ienum.Current; if (AttrEquals(attribute, attr)) { values = new List<string>(attrSet.getAttribute(sAttr).StringValueArray.Length); values.AddRange(attrSet.getAttribute(sAttr).StringValueArray); // take the values from the array if (Logger.LogLevel == Level.DEBUG) { foreach (string x in values) //debug purposes Logger.Debug("Values in {0} list {1}", attr, x); } } } return values; }