AddPermission() public method

public AddPermission ( NetworkAccess access, Regex uriRegex ) : void
access NetworkAccess
uriRegex System.Text.RegularExpressions.Regex
return void
Esempio n. 1
0
/*
 *      public bool ConnectAll
 *      {
 *          get
 *          {
 *              return m_connect is bool ? (bool) m_connect : false;
 *          }
 *
 *          set
 *          {
 *              if (m_connect != null)
 *              {
 *                  throw new ArgumentException(SR.GetString(SR.net_perm_attrib_multi, "ConnectAll", value), "value");
 *              }
 *              m_connect = value;
 *          }
 *      }
 *
 *      public bool AcceptAll
 *      {
 *          get
 *          {
 *              return m_accept is bool ? (bool) m_accept : false;
 *          }
 *
 *          set
 *          {
 *              if (m_accept != null)
 *              {
 *                  throw new ArgumentException(SR.GetString(SR.net_perm_attrib_multi, "AcceptAll", value), "value");
 *              }
 *              m_accept = value;
 *          }
 *      }
 */

        public override IPermission CreatePermission()
        {
            WebPermission perm = null;

            if (Unrestricted)
            {
                perm = new WebPermission(PermissionState.Unrestricted);
            }
            else
            {
                NetworkAccess access = (NetworkAccess)0;
                if (m_connect is bool)
                {
                    if ((bool)m_connect)
                    {
                        access |= NetworkAccess.Connect;
                    }
                    m_connect = null;
                }
                if (m_accept is bool)
                {
                    if ((bool)m_accept)
                    {
                        access |= NetworkAccess.Accept;
                    }
                    m_accept = null;
                }
                perm = new WebPermission(access);
                if (m_accept != null)
                {
                    if (m_accept is DelayedRegex)
                    {
                        perm.AddAsPattern(NetworkAccess.Accept, (DelayedRegex)m_accept);
                    }
                    else
                    {
                        perm.AddPermission(NetworkAccess.Accept, (string)m_accept);
                    }
                }
                if (m_connect != null)
                {
                    if (m_connect is DelayedRegex)
                    {
                        perm.AddAsPattern(NetworkAccess.Connect, (DelayedRegex)m_connect);
                    }
                    else
                    {
                        perm.AddPermission(NetworkAccess.Connect, (string)m_connect);
                    }
                }
            }
            return(perm);
        }
Esempio n. 2
0
        public override IPermission CreatePermission()
        {
            WebPermission permission = null;

            if (base.Unrestricted)
            {
                return(new WebPermission(PermissionState.Unrestricted));
            }
            NetworkAccess access = 0;

            if (this.m_connect is bool)
            {
                if ((bool)this.m_connect)
                {
                    access |= NetworkAccess.Connect;
                }
                this.m_connect = null;
            }
            if (this.m_accept is bool)
            {
                if ((bool)this.m_accept)
                {
                    access |= NetworkAccess.Accept;
                }
                this.m_accept = null;
            }
            permission = new WebPermission(access);
            if (this.m_accept != null)
            {
                if (this.m_accept is DelayedRegex)
                {
                    permission.AddAsPattern(NetworkAccess.Accept, (DelayedRegex)this.m_accept);
                }
                else
                {
                    permission.AddPermission(NetworkAccess.Accept, (string)this.m_accept);
                }
            }
            if (this.m_connect != null)
            {
                if (this.m_connect is DelayedRegex)
                {
                    permission.AddAsPattern(NetworkAccess.Connect, (DelayedRegex)this.m_connect);
                    return(permission);
                }
                permission.AddPermission(NetworkAccess.Connect, (string)this.m_connect);
            }
            return(permission);
        }
 public override IPermission CreatePermission()
 {
     WebPermission permission = null;
     if (base.Unrestricted)
     {
         return new WebPermission(PermissionState.Unrestricted);
     }
     NetworkAccess access = 0;
     if (this.m_connect is bool)
     {
         if ((bool) this.m_connect)
         {
             access |= NetworkAccess.Connect;
         }
         this.m_connect = null;
     }
     if (this.m_accept is bool)
     {
         if ((bool) this.m_accept)
         {
             access |= NetworkAccess.Accept;
         }
         this.m_accept = null;
     }
     permission = new WebPermission(access);
     if (this.m_accept != null)
     {
         if (this.m_accept is DelayedRegex)
         {
             permission.AddAsPattern(NetworkAccess.Accept, (DelayedRegex) this.m_accept);
         }
         else
         {
             permission.AddPermission(NetworkAccess.Accept, (string) this.m_accept);
         }
     }
     if (this.m_connect != null)
     {
         if (this.m_connect is DelayedRegex)
         {
             permission.AddAsPattern(NetworkAccess.Connect, (DelayedRegex) this.m_connect);
             return permission;
         }
         permission.AddPermission(NetworkAccess.Connect, (string) this.m_connect);
     }
     return permission;
 }
