using System;
using System.Collections. Generic ;
using System.Linq;
using System.Text;
using PivotServerTools;
namespace CollectionFactories
{
public class ActiveDirectoryFactory : CollectionFactoryBase
{
public ActiveDirectoryFactory()
{
this .Summary = "ActiveDirectory collection" ;
}
}
}
* This source code was highlighted with Source Code Highlighter .public class ActiveDirectoryUser
{
// , ActiveDirectory
public ActiveDirectoryUser(SearchResult entry)
{
_Parameters = new Dictionary< String , Object>();
// AD
foreach ( string propertyName in entry.Properties.PropertyNames)
{
_Parameters.Add(propertyName, entry.Properties[propertyName][0]);
}
}
private Dictionary< String , Object> _Parameters;
public Dictionary< String , Object> Parameters
{
get { return _Parameters; }
}
}
* This source code was highlighted with Source Code Highlighter .public override Collection MakeCollection(CollectionRequestContext context)
{
Collection collection = new Collection(); //
collection.Name = "ActiveDirectory database" ; //
List <ActiveDirectoryUser> users = GetObjects( "LDAP://servad" , "(&(objectClass=user)(objectCategory=person))" ); // AD
//
foreach (ActiveDirectoryUser user in users)
{
ItemImage itemImage = null ; // , AD, http
// , , , String.Empty
collection.AddItem(
user.Parameters.ContainsKey( "displayname" ) ? user.Parameters[ "displayname" ].ToString() : user.Parameters[ "samaccountname" ].ToString(),
null , null , itemImage,
user.Parameters.ContainsKey( "samaccountname" ) ? new Facet( "Account Name" , FacetType.Text, user.Parameters[ "samaccountname" ].ToString()) : new Facet( "Account Name" , FacetType.Text, String .Empty),
user.Parameters.ContainsKey( "lastlogon" ) ? new Facet( "Last Logon" , FacetType. DateTime , DateTime .FromFileTime(( long )user.Parameters[ "lastlogon" ])) : new Facet( "Last Logon" , FacetType. DateTime , new DateTime ()),
user.Parameters.ContainsKey( "company" ) ? new Facet( "Company" , FacetType.Text, user.Parameters[ "company" ].ToString()) : new Facet( "Company" , String .Empty),
user.Parameters.ContainsKey( "department" ) ? new Facet( "Department" , FacetType.Text, user.Parameters[ "department" ].ToString()) : new Facet( "Department" , String .Empty),
user.Parameters.ContainsKey( "title" ) ? new Facet( "Title" , FacetType.Text, user.Parameters[ "title" ].ToString()) : new Facet( "Title" , String .Empty)
);
}
collection.SetFacetDisplay( "Account Name" , false , true , false ); // ,
collection.SetFacetFormat( "Last Logon" , "dd-MM-yyyy hh:mm:ss" ); //
return collection;
}
* This source code was highlighted with Source Code Highlighter .private List <ActiveDirectoryUser> GetObjects( String domainpath, String filter)
{
List <ActiveDirectoryUser> allUsers = new List <ActiveDirectoryUser>();
DirectoryEntry searchRoot = new DirectoryEntry(domainpath);
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.PageSize = 1000;
search.Filter = filter;
search.PropertiesToLoad.Add( "displayName" );
search.PropertiesToLoad.Add( "samaccountname" );
search.PropertiesToLoad.Add( "department" );
search.PropertiesToLoad.Add( "company" );
search.PropertiesToLoad.Add( "lastlogon" );
search.PropertiesToLoad.Add( "title" );
SearchResult result;
SearchResultCollection resultCol = search.FindAll();
if (resultCol != null )
{
for ( int counter = 0; counter < resultCol.Count; counter++)
{
result = resultCol[counter];
ActiveDirectoryUser adObject = new ActiveDirectoryUser(result);
allUsers.Add(adObject);
}
}
return allUsers;
}
* This source code was highlighted with Source Code Highlighter .Source: https://habr.com/ru/post/99198/
All Articles