private List <DatabaseAvailabilityGroupNetwork> Find(QueryFilter queryFilter, ObjectId rootId, bool deepSearch, SortBy sortBy)
        {
            List <DatabaseAvailabilityGroupNetwork> list = new List <DatabaseAvailabilityGroupNetwork>();
            DagNetworkQueryFilter dagNetworkQueryFilter  = null;

            if (queryFilter != null)
            {
                dagNetworkQueryFilter = (queryFilter as DagNetworkQueryFilter);
            }
            IEnumerable <DatabaseAvailabilityGroup> enumerable;

            if (this.TargetDag != null)
            {
                enumerable = new DatabaseAvailabilityGroup[]
                {
                    this.TargetDag
                };
            }
            else
            {
                string identity = "*";
                if (dagNetworkQueryFilter != null && dagNetworkQueryFilter.NamesToMatch != null && dagNetworkQueryFilter.NamesToMatch.DagName != null)
                {
                    identity = dagNetworkQueryFilter.NamesToMatch.DagName;
                }
                DatabaseAvailabilityGroupIdParameter databaseAvailabilityGroupIdParameter = DatabaseAvailabilityGroupIdParameter.Parse(identity);
                enumerable = databaseAvailabilityGroupIdParameter.GetObjects <DatabaseAvailabilityGroup>(null, this.m_adSession);
            }
            if (enumerable != null)
            {
                Regex regex = null;
                if (dagNetworkQueryFilter != null && dagNetworkQueryFilter.NamesToMatch != null && dagNetworkQueryFilter.NamesToMatch.NetName != null)
                {
                    string pattern = Wildcard.ConvertToRegexPattern(dagNetworkQueryFilter.NamesToMatch.NetName);
                    regex = new Regex(pattern, RegexOptions.IgnoreCase);
                }
                foreach (DatabaseAvailabilityGroup databaseAvailabilityGroup in enumerable)
                {
                    DagNetworkConfiguration dagNetworkConfiguration = (this.m_targetServer == null) ? DagNetworkRpc.GetDagNetworkConfig(databaseAvailabilityGroup) : DagNetworkRpc.GetDagNetworkConfig(this.m_targetServer);
                    if (dagNetworkConfiguration != null && dagNetworkConfiguration.Networks != null)
                    {
                        this.m_netConfig = dagNetworkConfiguration;
                        foreach (DatabaseAvailabilityGroupNetwork databaseAvailabilityGroupNetwork in dagNetworkConfiguration.Networks)
                        {
                            if (regex == null || regex.IsMatch(databaseAvailabilityGroupNetwork.Name))
                            {
                                DagNetworkObjectId identity2 = new DagNetworkObjectId(databaseAvailabilityGroup.Name, databaseAvailabilityGroupNetwork.Name);
                                databaseAvailabilityGroupNetwork.SetIdentity(identity2);
                                databaseAvailabilityGroupNetwork.ResetChangeTracking();
                                list.Add(databaseAvailabilityGroupNetwork);
                            }
                        }
                    }
                }
            }
            return(list);
        }
        private bool MatchesFilter(RequestIndexEntryQueryFilter requestIndexEntryQueryFilter)
        {
            if (requestIndexEntryQueryFilter == null)
            {
                return(true);
            }
            if (requestIndexEntryQueryFilter.RequestType != base.Type)
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.RequestGuid != Guid.Empty && requestIndexEntryQueryFilter.RequestGuid != base.RequestGuid)
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.SourceMailbox != null && requestIndexEntryQueryFilter.SourceMailbox.ObjectGuid != ((base.SourceUserId == null) ? Guid.Empty : base.SourceUserId.ObjectGuid))
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.TargetMailbox != null && requestIndexEntryQueryFilter.TargetMailbox.ObjectGuid != ((base.TargetUserId == null) ? Guid.Empty : base.TargetUserId.ObjectGuid))
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.SourceDatabase != null && requestIndexEntryQueryFilter.SourceDatabase.ObjectGuid != ((base.SourceMDB == null) ? Guid.Empty : base.SourceMDB.ObjectGuid))
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.TargetDatabase != null && requestIndexEntryQueryFilter.TargetDatabase.ObjectGuid != ((base.TargetMDB == null) ? Guid.Empty : base.TargetMDB.ObjectGuid))
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.Status != RequestStatus.None && requestIndexEntryQueryFilter.Status != base.Status)
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.Flags != RequestFlags.None && (requestIndexEntryQueryFilter.Flags & base.Flags) != requestIndexEntryQueryFilter.Flags)
            {
                return(false);
            }
            if (requestIndexEntryQueryFilter.NotFlags != RequestFlags.None && (~requestIndexEntryQueryFilter.NotFlags & base.Flags) != base.Flags)
            {
                return(false);
            }
            if (!string.IsNullOrEmpty(requestIndexEntryQueryFilter.BatchName) && requestIndexEntryQueryFilter.BatchName.Equals(base.BatchName, StringComparison.OrdinalIgnoreCase))
            {
                return(false);
            }
            string text = requestIndexEntryQueryFilter.WildcardedNameSearch ? Wildcard.ConvertToRegexPattern(requestIndexEntryQueryFilter.RequestName) : requestIndexEntryQueryFilter.RequestName;

            return(string.IsNullOrEmpty(text) || !(requestIndexEntryQueryFilter.WildcardedNameSearch ? (!Regex.IsMatch(base.Name, text, RegexOptions.IgnoreCase)) : (!base.Name.Equals(text, StringComparison.OrdinalIgnoreCase))));
        }