Esempio n. 4
0
        // The union of two web permissions is formed by concatenating
        // the list of allowed regular expressions. There is no check
        // for duplicates/overlaps
        /// <include file='doc\WebPermission.uex' path='docs/doc[@for="WebPermission.Union"]/*' />
        /// <devdoc>
        /// <para>Returns the logical union between two <see cref='System.Net.WebPermission'/> instances.</para>
        /// </devdoc>
        public override IPermission Union(IPermission target)
        {
            // Pattern suggested by Security engine
            if (target == null)
            {
                return(this.Copy());
            }
            WebPermission other = target as WebPermission;

            if (other == null)
            {
                throw new ArgumentException(SR.GetString(SR.net_perm_target));
            }
            if (m_noRestriction || other.m_noRestriction)
            {
                return(new WebPermission(true));
            }
            WebPermission result = (WebPermission)other.Copy();

            for (int i = 0; i < m_connectList.Count; i++)
            {
                Regex uriPattern = m_connectList[i] as Regex;
                if (uriPattern == null)
                {
                    result.AddPermission(NetworkAccess.Connect, m_connectList[i].ToString());
                }
                else
                {
                    result.AddPermission(NetworkAccess.Connect, uriPattern);
                }
            }
            for (int i = 0; i < m_acceptList.Count; i++)
            {
                Regex uriPattern = m_acceptList[i] as Regex;
                if (uriPattern == null)
                {
                    result.AddPermission(NetworkAccess.Accept, m_acceptList[i].ToString());
                }
                else
                {
                    result.AddPermission(NetworkAccess.Accept, uriPattern);
                }
            }
            return(result);
        }
        /// <summary>Creates and returns a new instance of the <see cref="T:System.Net.WebPermission" /> class.</summary>
        /// <returns>A <see cref="T:System.Net.WebPermission" /> corresponding to the security declaration.</returns>
        /// <PermissionSet>
        ///   <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="UnmanagedCode" />
        /// </PermissionSet>
        public override IPermission CreatePermission()
        {
            if (base.Unrestricted)
            {
                return(new WebPermission(PermissionState.Unrestricted));
            }
            WebPermission webPermission = new WebPermission();

            if (this.m_accept != null)
            {
                webPermission.AddPermission(NetworkAccess.Accept, (WebPermissionInfo)this.m_accept);
            }
            if (this.m_connect != null)
            {
                webPermission.AddPermission(NetworkAccess.Connect, (WebPermissionInfo)this.m_connect);
            }
            return(webPermission);
        }
Esempio n. 6
0
 // Create a permission object that corresponds to this attribute.
 public override IPermission CreatePermission()
 {
     if (Unrestricted)
     {
         return(new WebPermission
                    (PermissionState.Unrestricted));
     }
     else
     {
         WebPermission perm = new WebPermission();
         if (accept != null)
         {
             perm.AddPermission(NetworkAccess.Accept, accept);
         }
         if (connect != null)
         {
             perm.AddPermission(NetworkAccess.Connect, connect);
         }
         return(perm);
     }
 }
Esempio n. 7
0
        /// <include file='doc\WebPermission.uex' path='docs/doc[@for="WebPermissionAttribute.CreatePermission"]/*' />
        public override IPermission CreatePermission()
        {
            WebPermission perm = null;

            if (Unrestricted)
            {
                perm = new WebPermission(PermissionState.Unrestricted);
            }
            else
            {
                perm = new WebPermission(PermissionState.None);
                if (m_accept != null)
                {
                    if (m_accept is Regex)
                    {
                        perm.AddPermission(NetworkAccess.Accept, (Regex)m_accept);
                    }
                    else
                    {
                        perm.AddPermission(NetworkAccess.Accept, m_accept.ToString());
                    }
                }
                if (m_connect != null)
                {
                    if (m_connect is Regex)
                    {
                        perm.AddPermission(NetworkAccess.Connect, (Regex)m_connect);
                    }
                    else
                    {
                        perm.AddPermission(NetworkAccess.Connect, m_connect.ToString());
                    }
                }
            }
            return(perm);
        }
	// Create a permission object that corresponds to this attribute.
	public override IPermission CreatePermission()
			{
				if(Unrestricted)
				{
					return new WebPermission
						(PermissionState.Unrestricted);
				}
				else
				{
					WebPermission perm = new WebPermission();
					if(accept != null)
					{
						perm.AddPermission(NetworkAccess.Accept, accept);
					}
					if(connect != null)
					{
						perm.AddPermission(NetworkAccess.Connect, connect);
					}
					return perm;
				}
			}
