// use namespace on .Net 4.5// using System.DirectoryServices;// using System.DirectoryServices.AccountManagement;publicclassServer:DirectoryEntity{[DirectoryProperty("host")]publicstringHostName{get;set;}[DirectoryProperty("ip")]publicstringIP{get;set;}publicstringLocation{get;set;}}classSample{private LdapQueryTranslator GetTranslator(Expression<Func<Server,bool>>predicate){returnnew LdapQueryTranslator(predicate,typeof(Server));}publicDemo(){vartranslator=this.GetTranslator(s => s.HostName.Contains("server.com")|| s.IP.StartWith("10.0."|| s.Location =="Room 1");varfilter= translator.FilterString;// output - (|(host=*server.com*)(ip=10.0.*)(Location=Room 1))}}
How to use LdapDirectoryService and LdapDirectoryService
using FrameworkExtKit.Services.DirectoryServices
////// LdapDirectoryService Sample///// default methodvar service =new LdapDirectoryService();// or with root Entry (.net 4.5)DirectoryEntryrootEntry=new DirectoryEntry("ldap://ldap.company.com");varservice=new LdapDirectoryService(rootEntry)// or with settings (.net core 2.1)LdapSettingssettings=new LdapSettings();// remember to set setting propertiesvarservice=new LdapDirectoryService(settings)// search ldapServerserver= service.FindById<Server>("server-id");server= service.Single<Server>(s => s.IP =="10.0.0.2");IEnumerable<Server>servers= service.Where<Server>(s => s.IP.Contains("10.0.0.2"));////// LdapDirectoryService<T> Sample///// default methodvarservice=newLdapDirectoryService<Server>();// or with root Entry (.net 4.5)DirectoryEntryrootEntry=new DirectoryEntry("ldap://ldap.company.com");varservice=new LdapDirectoryService<Server>(rootEntry)// or with settings (.net core 2.1)
LdapSettings settings =new LdapSettings();// remember to set setting propertiesvarservice=new LdapDirectoryService<Server>(settings)// search ldap
Server server = service.FindById("server-id");server= service.FindByName("host-name");server= service.Single(s => s.IP =="10.0.0.2");IEnumerable<Server>servers= service.Where(s => s.IP.Contains("10.0.0.2"));
How to use IDirectoryAccountService, IDirectoryRoleAccountService, IDirectoryGroupService and IDirectoryDistributionListService
implement the entity class for each service you would like to use
classSampleAccount:DirectoryAccount{[DirectoryProperty("localcountry")]publicstringResidentCountry{get;set;}//.... and other properties}classSampleGroup:DirectoryGroup{// add properties}classSampleRoleAccount:DirectoryRoleAccount{// add properties}classSampleDistributionList:DirectoryDistributionList{// add properties}
use the services to search ldap
IDirectoryAccountService<SampleAccount>account_service=newLdapDirectoryAccountService<SampleAccount>();IDirectoryAccountService<SampleGroup>group_service=newLdapDirectoryAccountService<SampleGroup>();IDirectoryAccountService<SampleRoleAccount>role_account_service=newLdapDirectoryAccountService<SampleRoleAccount>();IDirectoryAccountService<SampleDistributionList>distriution_list_service=newLdapDirectoryAccountService<SampleDistributionList>();varaccount= account_service.FindById(1234);varmanager= account_service.FindDirectManager(account);// similar usage for other services