internal override bool Matches(DirectoryEntry de) { bool flag; if (de.Properties["objectSid"] == null || de.Properties["objectSid"].Count == 0) { return(false); } else { IEnumerator enumerator = this.propertiesToMatch.FiltersToApply.GetEnumerator(); try { while (enumerator.MoveNext()) { FilterBase current = (FilterBase)enumerator.Current; QbeMatcher.FilterPropertyTableEntry item = (QbeMatcher.FilterPropertyTableEntry)QbeMatcher.filterPropertiesTable[current.GetType()]; if (item != null) { if (item.matcher(current, item.winNTPropertyName, de)) { continue; } flag = false; return(flag); } else { object[] externalForm = new object[1]; externalForm[0] = PropertyNamesExternal.GetExternalForm(current.PropertyName); throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, StringResources.StoreCtxUnsupportedPropertyForQuery, externalForm)); } } return(true); } finally { IDisposable disposable = enumerator as IDisposable; if (disposable != null) { disposable.Dispose(); } } return(flag); } }
static QbeMatcher() { object[,] matcherDelegate = new object[22, 3]; matcherDelegate[0, 0] = typeof(DescriptionFilter); matcherDelegate[0, 1] = "Description"; matcherDelegate[0, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.StringMatcher); matcherDelegate[1, 0] = typeof(DisplayNameFilter); matcherDelegate[1, 1] = "FullName"; matcherDelegate[1, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.StringMatcher); matcherDelegate[2, 0] = typeof(SidFilter); matcherDelegate[2, 1] = "objectSid"; matcherDelegate[2, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.SidMatcher); matcherDelegate[3, 0] = typeof(SamAccountNameFilter); matcherDelegate[3, 1] = "Name"; matcherDelegate[3, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.SamAccountNameMatcher); matcherDelegate[4, 0] = typeof(AuthPrincEnabledFilter); matcherDelegate[4, 1] = "UserFlags"; matcherDelegate[4, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[5, 0] = typeof(PermittedWorkstationFilter); matcherDelegate[5, 1] = "LoginWorkstations"; matcherDelegate[5, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.MultiStringMatcher); matcherDelegate[6, 0] = typeof(PermittedLogonTimesFilter); matcherDelegate[6, 1] = "LoginHours"; matcherDelegate[6, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.BinaryMatcher); matcherDelegate[7, 0] = typeof(ExpirationDateFilter); matcherDelegate[7, 1] = "AccountExpirationDate"; matcherDelegate[7, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.ExpirationDateMatcher); matcherDelegate[8, 0] = typeof(SmartcardLogonRequiredFilter); matcherDelegate[8, 1] = "UserFlags"; matcherDelegate[8, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[9, 0] = typeof(DelegationPermittedFilter); matcherDelegate[9, 1] = "UserFlags"; matcherDelegate[9, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[10, 0] = typeof(HomeDirectoryFilter); matcherDelegate[10, 1] = "HomeDirectory"; matcherDelegate[10, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.StringMatcher); matcherDelegate[11, 0] = typeof(HomeDriveFilter); matcherDelegate[11, 1] = "HomeDirDrive"; matcherDelegate[11, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.StringMatcher); matcherDelegate[12, 0] = typeof(ScriptPathFilter); matcherDelegate[12, 1] = "LoginScript"; matcherDelegate[12, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.StringMatcher); matcherDelegate[13, 0] = typeof(PasswordNotRequiredFilter); matcherDelegate[13, 1] = "UserFlags"; matcherDelegate[13, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[14, 0] = typeof(PasswordNeverExpiresFilter); matcherDelegate[14, 1] = "UserFlags"; matcherDelegate[14, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[15, 0] = typeof(CannotChangePasswordFilter); matcherDelegate[15, 1] = "UserFlags"; matcherDelegate[15, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[16, 0] = typeof(AllowReversiblePasswordEncryptionFilter); matcherDelegate[16, 1] = "UserFlags"; matcherDelegate[16, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.UserFlagsMatcher); matcherDelegate[17, 0] = typeof(GroupScopeFilter); matcherDelegate[17, 1] = "groupType"; matcherDelegate[17, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.GroupTypeMatcher); matcherDelegate[18, 0] = typeof(ExpiredAccountFilter); matcherDelegate[18, 1] = "AccountExpirationDate"; matcherDelegate[18, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.DateTimeMatcher); matcherDelegate[19, 0] = typeof(LastLogonTimeFilter); matcherDelegate[19, 1] = "LastLogin"; matcherDelegate[19, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.DateTimeMatcher); matcherDelegate[20, 0] = typeof(PasswordSetTimeFilter); matcherDelegate[20, 1] = "PasswordAge"; matcherDelegate[20, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.DateTimeMatcher); matcherDelegate[21, 0] = typeof(BadLogonCountFilter); matcherDelegate[21, 1] = "BadPasswordAttempts"; matcherDelegate[21, 2] = new QbeMatcher.MatcherDelegate(QbeMatcher.IntMatcher); QbeMatcher.filterPropertiesTableRaw = matcherDelegate; QbeMatcher.filterPropertiesTable = null; QbeMatcher.filterPropertiesTable = new Hashtable(); for (int i = 0; i < QbeMatcher.filterPropertiesTableRaw.GetLength(0); i++) { Type type = QbeMatcher.filterPropertiesTableRaw[i, 0] as Type; string str = QbeMatcher.filterPropertiesTableRaw[i, 1] as string; QbeMatcher.MatcherDelegate matcherDelegate1 = QbeMatcher.filterPropertiesTableRaw[i, 2] as QbeMatcher.MatcherDelegate; QbeMatcher.FilterPropertyTableEntry filterPropertyTableEntry = new QbeMatcher.FilterPropertyTableEntry(); filterPropertyTableEntry.winNTPropertyName = str; filterPropertyTableEntry.matcher = matcherDelegate1; QbeMatcher.filterPropertiesTable[type] = filterPropertyTableEntry; } }