Esempio n. 9
0
        public Tuple<String, int> Web_Read(string url)
        {
            int statusCode = 200;
            string result = "";
            WebRequest request = null;
            WebResponse response = null;
            StreamReader reader = null;

            try
            {
                //asking for permission to call the specified url.
                WebPermission permission = new WebPermission();
                permission.AddPermission(NetworkAccess.Connect, url);
                permission.Assert();

                request = WebRequest.Create(url);
                response = request.GetResponse();

                reader = new StreamReader(response.GetResponseStream());
                result = reader.ReadToEnd();
            }
            catch (WebException ex)
            {
                //Properly handling http errors here
                if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null)
                {
                    var resp = (HttpWebResponse)ex.Response;
                    switch (resp.StatusCode)
                    {
                        case HttpStatusCode.NotFound:
                            result = "eror";
                            statusCode = 404;
                            break;
                        case HttpStatusCode.Forbidden:
                            result = "error";
                            statusCode = 403;
                            break;
                        case HttpStatusCode.InternalServerError:
                            result = "error";
                            statusCode = 500;
                            break;
                    }
                }
            }
            catch (Exception)
            {
                //placeholder for other sorts of exceptions
            }
            finally
            {
                // general cleanup
                if (reader != null)
                {
                    reader.Close(); //closes the reader and the response stream it was working on at the same time.
                }
                if (request != null)
                {
                    request = null; //not really needed but general cleanup
                }
            }

            return Tuple.Create(result, statusCode);
        }
 public override IPermission Union(IPermission target)
 {
     if (target == null)
     {
         return this.Copy();
     }
     WebPermission permission = target as WebPermission;
     if (permission == null)
     {
         throw new ArgumentException(SR.GetString("net_perm_target"), "target");
     }
     if (this.m_noRestriction || permission.m_noRestriction)
     {
         return new WebPermission(true);
     }
     WebPermission permission2 = new WebPermission();
     if (this.m_UnrestrictedConnect || permission.m_UnrestrictedConnect)
     {
         permission2.m_UnrestrictedConnect = true;
     }
     else
     {
         permission2.m_connectList = (ArrayList) permission.m_connectList.Clone();
         for (int j = 0; j < this.m_connectList.Count; j++)
         {
             DelayedRegex uriRegexPattern = this.m_connectList[j] as DelayedRegex;
             if (uriRegexPattern == null)
             {
                 if (this.m_connectList[j] is string)
                 {
                     permission2.AddPermission(NetworkAccess.Connect, (string) this.m_connectList[j]);
                 }
                 else
                 {
                     permission2.AddPermission(NetworkAccess.Connect, (Uri) this.m_connectList[j]);
                 }
             }
             else
             {
                 permission2.AddAsPattern(NetworkAccess.Connect, uriRegexPattern);
             }
         }
     }
     if (this.m_UnrestrictedAccept || permission.m_UnrestrictedAccept)
     {
         permission2.m_UnrestrictedAccept = true;
         return permission2;
     }
     permission2.m_acceptList = (ArrayList) permission.m_acceptList.Clone();
     for (int i = 0; i < this.m_acceptList.Count; i++)
     {
         DelayedRegex regex2 = this.m_acceptList[i] as DelayedRegex;
         if (regex2 == null)
         {
             if (this.m_acceptList[i] is string)
             {
                 permission2.AddPermission(NetworkAccess.Accept, (string) this.m_acceptList[i]);
             }
             else
             {
                 permission2.AddPermission(NetworkAccess.Accept, (Uri) this.m_acceptList[i]);
             }
         }
         else
         {
             permission2.AddAsPattern(NetworkAccess.Accept, regex2);
         }
     }
     return permission2;
 }
