Exemplo n.º 1
0
        /// <include file='doc\MessageQueuePermission.uex' path='docs/doc[@for="MessageQueuePermission.MessageQueuePermission4"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public MessageQueuePermission(MessageQueuePermissionEntry[] permissionAccessEntries)
        {
            if (permissionAccessEntries == null)
                throw new ArgumentNullException("permissionAccessEntries");

            this.PermissionEntries.AddRange(permissionAccessEntries);
        }
Exemplo n.º 2
0
        public MessageQueuePermission(MessageQueuePermissionAccess permissionAccess,
                                      string machineName, string label, string category) : this()
        {
            MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry(permissionAccess, machineName, label, category);

            _list.Add(entry);
        }
Exemplo n.º 3
0
        public MessageQueuePermission(MessageQueuePermissionAccess permissionAccess, string path)
            : this()
        {
            MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry(permissionAccess, path);

            _list.Add(entry);
        }
 internal void ResolveFormatNames()
 {
     if (this.resolvedFormatNames == null)
     {
         this.resolvedFormatNames = new Hashtable(GetComparer());
         IEnumerator enumerator = this.PermissionEntries.GetEnumerator();
         while (enumerator.MoveNext())
         {
             MessageQueuePermissionEntry current = (MessageQueuePermissionEntry)enumerator.Current;
             if (current.Path != null)
             {
                 if (current.Path == "*")
                 {
                     this.resolvedFormatNames.Add("*", current.PermissionAccess);
                 }
                 else
                 {
                     try
                     {
                         MessageQueue queue = new MessageQueue(current.Path);
                         this.resolvedFormatNames.Add(queue.FormatName, current.PermissionAccess);
                     }
                     catch
                     {
                     }
                 }
             }
             else
             {
                 try
                 {
                     MessageQueueCriteria criteria = new MessageQueueCriteria();
                     if (current.MachineName != null)
                     {
                         criteria.MachineName = current.MachineName;
                     }
                     if (current.Category != null)
                     {
                         criteria.Category = new Guid(current.Category);
                     }
                     if (current.Label != null)
                     {
                         criteria.Label = current.Label;
                     }
                     IEnumerator messageQueueEnumerator = MessageQueue.GetMessageQueueEnumerator(criteria, false);
                     while (messageQueueEnumerator.MoveNext())
                     {
                         MessageQueue queue2 = (MessageQueue)messageQueueEnumerator.Current;
                         this.resolvedFormatNames.Add(queue2.FormatName, current.PermissionAccess);
                     }
                     continue;
                 }
                 catch
                 {
                     continue;
                 }
             }
         }
     }
 }
        public override void FromXml(SecurityElement securityElement)
        {
            this.PermissionEntries.Clear();
            string strA = securityElement.Attribute("Unrestricted");

            if ((strA != null) && (string.Compare(strA, "true", true, CultureInfo.InvariantCulture) == 0))
            {
                this.isUnrestricted = true;
            }
            else if (securityElement.Children != null)
            {
                for (int i = 0; i < securityElement.Children.Count; i++)
                {
                    SecurityElement             element = (SecurityElement)securityElement.Children[i];
                    MessageQueuePermissionEntry entry   = null;
                    string str2 = element.Attribute("access");
                    int    num2 = 0;
                    if (str2 != null)
                    {
                        string[] strArray = str2.Split(new char[] { '|' });
                        for (int j = 0; j < strArray.Length; j++)
                        {
                            string str3 = strArray[j].Trim();
                            if (Enum.IsDefined(typeof(MessageQueuePermissionAccess), str3))
                            {
                                num2 |= (int)Enum.Parse(typeof(MessageQueuePermissionAccess), str3);
                            }
                        }
                    }
                    if (element.Tag == "Path")
                    {
                        string path = element.Attribute("value");
                        if (path == null)
                        {
                            throw new InvalidOperationException(Res.GetString("InvalidXmlFormat"));
                        }
                        entry = new MessageQueuePermissionEntry((MessageQueuePermissionAccess)num2, path);
                    }
                    else
                    {
                        if (!(element.Tag == "Criteria"))
                        {
                            throw new InvalidOperationException(Res.GetString("InvalidXmlFormat"));
                        }
                        string label       = element.Attribute("label");
                        string category    = element.Attribute("category");
                        string machineName = element.Attribute("machine");
                        if (((machineName == null) && (label == null)) && (category == null))
                        {
                            throw new InvalidOperationException(Res.GetString("InvalidXmlFormat"));
                        }
                        entry = new MessageQueuePermissionEntry((MessageQueuePermissionAccess)num2, machineName, label, category);
                    }
                    this.PermissionEntries.Add(entry);
                }
            }
        }
 public void AddRange(MessageQueuePermissionEntry[] value)
 {
     if (value == null)
     {
         throw new ArgumentNullException("value");
     }
     for (int i = 0; i < value.Length; i++)
     {
         this.Add(value[i]);
     }
 }
		public bool Contains(MessageQueuePermissionEntry value)
		{
			return base.List.Contains (value);
		}
        internal void ResolveFormatNames()
        {
            if (this.resolvedFormatNames == null)
            {
                this.resolvedFormatNames = new Hashtable(new CaseInsensitiveHashCodeProvider(CultureInfo.InvariantCulture), new CaseInsensitiveComparer(CultureInfo.InvariantCulture));
                IEnumerator enumerator = this.PermissionEntries.GetEnumerator();
                while (enumerator.MoveNext())
                {
                    MessageQueuePermissionEntry entry = (MessageQueuePermissionEntry)enumerator.Current;
                    if (entry.Path != null)
                    {
                        if (entry.Path == Any)
                        {
                            this.resolvedFormatNames.Add(Any, entry.PermissionAccess);
                        }
                        else
                        {
                            try {
                                MessageQueue queue = new MessageQueue(entry.Path);
                                this.resolvedFormatNames.Add(queue.FormatName, entry.PermissionAccess);
                            }
                            catch (Exception) {
                                //if the format name cannot be resolved, it won't be added to the list
                                //permissions won't be granted.
                            }
                        }
                    }
                    else
                    {
                        try {
                            MessageQueueCriteria criteria = new MessageQueueCriteria();
                            if (entry.MachineName != null)
                            {
                                criteria.MachineName = entry.MachineName;
                            }

                            if (entry.Category != null)
                            {
                                criteria.Category = new Guid(entry.Category);
                            }

                            if (entry.Label != null)
                            {
                                criteria.Label = entry.Label;
                            }

                            IEnumerator messageQueues = MessageQueue.GetMessageQueueEnumerator(criteria, false);
                            while (messageQueues.MoveNext())
                            {
                                MessageQueue queue = (MessageQueue)messageQueues.Current;
                                this.resolvedFormatNames.Add(queue.FormatName, entry.PermissionAccess);
                            }
                        }
                        catch (Exception) {
                            //if the criteria cannot be resolved, nothing will be added to the list
                            //permissions won't be granted.
                        }
                    }
                }
            }
        }
		public MessageQueuePermission (MessageQueuePermissionAccess permissionAccess, string path)
			: this ()
		{
			MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry (permissionAccess, path);
			_list.Add (entry);
		}
        public override SecurityElement ToXml()
        {
            SecurityElement element = new SecurityElement("IPermission");
            Type            type    = base.GetType();

            element.AddAttribute("class", type.FullName + ", " + type.Module.Assembly.FullName.Replace('"', '\''));
            element.AddAttribute("version", "1");
            if (this.isUnrestricted)
            {
                element.AddAttribute("Unrestricted", "true");
                return(element);
            }
            IEnumerator enumerator = this.PermissionEntries.GetEnumerator();

            while (enumerator.MoveNext())
            {
                SecurityElement             child   = null;
                MessageQueuePermissionEntry current = (MessageQueuePermissionEntry)enumerator.Current;
                if (current.Path != null)
                {
                    child = new SecurityElement("Path");
                    child.AddAttribute("value", current.Path);
                }
                else
                {
                    child = new SecurityElement("Criteria");
                    if (current.MachineName != null)
                    {
                        child.AddAttribute("machine", current.MachineName);
                    }
                    if (current.Category != null)
                    {
                        child.AddAttribute("category", current.Category);
                    }
                    if (current.Label != null)
                    {
                        child.AddAttribute("label", current.Label);
                    }
                }
                int permissionAccess = (int)current.PermissionAccess;
                if (permissionAccess != 0)
                {
                    StringBuilder builder = null;
                    int[]         values  = (int[])Enum.GetValues(typeof(MessageQueuePermissionAccess));
                    Array.Sort(values, System.InvariantComparer.Default);
                    for (int i = values.Length - 1; i >= 0; i--)
                    {
                        if ((values[i] != 0) && ((permissionAccess & values[i]) == values[i]))
                        {
                            if (builder == null)
                            {
                                builder = new StringBuilder();
                            }
                            else
                            {
                                builder.Append("|");
                            }
                            builder.Append(Enum.GetName(typeof(MessageQueuePermissionAccess), values[i]));
                            permissionAccess &= values[i] ^ values[i];
                        }
                    }
                    child.AddAttribute("access", builder.ToString());
                }
                element.AddChild(child);
            }
            return(element);
        }
