Esempio n. 1
0
    } // end RetObjValues()

    /// <summary>
    /// Query of group objects and its properties
    /// </summary>
    /// <param name="objContentMsg"></param>
    /// <param name="retval"></param>
    /// <param name="objContentNO"></param>
    /// <param name="adgrpin"></param>
    /// <returns>object that reflects the queried group object</returns>
    public ADgroupobjInfo RetGroupValues(ref string objContentMsg, out int retval, out int objContentNO, ADgroupobjInfo adgrpin)
    {
        retval = 0;
        string objfilter = "";
        var    adgrp     = new ADgroupobjInfo();

        objfilter = "(&(objectClass=group)(distinguishedName=" + adgrpin.DistinguishedName + "))";

        try
        {
            string[] myProps = new string[] { "distinguishedName", "cn", "managedBy", "mail", "samAccountName",
                                              "description", "notes", "memberOf", "displayName ", "member", "memberOf" };

            using (DirectoryEntry entry = new DirectoryEntry(rootDSE))
                using (DirectorySearcher mySearcher = new DirectorySearcher(entry, objfilter, myProps))
                {
                    using (SearchResultCollection result = mySearcher.FindAll())
                    {
                        if (result.Count > 0)
                        {
                            foreach (SearchResult rs in result)
                            {
                                ResultPropertyValueCollection memberCollection = rs.Properties["member"];
                                adgrp.Member = new List <string>();

                                if ((String.IsNullOrEmpty(memberCollection.ToString())))
                                {
                                    adgrp.Member.Add("");
                                }
                                else
                                {
                                    if (memberCollection.Count > 0)
                                    {
                                        for (int j = 0; j < memberCollection.Count; j++)
                                        {
                                            adgrp.Member.Add(memberCollection[j].ToString());
                                        }
                                    }
                                    else
                                    {
                                        adgrp.Member.Add("");
                                    }
                                }

                                ResultPropertyValueCollection memberOfCollection = rs.Properties["memberOf"];
                                adgrp.MemberOf = new List <string>();

                                if ((String.IsNullOrEmpty(memberOfCollection.ToString())))
                                {
                                    adgrp.MemberOf.Add("");
                                }
                                else
                                {
                                    if (memberOfCollection.Count > 0)
                                    {
                                        for (int j = 0; j < memberOfCollection.Count - 1; j++)
                                        {
                                            adgrp.MemberOf.Add(memberOfCollection[j].ToString());
                                        }
                                    }
                                    else
                                    {
                                        adgrp.MemberOf.Add("");
                                    }
                                }

                                adgrp.DistinguishedName = rs.Properties["distinguishedName"][0].ToString();
                                adgrp.SamAccountName    = rs.Properties["SamAccountName"][0].ToString();
                                adgrp.CN = rs.Properties["cn"][0].ToString();

                                if ((String.IsNullOrEmpty(rs.Properties["description"].ToString())))
                                {
                                    adgrp.Description = "";
                                }
                                else
                                {
                                    if (rs.Properties["description"].Count > 0)
                                    {
                                        adgrp.Description = rs.Properties["description"][0].ToString();
                                    }
                                    else
                                    {
                                        adgrp.Description = "";
                                    }
                                }

                                if ((String.IsNullOrEmpty(rs.Properties["notes"].ToString())))
                                {
                                    adgrp.Notes = "";
                                }
                                else
                                {
                                    if (rs.Properties["notes"].Count > 0)
                                    {
                                        adgrp.Notes = rs.Properties["notes"][0].ToString();
                                    }
                                    else
                                    {
                                        adgrp.Notes = "";
                                    }
                                }

                                if ((String.IsNullOrEmpty(rs.Properties["displayName"].ToString())))
                                {
                                    adgrp.DisplayName = "";
                                }
                                else
                                {
                                    if (rs.Properties["displayName"].Count > 0)
                                    {
                                        adgrp.DisplayName = rs.Properties["displayName"][0].ToString();
                                    }
                                    else
                                    {
                                        adgrp.DisplayName = "";
                                    }
                                }

                                if ((String.IsNullOrEmpty(rs.Properties["mail"].ToString())))
                                {
                                    adgrp.Mail = "";
                                }
                                else
                                {
                                    if (rs.Properties["mail"].Count > 0)
                                    {
                                        adgrp.Mail = rs.Properties["mail"][0].ToString();
                                    }
                                    else
                                    {
                                        adgrp.Mail = "";
                                    }
                                }

                                if ((String.IsNullOrEmpty(rs.Properties["managedBy"].ToString())))
                                {
                                    adgrp.ManagedBy = "";
                                }
                                else
                                {
                                    if (rs.Properties["managedBy"].Count > 0)
                                    {
                                        adgrp.ManagedBy = rs.Properties["managedBy"][0].ToString();
                                    }
                                    else
                                    {
                                        adgrp.ManagedBy = "";
                                    }
                                }
                            }

                            objContentNO  = 1;
                            objContentMsg = "ok";
                        }
                        else
                        {
                            objContentMsg = "Searched object not found: " + adgrpin.DistinguishedName;
                            objContentNO  = 0;
                        }
                    }
                }

            retval = 0;
        }

        catch (Exception ex)
        {
            objContentMsg += ex.Message + "\n" + ex.StackTrace;
            objContentNO   = 0;
            retval         = 1;
        }

        return(adgrp);
    } // end  public List<ADgroupobjInfo> RetGroupValues
    } // end GroupMatches_Disply(List<string> groupMatches)

    /// <summary>
    /// Gathers the members of the selected group and displays their clear name.
    /// </summary>
    protected void GroupMembers_Display()
    {
        ViewState["agGrpSelected"] = drpdAuthUsrRWGroups.SelectedValue;

        string objContentMsg = "";
        int    retval;
        int    objContentNO;

        var adgrpin = new ADgroupobjInfo();

        adgrpin.DistinguishedName = drpdAuthUsrRWGroups.SelectedValue;

        var adrw     = new ADrwInfo();
        var adgrpout = adrw.RetGroupValues(ref objContentMsg, out retval, out objContentNO, adgrpin);

        if (retval == 0)
        {
            var sbMember      = new System.Text.StringBuilder();
            var memberDetails = new System.Collections.Generic.Dictionary <string, string>();

            string objsearchfilter = "userdn";
            foreach (var member in adgrpout.Member)
            {
                string objContentMsgMem = "";
                int    retvalMem;

                var adusrin = new ADobjInfo();
                adusrin.ADdistinguishedName = member;

                var adrwi    = new ADrwInfo();
                var adusrout = adrwi.RetObjValues(ref objContentMsgMem, out retvalMem, objsearchfilter, adusrin);

                if ((retvalMem == 0) && (!String.IsNullOrEmpty(adusrout.ADUserID)))
                {
                    string usrValue = "";
                    if (String.IsNullOrEmpty(adusrout.ADfullName))
                    {
                        usrValue = adusrout.ADUserID;
                    }
                    else
                    {
                        usrValue = adusrout.ADfullName;
                    }
                    memberDetails.Add(adusrout.ADUserID, usrValue);
                }
            }

            lstGroupMembers.Items.Clear();

            var items = from pair in memberDetails
                        orderby pair.Value ascending
                        select pair;

            foreach (KeyValuePair <string, string> pair in items)
            {
                var itm = new ListItem(pair.Value, pair.Key);
                lstGroupMembers.Items.Add(itm);
            }

            if (String.IsNullOrEmpty(adgrpout.Description))
            {
                lblADGroupsNotes.Text = "&nbsp;";
            }
            else
            {
                lblADGroupsNotes.Text = adgrpout.Description;
            }
        }
        else
        {
            string foo = "bar";
        }
    } // end GroupMembers_Display()