Esempio n. 11
0
        //status code initial value set to -1
        //You should never get that value.
        //It should be 200 for succes
        //204 for succes but empty response
        //any other return code is an error
        //408 is a timeout error.
        public Tuple<String, int> Web_Read(string url, int timeout)
        {
            int statusCode = -1;
            string result = "";
            StreamReader reader = null;

            try
            {
                //asking for permission to call the specified url.
                var permission = new WebPermission();
                permission.AddPermission(NetworkAccess.Connect, url);
                permission.Assert();

                WebRequest request = WebRequest.Create(url);
                request.Timeout = (timeout == 0) ? request.Timeout : timeout;
                WebResponse response = request.GetResponse();

                Stream grs = response.GetResponseStream();
                if (grs != null)
                {
                    reader = new StreamReader(grs);
                    result = reader.ReadToEnd();
                }
                //if the response is empty it will officially return a 204 status code.
                //This is according to the http specification.
                if (result.Length < 1)
                {
                    result = "error";
                    statusCode = 204;
                }
                else
                {
                    //response code 200: HTTP OK request was made succesfully.
                    statusCode = 200;
                }
            }
            catch (WebException ex)
            {
                var resp = (HttpWebResponse)ex.Response;
                if (resp == null) statusCode = 500;
                else
                {
                    //Will parse all .net known http status codes.
                    int.TryParse(resp.StatusCode.ToString(), out statusCode);
                }
                result = "error";
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                if (Debugger.IsAttached) Debugger.Break();
            }
            finally
            {
                // general cleanup
                if (reader != null)
                {
                    reader.Close(); //closes the reader and the response stream it was working on at the same time.
                }
            }

            return Tuple.Create(result, statusCode);
        }
		// Methods

		public override IPermission CreatePermission () 
		{
			if (this.Unrestricted)
				return new WebPermission (PermissionState.Unrestricted);

			WebPermission newPermission = new WebPermission ();
			if (m_accept != null) {
				newPermission.AddPermission (NetworkAccess.Accept, (WebPermissionInfo) m_accept);
			}
			if (m_connect != null) {
				newPermission.AddPermission (NetworkAccess.Connect, (WebPermissionInfo) m_connect);
			}
			return newPermission;
		}
Esempio n. 13
0
        public Tuple<String, int> Web_Read(string url)
        {
            int statusCode = 200;
            string result = "";
            StreamReader reader = null;

            try
            {
                //asking for permission to call the specified url.
                var permission = new WebPermission();
                permission.AddPermission(NetworkAccess.Connect, url);
                permission.Assert();

                WebRequest request = WebRequest.Create(url);
                WebResponse response = request.GetResponse();

                Stream grs = response.GetResponseStream();
                if (grs != null)
                {
                    reader = new StreamReader(grs);
                    result = reader.ReadToEnd();
                }
            }
            catch (WebException ex)
            {
                //Properly handling http errors here
                if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null)
                {
                    var resp = (HttpWebResponse) ex.Response;
                    switch (resp.StatusCode)
                    {
                        case HttpStatusCode.NotFound:
                            result = "eror";
                            statusCode = 404;
                            break;
                        case HttpStatusCode.Forbidden:
                            result = "error";
                            statusCode = 403;
                            break;
                        case HttpStatusCode.InternalServerError:
                            result = "error";
                            statusCode = 500;
                            break;
                    }
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
                if (Debugger.IsAttached) Debugger.Break();
            }
            finally
            {
                // general cleanup
                if (reader != null)
                {
                    reader.Close(); //closes the reader and the response stream it was working on at the same time.
                }
            }

            return Tuple.Create(result, statusCode);
        }