Example #3
0
        internal static bool DoesRoleEntryMatchNameAndParameters(RoleEntry roleEntry, ManagementRoleEntryType type, string name, string[] parameters, string snapinName)
        {
            if (null == roleEntry)
            {
                throw new ArgumentNullException("roleEntry");
            }
            ManagementRoleEntryType managementRoleEntryType = (ManagementRoleEntryType)0;

            if (roleEntry is CmdletRoleEntry)
            {
                managementRoleEntryType = ManagementRoleEntryType.Cmdlet;
            }
            else if (roleEntry is ScriptRoleEntry)
            {
                managementRoleEntryType = ManagementRoleEntryType.Script;
            }
            else if (roleEntry is ApplicationPermissionRoleEntry)
            {
                managementRoleEntryType = ManagementRoleEntryType.ApplicationPermission;
            }
            else if (roleEntry is WebServiceRoleEntry)
            {
                managementRoleEntryType = ManagementRoleEntryType.WebService;
            }
            if ((type & managementRoleEntryType) == (ManagementRoleEntryType)0 && type != ManagementRoleEntryType.All)
            {
                return(false);
            }
            if (!string.IsNullOrEmpty(snapinName))
            {
                if (managementRoleEntryType != ManagementRoleEntryType.Cmdlet)
                {
                    return(false);
                }
                Regex regex = new Regex(Wildcard.ConvertToRegexPattern(snapinName), RegexOptions.IgnoreCase);
                if (!regex.IsMatch(((CmdletRoleEntry)roleEntry).PSSnapinName))
                {
                    return(false);
                }
            }
            if (!string.IsNullOrEmpty(name))
            {
                Regex regex2 = new Regex(Wildcard.ConvertToRegexPattern(name), RegexOptions.IgnoreCase);
                if (!regex2.IsMatch(roleEntry.Name))
                {
                    if (type != ManagementRoleEntryType.Cmdlet)
                    {
                        return(false);
                    }
                    if (!regex2.IsMatch(roleEntry.Name + "," + ((CmdletRoleEntry)roleEntry).PSSnapinName))
                    {
                        return(false);
                    }
                }
            }
            if (parameters != null && parameters.Length != 0)
            {
                foreach (string wildcardString in parameters)
                {
                    Regex regex3 = new Regex(Wildcard.ConvertToRegexPattern(wildcardString), RegexOptions.IgnoreCase);
                    bool  flag   = false;
                    foreach (string input in roleEntry.Parameters)
                    {
                        if (regex3.IsMatch(input))
                        {
                            flag = true;
                            break;
                        }
                    }
                    if (!flag)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }