/// <include file='..\..\doc\MessageQueuePermission.uex' path='docs/doc[@for="MessageQueuePermission.MessageQueuePermission3"]/*' /> /// <devdoc> /// <para>[To be supplied.]</para> /// </devdoc> public MessageQueuePermission(MessageQueuePermissionAccess permissionAccess, string machineName, string label, string category) { MessageQueuePermissionEntry entry = new MessageQueuePermissionEntry(permissionAccess, machineName, label, category); this.PermissionEntries.Add(entry); }
/// <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, System.StringComparer.InvariantCultureIgnoreCase); 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 &= (enumValues[index] ^ enumValues[index]); } } currentElement.AddAttribute("access", accessStringBuilder.ToString()); } root.AddChild(currentElement); } return(root); }
/// <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 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 |= (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); } } }
internal void ResolveFormatNames() { if (this.resolvedFormatNames == null) { this.resolvedFormatNames = new Hashtable(GetComparer()); 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 { //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 { //if the criteria cannot be resolved, nothing will be added to the list //permissions won't be granted. } } } } }
/// <include file='..\..\doc\MessageQueuePermissionEntryCollection.uex' path='docs/doc[@for="MessageQueuePermissionEntryCollection.Remove"]/*' /> public void Remove(MessageQueuePermissionEntry value) { List.Remove(value); }
/// <include file='..\..\doc\MessageQueuePermissionEntryCollection.uex' path='docs/doc[@for="MessageQueuePermissionEntryCollection.Insert"]/*' /> public void Insert(int index, MessageQueuePermissionEntry value) { List.Insert(index, value); }
/// <include file='..\..\doc\MessageQueuePermissionEntryCollection.uex' path='docs/doc[@for="MessageQueuePermissionEntryCollection.IndexOf"]/*' /> public int IndexOf(MessageQueuePermissionEntry value) { return(List.IndexOf(value)); }
/// <include file='..\..\doc\MessageQueuePermissionEntryCollection.uex' path='docs/doc[@for="MessageQueuePermissionEntryCollection.Contains"]/*' /> public bool Contains(MessageQueuePermissionEntry value) { return(List.Contains(value)); }
/// <include file='..\..\doc\MessageQueuePermissionEntryCollection.uex' path='docs/doc[@for="MessageQueuePermissionEntryCollection.Add"]/*' /> public int Add(MessageQueuePermissionEntry value) { return(List.Add(value)); }