Esempio n. 14
0
        public override IPermission Union(IPermission target)
        {
            if (target == null)
            {
                return(this.Copy());
            }
            WebPermission permission = target as WebPermission;

            if (permission == null)
            {
                throw new ArgumentException(SR.GetString("net_perm_target"), "target");
            }
            if (this.m_noRestriction || permission.m_noRestriction)
            {
                return(new WebPermission(true));
            }
            WebPermission permission2 = new WebPermission();

            if (this.m_UnrestrictedConnect || permission.m_UnrestrictedConnect)
            {
                permission2.m_UnrestrictedConnect = true;
            }
            else
            {
                permission2.m_connectList = (ArrayList)permission.m_connectList.Clone();
                for (int j = 0; j < this.m_connectList.Count; j++)
                {
                    DelayedRegex uriRegexPattern = this.m_connectList[j] as DelayedRegex;
                    if (uriRegexPattern == null)
                    {
                        if (this.m_connectList[j] is string)
                        {
                            permission2.AddPermission(NetworkAccess.Connect, (string)this.m_connectList[j]);
                        }
                        else
                        {
                            permission2.AddPermission(NetworkAccess.Connect, (Uri)this.m_connectList[j]);
                        }
                    }
                    else
                    {
                        permission2.AddAsPattern(NetworkAccess.Connect, uriRegexPattern);
                    }
                }
            }
            if (this.m_UnrestrictedAccept || permission.m_UnrestrictedAccept)
            {
                permission2.m_UnrestrictedAccept = true;
                return(permission2);
            }
            permission2.m_acceptList = (ArrayList)permission.m_acceptList.Clone();
            for (int i = 0; i < this.m_acceptList.Count; i++)
            {
                DelayedRegex regex2 = this.m_acceptList[i] as DelayedRegex;
                if (regex2 == null)
                {
                    if (this.m_acceptList[i] is string)
                    {
                        permission2.AddPermission(NetworkAccess.Accept, (string)this.m_acceptList[i]);
                    }
                    else
                    {
                        permission2.AddPermission(NetworkAccess.Accept, (Uri)this.m_acceptList[i]);
                    }
                }
                else
                {
                    permission2.AddAsPattern(NetworkAccess.Accept, regex2);
                }
            }
            return(permission2);
        }
Esempio n. 15
0
 /// <include file='doc\WebPermission.uex' path='docs/doc[@for="WebPermissionAttribute.CreatePermission"]/*' />
 public override IPermission CreatePermission()
 {
     WebPermission perm = null;
     if (Unrestricted) {
         perm = new WebPermission( PermissionState.Unrestricted);
     }
     else {
         perm = new WebPermission(PermissionState.None);
         if (m_accept != null) {
             if (m_accept is Regex) {
                 perm.AddPermission(NetworkAccess.Accept, (Regex)m_accept);
             }
             else {
                 perm.AddPermission(NetworkAccess.Accept, m_accept.ToString());
             }
         }
         if (m_connect != null) {
             if (m_connect is Regex) {
                 perm.AddPermission(NetworkAccess.Connect, (Regex)m_connect);
             }
             else {
                 perm.AddPermission(NetworkAccess.Connect, m_connect.ToString());
             }
         }
     }
     return perm;
 }
Esempio n. 16
0
        // The union of two web permissions is formed by concatenating
        // the list of allowed regular expressions. There is no check
        // for duplicates/overlaps
        /// <devdoc>
        /// <para>Returns the logical union between two <see cref='System.Net.WebPermission'/> instances.</para>
        /// </devdoc>
        public override IPermission Union(IPermission target)
        {
            // Pattern suggested by Security engine
            if (target == null)
            {
                return(this.Copy());
            }
            WebPermission other = target as WebPermission;

            if (other == null)
            {
                throw new ArgumentException(SR.GetString(SR.net_perm_target), "target");
            }

            if (m_noRestriction || other.m_noRestriction)
            {
                return(new WebPermission(true));
            }

            WebPermission result = new WebPermission();

            if (m_UnrestrictedConnect || other.m_UnrestrictedConnect)
            {
                result.m_UnrestrictedConnect = true;
            }
            else
            {
                result.m_connectList = (ArrayList)other.m_connectList.Clone();

                for (int i = 0; i < m_connectList.Count; i++)
                {
                    DelayedRegex uriPattern = m_connectList[i] as DelayedRegex;
                    if (uriPattern == null)
                    {
                        if (m_connectList[i] is string)
                        {
                            result.AddPermission(NetworkAccess.Connect, (string)m_connectList[i]);
                        }
                        else
                        {
                            result.AddPermission(NetworkAccess.Connect, (Uri)m_connectList[i]);
                        }
                    }
                    else
                    {
                        result.AddAsPattern(NetworkAccess.Connect, uriPattern);
                    }
                }
            }

            if (m_UnrestrictedAccept || other.m_UnrestrictedAccept)
            {
                result.m_UnrestrictedAccept = true;
            }
            else
            {
                result.m_acceptList = (ArrayList)other.m_acceptList.Clone();

                for (int i = 0; i < m_acceptList.Count; i++)
                {
                    DelayedRegex uriPattern = m_acceptList[i] as DelayedRegex;
                    if (uriPattern == null)
                    {
                        if (m_acceptList[i] is string)
                        {
                            result.AddPermission(NetworkAccess.Accept, (string)m_acceptList[i]);
                        }
                        else
                        {
                            result.AddPermission(NetworkAccess.Accept, (Uri)m_acceptList[i]);
                        }
                    }
                    else
                    {
                        result.AddAsPattern(NetworkAccess.Accept, uriPattern);
                    }
                }
            }

            return(result);
        }
Esempio n. 17
0
        // The union of two web permissions is formed by concatenating
        // the list of allowed regular expressions. There is no check
        // for duplicates/overlaps
        /// <devdoc>
        /// <para>Returns the logical union between two <see cref='System.Net.WebPermission'/> instances.</para>
        /// </devdoc>
        public override IPermission Union(IPermission target) {
            // Pattern suggested by Security engine
            if (target==null) {
                return this.Copy();
            }
            WebPermission other = target as WebPermission;
            if(other == null) {
                throw new ArgumentException(SR.GetString(SR.net_perm_target), "target");
            }

            if (m_noRestriction || other.m_noRestriction)
            {
                return new WebPermission(true);
            }

            WebPermission result = new WebPermission();

            if (m_UnrestrictedConnect || other.m_UnrestrictedConnect)
            {
                result.m_UnrestrictedConnect = true;
            }
            else
            {
                result.m_connectList = (ArrayList) other.m_connectList.Clone();

                for (int i = 0; i < m_connectList.Count; i++) {
                    DelayedRegex uriPattern = m_connectList[i] as DelayedRegex;
                    if(uriPattern == null)
                        if (m_connectList[i] is string)
                            result.AddPermission(NetworkAccess.Connect, (string)m_connectList[i]);
                        else
                            result.AddPermission(NetworkAccess.Connect, (Uri)m_connectList[i]);
                    else
                        result.AddAsPattern(NetworkAccess.Connect, uriPattern);
                }
            }

            if (m_UnrestrictedAccept || other.m_UnrestrictedAccept)
            {
                result.m_UnrestrictedAccept = true;
            }
            else
            {
                result.m_acceptList = (ArrayList) other.m_acceptList.Clone();

                for (int i = 0; i < m_acceptList.Count; i++) {
                    DelayedRegex uriPattern = m_acceptList[i] as DelayedRegex;
                    if(uriPattern == null)
                        if (m_acceptList[i] is string)
                            result.AddPermission(NetworkAccess.Accept, (string)m_acceptList[i]);
                        else
                            result.AddPermission(NetworkAccess.Accept, (Uri)m_acceptList[i]);
                    else
                        result.AddAsPattern(NetworkAccess.Accept, uriPattern);
                }
            }

            return result;
        }
Esempio n. 18
0
/*
        public bool ConnectAll
        {
            get
            {
                return m_connect is bool ? (bool) m_connect : false;
            }

            set
            {
                if (m_connect != null)
                {
                    throw new ArgumentException(SR.GetString(SR.net_perm_attrib_multi, "ConnectAll", value), "value");
                }
                m_connect = value;
            }
        }

        public bool AcceptAll
        {
            get
            {
                return m_accept is bool ? (bool) m_accept : false;
            }

            set
            {
                if (m_accept != null)
                {
                    throw new ArgumentException(SR.GetString(SR.net_perm_attrib_multi, "AcceptAll", value), "value");
                }
                m_accept = value;
            }
        }
*/

        public override IPermission CreatePermission()
        {
            WebPermission perm = null;
            if (Unrestricted) {
                perm = new WebPermission( PermissionState.Unrestricted);
            }
            else {
                NetworkAccess access = (NetworkAccess) 0;
                if (m_connect is bool)
                {
                    if ((bool) m_connect)
                    {
                        access |= NetworkAccess.Connect;
                    }
                    m_connect = null;
                }
                if (m_accept is bool)
                {
                    if ((bool) m_accept)
                    {
                        access |= NetworkAccess.Accept;
                    }
                    m_accept = null;
                }
                perm = new WebPermission(access);
                if (m_accept != null) {
                    if (m_accept is DelayedRegex) {
                        perm.AddAsPattern(NetworkAccess.Accept, (DelayedRegex)m_accept);
                    }
                    else {
                        perm.AddPermission(NetworkAccess.Accept, (string)m_accept);
                    }
                }
                if (m_connect != null) {
                    if (m_connect is DelayedRegex) {
                        perm.AddAsPattern(NetworkAccess.Connect, (DelayedRegex)m_connect);
                    }
                    else {
                        perm.AddPermission(NetworkAccess.Connect, (string)m_connect);
                    }
                }
            }
            return perm;
        }