Exemplo n.º 11
0
        public override void FromXml(SecurityElement securityElement)
        {
            this.PermissionEntries.Clear();
            string unrestrictedValue = securityElement.Attribute("Unrestricted");
            if (unrestrictedValue != null && (string.Compare(unrestrictedValue, "true", true, CultureInfo.InvariantCulture) == 0))
            {
                this.isUnrestricted = true;
                return;
            }

            if (securityElement.Children != null)
            {
                for (int index = 0; index < securityElement.Children.Count; ++index)
                {
                    SecurityElement currentElement = (SecurityElement)securityElement.Children[index];
                    MessageQueuePermissionEntry entry = null;

                    string accessString = currentElement.Attribute("access");
                    int permissionAccess = 0;
                    if (accessString != null)
                    {
                        string[] accessArray = accessString.Split(new char[] { '|' });
                        for (int index2 = 0; index2 < accessArray.Length; ++index2)
                        {
                            string currentAccess = accessArray[index2].Trim();
                            if (Enum.IsDefined(typeof(MessageQueuePermissionAccess), currentAccess))
                                permissionAccess = permissionAccess | (int)Enum.Parse(typeof(MessageQueuePermissionAccess), currentAccess);
                        }
                    }

                    if (currentElement.Tag == "Path")
                    {
                        string path = currentElement.Attribute("value");
                        if (path == null)
                            throw new InvalidOperationException(Res.GetString(Res.InvalidXmlFormat));

                        entry = new MessageQueuePermissionEntry((MessageQueuePermissionAccess)permissionAccess, path);
                    }
                    else if (currentElement.Tag == "Criteria")
                    {
                        string label = currentElement.Attribute("label");
                        string category = currentElement.Attribute("category");
                        string machineName = currentElement.Attribute("machine");
                        if (machineName == null && label == null && category == null)
                            throw new InvalidOperationException(Res.GetString(Res.InvalidXmlFormat));

                        entry = new MessageQueuePermissionEntry((MessageQueuePermissionAccess)permissionAccess, machineName, label, category);
                    }
                    else
                        throw new InvalidOperationException(Res.GetString(Res.InvalidXmlFormat));

                    this.PermissionEntries.Add(entry);
                }
            }
        }
 public bool Contains(MessageQueuePermissionEntry value)
 {
     return(base.List.Contains(value));
 }
 public int Add(MessageQueuePermissionEntry value)
 {
     return(base.List.Add(value));
 }
        /// <include file='doc\MessageQueuePermission.uex' path='docs/doc[@for="MessageQueuePermission.ToXml"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public override SecurityElement ToXml()
        {
            SecurityElement root = new SecurityElement("IPermission");
            Type            type = this.GetType();

            root.AddAttribute("class", type.FullName + ", " + type.Module.Assembly.FullName.Replace('\"', '\''));
            root.AddAttribute("version", "1");

            if (this.isUnrestricted)
            {
                root.AddAttribute("Unrestricted", "true");
                return(root);
            }

            IEnumerator enumerator = this.PermissionEntries.GetEnumerator();

            while (enumerator.MoveNext())
            {
                SecurityElement             currentElement = null;
                MessageQueuePermissionEntry entry          = (MessageQueuePermissionEntry)enumerator.Current;
                if (entry.Path != null)
                {
                    currentElement = new SecurityElement("Path");
                    currentElement.AddAttribute("value", entry.Path);
                }
                else
                {
                    currentElement = new SecurityElement("Criteria");
                    if (entry.MachineName != null)
                    {
                        currentElement.AddAttribute("machine", entry.MachineName);
                    }

                    if (entry.Category != null)
                    {
                        currentElement.AddAttribute("category", entry.Category);
                    }

                    if (entry.Label != null)
                    {
                        currentElement.AddAttribute("label", entry.Label);
                    }
                }

                int currentAccess = (int)entry.PermissionAccess;
                if (currentAccess != 0)
                {
                    StringBuilder accessStringBuilder = null;
                    int[]         enumValues          = (int[])Enum.GetValues(typeof(MessageQueuePermissionAccess));
                    Array.Sort(enumValues, InvariantComparer.Default);
                    for (int index = (enumValues.Length - 1); index >= 0; --index)
                    {
                        if (enumValues[index] != 0 && ((currentAccess & enumValues[index]) == enumValues[index]))
                        {
                            if (accessStringBuilder == null)
                            {
                                accessStringBuilder = new StringBuilder();
                            }
                            else
                            {
                                accessStringBuilder.Append("|");
                            }

                            accessStringBuilder.Append(Enum.GetName(typeof(MessageQueuePermissionAccess), enumValues[index]));
                            currentAccess = currentAccess & (enumValues[index] ^ enumValues[index]);
                        }
                    }

                    currentElement.AddAttribute("access", accessStringBuilder.ToString());
                }

                root.AddChild(currentElement);
            }

            return(root);
        }
		public void CopyTo(MessageQueuePermissionEntry[] array,int index)
		{
			base.List.CopyTo (array, index);
		}
		public int IndexOf(MessageQueuePermissionEntry value)
		{
			return base.List.IndexOf (value);
		}
 public int IndexOf(MessageQueuePermissionEntry value)
 {
     return(base.List.IndexOf(value));
 }
