private Expression <Func <LdapExtension, bool> > FilterExtension(LdapFilter filter) { var visitor = new LdapExtensionFilterVisitor(); visitor.Visit(filter); return(visitor.Filter); }
private Expression <Func <LdapEvent, bool> > FilterEvent(LdapFilter filter) { var visitor = new LdapEventFilterVisitor(); visitor.Visit(filter); return(visitor.Filter); }
public void Z_Complex_1() { // Arrange var expected = "(&(objectCategory=person)(objectClass=user)" + "(!(userAccountControl:1.2.840.113556.1.4.803:=65536))" + "(!(userAccountControl:1.2.840.113556.1.4.803:=2))" + "(!samaccountname=gen-*)(!samaccountname=tst-*)" + "(!samaccountname=adm-*)(!samaccountname=res-*)" + "(!samaccountname=tmp-*)(!samaccountname=trn-*)" + "(!samaccountname=app-*)(!samaccountname=svc-*)" + "(!samaccountname=*test*)(!samaccountname=*$))"; // Act var filter = LdapFilter.And( new LdapFilter("objectCategory=person"), new LdapFilter("objectClass=user"), new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=65536").Not(), new LdapFilter("userAccountControl:1.2.840.113556.1.4.803:=2").Not(), new LdapFilter("samaccountname=gen-*").Not(), new LdapFilter("samaccountname=tst-*").Not(), new LdapFilter("samaccountname=adm-*").Not(), new LdapFilter("samaccountname=res-*").Not(), new LdapFilter("samaccountname=tmp-*").Not(), new LdapFilter("samaccountname=trn-*").Not(), new LdapFilter("samaccountname=app-*").Not(), new LdapFilter("samaccountname=svc-*").Not(), new LdapFilter("samaccountname=*test*").Not(), new LdapFilter("samaccountname=*$").Not()); // Assert Assert.Equal(expected, filter.ToString()); }
public void CanParseFilter(string filter, string expected = null) { var ldapFilter = LdapFilter.Parse(filter); var text = ldapFilter.ToString(); Assert.Equal(expected ?? filter, text); }
/// <summary> /// Returns an LdapFilter for Users and contacts in a group. /// </summary> /// <param name="group">The group's Distinguished Name.</param> /// <returns>LdapFilter for the Users and Contacts.</returns> public static LdapFilter UsersContactsInGroup(DistinguishedName group) => LdapFilter.And( new LdapFilter("objectCategory=person"), LdapFilter.Or( new LdapFilter("objectClass=contact"), new LdapFilter("objectClass=user")), new LdapFilter("memberOf", "=", $"{group}"));
/// <summary> /// Initializes a new instance of the <see cref="GroupPolicyObject"/> class. /// </summary> /// <param name="domainName">The Name of the Domain where the GPO resides.</param> /// <param name="nameOfGpo">The name of the GPO.</param> public GroupPolicyObject(string domainName, string nameOfGpo) { if (string.IsNullOrEmpty(domainName)) { throw new ArgumentNullException(nameof(domainName)); } if (string.IsNullOrEmpty(nameOfGpo)) { throw new ArgumentNullException(nameof(nameOfGpo)); } DomainName = domainName; Name = nameOfGpo; string dn; try { var context = new DirectoryContext(DirectoryContextType.Domain, domainName); var domainObject = Domain.GetDomain(context).GetDirectoryEntry(); dn = (string)domainObject.Properties["distinguishedName"][0]; _log.Debug($"_DomainDN: {dn}"); } catch (Exception ex) { _log.Error($"Could not find domain: {domainName}", ex); throw; } // Let look up the GPO and put the information into the properties _log.Debug($"Looking up GPO: {nameOfGpo}"); try { var name = $"CN=Policies,CN=System,{dn}"; var path = DirectoryServices.DistinguishedName.Parse(name); var filter = new LdapFilter("displayName", "=", nameOfGpo); using (var query = new LdapQuery(path, filter, false)) { var result = query.FindOne(); DistinguishedName = result.Properties["distinguishedName"][0] as string; _log.Debug($"GPO DistinguishedName: {DistinguishedName}"); } } catch (Exception ex) { _log.Error($"Could not find GPO: {nameOfGpo}. Exception: {ex.Message}", ex); throw; } }
public void Compound_Element_And_Append_Using_Single_String() { // Arrange var expected = "(&(cn=Babs J*)(sn=Jensen))"; // Act var filter = new LdapFilter("cn=Babs J*").And("sn=Jensen", true); // Assert Assert.Equal(expected, filter.ToString()); }
public void Bitwise_Filter_Must_Be_A_Embedded_Filter_When_Not_Is_Used() { // Arrange var expected = "(!(UserAccountControl:1.2.840.113556.1.4.803:=65536))"; // Act var filter = new LdapFilter("UserAccountControl:1.2.840.113556.1.4.803:=65536").Not(); // Assert Assert.Equal(expected, filter.ToString()); }
public static SearchResultCollection FindAllByUserName(this DirectorySearcher searcher, string accountFilder = "*", string givenNameFilter = "*", string surnameFilter = "*", string emailFilter = "*") { var filter = new LdapFilter(LdapQueryFilterBuilder.LdapFilterExpression.AND); filter.Add(new LdapQueryFilterCondition("objectClass", LdapQueryFilterCondition.LdapFilterOperators.EQUALTO, "user")); filter.Add(new LdapQueryFilterCondition("objectClass", LdapQueryFilterCondition.LdapFilterOperators.EQUALTO, "user")); searcher.Filter = $"(&(objectClass=user)(&(sAMAccountName={accountFilder})(givenName={givenNameFilter})(sn={surnameFilter})(Mail={emailFilter})))"; return(searcher.FindAll()); }
public void Single_Element_Filter_Using_Wildcard() { // Arrange var expected = "(cn=*)"; // Act var filter = new LdapFilter("cn", "=", LdapFilter.Any); // Assert Assert.Equal(expected, filter.ToString()); }
public void Single_Element_Filter_With_Parenthesis() { // Arrange var expected = "(cn=Babs Jensen)"; // Act var filter = new LdapFilter("(cn=Babs Jensen)"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Single_Element_Filter_Using_Individual_Strings() { // Arrange var expected = "(cn=Babs Jensen)"; // Act var filter = new LdapFilter("cn", "=", "Babs Jensen"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Single_Element_Filter_Using_Less_Filter_Type() { // Arrange var expected = "(cn<=Babs Jensen)"; // Act var filter = new LdapFilter("cn", LdapFilter.Less, "Babs Jensen"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Single_Element_Filter_Not() { // Arrange var expected = "(!samaccountname=*$)"; // Act var filter = new LdapFilter("samaccountname=*$").Not(); // Assert Assert.Equal(expected, filter.ToString()); }
public void Compound_Element_Or_Using_Single_String() { // Arrange var expected = "(|(sn=Jensen)(cn=Babs J*))"; // Act var filter = new LdapFilter("cn=Babs J*").Or("sn=Jensen"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Compound_Element_And_Using_Individual_Strings() { // Arrange var expected = "(&(sn=Jensen)(cn=Babs J*))"; // Act var filter = new LdapFilter("cn=Babs J*").And("sn", "=", "Jensen"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Complex_Filter_1() { // Arrange var expected = "(&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))"; // Act var filter = new LdapFilter("cn=Babs J*") .Or("sn=Jensen") .And("objectClass=Person"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Compound_Element_Or_Append_Using_LdapFilter() { // Arrange var expected = "(|(cn=Babs J*)(sn=Jensen))"; var filter1 = new LdapFilter("sn=Jensen"); // Act var filter = new LdapFilter("cn=Babs J*").Or(filter1, true); // Assert Assert.Equal(expected, filter.ToString()); }
public void Compound_Element_Not() { // Arrange var expected = "(!(|(cn=Tim Howes)(cn=Julian Easterling)))"; // Act var filter = new LdapFilter("cn=Julian Easterling") .Or("cn=Tim Howes") .Not(); // Assert Assert.Equal(expected, filter.ToString()); }
public void Z_Complex_3() { // Arrange var expected = "(&(objectClass=organizationalUnit)(|(ou:dn:=Domain Controllers)(ou:dn:=Computers)))"; // Act var filter = new LdapFilter("ou:dn:=Computers") .Or("ou:dn:=Domain Controllers") .And("objectClass=organizationalUnit"); // Assert Assert.Equal(expected, filter.ToString()); }
public void Compound_Element_And_Using_Single_String() { // Arrange // Act // Assert var expected = "(&(sn=Jensen)(cn=Babs J*))"; var filter = new LdapFilter("cn=Babs J*").And("sn=Jensen"); Assert.Equal(expected, filter.ToString()); }
public void Compound_Element_And_Multiple_Filters() { // Arrange var expected = "(&(objectCategory=person)(objectClass=contact)(sn=Easterling))"; var filter1 = new LdapFilter("objectCategory=person"); var filter2 = new LdapFilter("objectClass=contact"); var filter3 = new LdapFilter("sn=Easterling"); // Act var filter = LdapFilter.And(filter1, filter2, filter3); // Assert Assert.Equal(expected, filter.ToString()); }
public void Users_Who_Are_Locked_Out() { // Arrange const string expected = "(&(&(objectCategory=person)(objectClass=user))" + "(userAccountControl:1.2.840.113556.1.4.803:=16))"; // Act var filter = LdapFilter.And( ActiveDirectoryCommonFilters.Users, ActiveDirectoryCommonFilters.UserAccessControl(ADS_USER_FLAG.LOCKOUT)); // Assert Assert.Equal(expected, filter.ToString()); }
public void Users_Whose_Passwords_Do_Not_Expire() { // Arrange const string expected = "(&(&(objectCategory=person)(objectClass=user))" + "(userAccountControl:1.2.840.113556.1.4.803:=65536))"; // Act var filter = LdapFilter.And( ActiveDirectoryCommonFilters.Users, ActiveDirectoryCommonFilters.UserAccessControl(ADS_USER_FLAG.DONT_EXPIRE_PASSWD)); // Assert Assert.Equal(expected, filter.ToString()); }
public void Z_Complex_2() { // Arrange var expected = "(&(objectCategory=person)(objectClass=contact)(|(sn=Easterling)(sn=Zivuku)))"; // Act var filter = LdapFilter.And( new LdapFilter("objectCategory=person"), new LdapFilter("objectClass=contact"), new LdapFilter("sn=Zivuku").Or("sn=Easterling")); // Assert Assert.Equal(expected, filter.ToString()); }
public virtual void Visit(LdapFilter filter) { if (filter is LdapAndFilter and) { VisitAnd(and); } else if (filter is LdapOrFilter or) { VisitOr(or); } else if (filter is LdapNotFilter not) { VisitNot(not); } else if (filter is LdapEqualityFilter equality) { VisitEquality(equality); } else if (filter is LdapSubstringFilter substring) { VisitSubstring(substring); } else if (filter is LdapGreaterOrEqualFilter greaterOrEqual) { VisitGreaterOrEqual(greaterOrEqual); } else if (filter is LdapLessOrEqualFilter lessOrEqual) { VisitLessOrEqual(lessOrEqual); } else if (filter is LdapPresentFilter present) { VisitPresent(present); } else if (filter is LdapApproxMatchFilter approxMatch) { VisitApproxMatch(approxMatch); } else if (filter is LdapExtensibleMatchFilter extensibleMatch) { VisitExtensibleMatch(extensibleMatch); } }
private void LoadBaseDNData() { using (LdapConnHelper ldapConn = new LdapConnHelper(DomainName, LdapConnHelper.DefaultLdapPortNum, true, false)) { ldapConn.TryConnection(new TimeSpan(0, 1, 0), CredentialCache.DefaultNetworkCredentials, 3, AuthType.Basic); if (ldapConn.IsConnected) { WriteTrace("Connected to: " + DomainName); } LdapFilter ldapFilter = new LdapFilter(LdapFilter.AllObjects); LdapSearchRequest searchReq = new LdapSearchRequest(RootOU, ldapFilter, System.DirectoryServices.Protocols.SearchScope.OneLevel, null); SearchResponse searchResp = ldapConn.PerformSearch(searchReq); foreach (SearchResultEntry sre in searchResp.Entries) { DdBaseDN.Items.Add(sre.DistinguishedName); } } }
private void BtnSearch_Click(object sender, EventArgs e) { using (LdapConnHelper ldapConn = new LdapConnHelper(DomainName, LdapConnHelper.DefaultLdapPortNum, true, false)) { ldapConn.TryConnection(new TimeSpan(0, 1, 0), CredentialCache.DefaultNetworkCredentials, 3, AuthType.Basic); if (ldapConn.IsConnected) { WriteTrace("Connected to: " + DomainName); } LdapFilter ldapFilter = new LdapFilter(TxtSearchFilter.Text.Trim()); LdapSearchRequest searchReq = new LdapSearchRequest(DdBaseDN.Text, ldapFilter, System.DirectoryServices.Protocols.SearchScope.Subtree, LdapSearchRequest.UserAttributes); SearchResponse searchResp = ldapConn.PerformSearch(searchReq); foreach (SearchResultEntry sre in searchResp.Entries) { LdapUserRecord usrRecord = new LdapUserRecord(sre); if (usrRecord.IsValidUser()) { WriteTrace(usrRecord.ToString()); } } } }
public static SearchResultCollection FindAll(this DirectorySearcher searcher, LdapFilter filter) { var filterString = LdapQueryFilterBuilder.GetFilter(filter, out string error); searcher.Filter = filterString; return(searcher.FindAll()); }
/// <summary> /// Returns an LdapFilter for Users that were created before the specified date. /// </summary> /// <param name="firstDate">The first date of the range.</param> /// <param name="secondDate">The second date of the range.</param> /// <returns>LdapFilter for the Users.</returns> public static LdapFilter UsersCreatedBetweenDates(DateTime firstDate, DateTime secondDate) => Users.And( LdapFilter.And( new LdapFilter("whenCreated", ">=", AdDateTime.ToLdapDateTime(firstDate)), new LdapFilter("whenCreated", "<=", AdDateTime.ToLdapDateTime(secondDate))), true);