Exemplo n.º 18
0
 /// <include file='doc\MessageQueuePermission.uex' path='docs/doc[@for="MessageQueuePermission.MessageQueuePermission2"]/*' />
 /// <devdoc>
 ///    <para>[To be supplied.]</para>
 /// </devdoc>
 public MessageQueuePermission(MessageQueuePermissionAccess permissionAccess, string path)
 {
     MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry(permissionAccess, path);
     this.PermissionEntries.Add(entry);
 }
 public void Insert(int index, MessageQueuePermissionEntry value)
 {
     base.List.Insert(index, value);
 }
 public void Remove(MessageQueuePermissionEntry value)
 {
     base.List.Remove(value);
 }
		public void Insert(int index, MessageQueuePermissionEntry value)
		{
			base.List.Insert (index, value);
		}
        public MessageQueuePermission(MessageQueuePermissionAccess permissionAccess, string path)
        {
            MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry(permissionAccess, path);

            this.PermissionEntries.Add(entry);
        }
		public void Remove(MessageQueuePermissionEntry value)
		{
			base.List.Remove (value);
		}
		public MessageQueuePermission (MessageQueuePermissionEntry[] permissionAccessEntries)
			: this ()
		{
			foreach (MessageQueuePermissionEntry entry in permissionAccessEntries)
				_list.Add (entry);
		}
		public int Add(MessageQueuePermissionEntry value)
		{
			return base.List.Add (value);
		}
		public MessageQueuePermission (MessageQueuePermissionAccess permissionAccess,
			string machineName, string label, string category) : this ()
		{
			MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry (permissionAccess, machineName, label, category);
			_list.Add (entry);
		}
        /// <include file='doc\MessageQueuePermission.uex' path='docs/doc[@for="MessageQueuePermission.FromXml"]/*' />
        /// <devdoc>
        ///    <para>[To be supplied.]</para>
        /// </devdoc>
        public override void FromXml(SecurityElement securityElement)
        {
            this.PermissionEntries.Clear();
            string unrestrictedValue = securityElement.Attribute("Unrestricted");

            if (unrestrictedValue != null && (string.Compare(unrestrictedValue, "true", true, CultureInfo.InvariantCulture) == 0))
            {
                this.isUnrestricted = true;
                return;
            }

            if (securityElement.Children != null)
            {
                for (int index = 0; index < securityElement.Children.Count; ++index)
                {
                    SecurityElement             currentElement = (SecurityElement)securityElement.Children[index];
                    MessageQueuePermissionEntry entry          = null;

                    string accessString     = currentElement.Attribute("access");
                    int    permissionAccess = 0;
                    if (accessString != null)
                    {
                        string[] accessArray = accessString.Split(new char[] { '|' });
                        for (int index2 = 0; index2 < accessArray.Length; ++index2)
                        {
                            string currentAccess = accessArray[index2].Trim();
                            if (Enum.IsDefined(typeof(MessageQueuePermissionAccess), currentAccess))
                            {
                                permissionAccess = permissionAccess | (int)Enum.Parse(typeof(MessageQueuePermissionAccess), currentAccess);
                            }
                        }
                    }

                    if (currentElement.Tag == "Path")
                    {
                        string path = currentElement.Attribute("value");
                        if (path == null)
                        {
                            throw new InvalidOperationException(Res.GetString(Res.InvalidXmlFormat));
                        }

                        entry = new MessageQueuePermissionEntry((MessageQueuePermissionAccess)permissionAccess, path);
                    }
                    else if (currentElement.Tag == "Criteria")
                    {
                        string label       = currentElement.Attribute("label");
                        string category    = currentElement.Attribute("category");
                        string machineName = currentElement.Attribute("machine");
                        if (machineName == null && label == null && category == null)
                        {
                            throw new InvalidOperationException(Res.GetString(Res.InvalidXmlFormat));
                        }

                        entry = new MessageQueuePermissionEntry((MessageQueuePermissionAccess)permissionAccess, machineName, label, category);
                    }
                    else
                    {
                        throw new InvalidOperationException(Res.GetString(Res.InvalidXmlFormat));
                    }

                    this.PermissionEntries.Add(entry);
                }
            }
        }