| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- //
- // System.Net.WebPermissionAttribute.cs
- //
- // Author:
- // Andreas Nahr ([email protected])
- //
- // (C) 2003 Andreas Nahr
- //
- using System;
- using System.Security;
- using System.Security.Permissions;using System.Text.RegularExpressions;
- namespace System.Net
- {
- [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class
- | AttributeTargets.Struct | AttributeTargets.Constructor
- | AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
- [Serializable]
- public sealed class WebPermissionAttribute : CodeAccessSecurityAttribute
- {
- // Fields
- object m_accept;
- object m_connect;
- // Constructors
- public WebPermissionAttribute (SecurityAction action) : base (action)
- {
- }
- // Properties
- public string Accept {
- get { return m_accept.ToString (); }
- set {
- if (m_accept != null)
- throw new ArgumentException ("The parameter 'Accept' can be set only once.");
- if (value == null)
- throw new ArgumentException ("The parameter 'Accept' cannot be null.");
- m_accept = value;
- }
- }
- public string AcceptPattern {
- get { return m_accept.ToString (); }
- set {
- if (m_accept != null)
- throw new ArgumentException ("The parameter 'Accept' can be set only once.");
- if (value == null)
- throw new ArgumentException ("The parameter 'Accept' cannot be null.");
- m_accept = new Regex (value, RegexOptions.IgnoreCase);
- }
- }
- public string Connect {
- get { return m_connect.ToString (); }
- set {
- if (m_connect != null)
- throw new ArgumentException ("The parameter 'Connect' can be set only once.");
- if (value == null)
- throw new ArgumentException ("The parameter 'Connect' cannot be null.");
- m_connect = value;
- }
- }
- public string ConnectPattern {
- get { return m_connect.ToString (); }
- set {
- if (m_connect != null)
- throw new ArgumentException ("The parameter 'Connect' can be set only once.");
- if (value == null)
- throw new ArgumentException ("The parameter 'Connect' cannot be null.");
- m_connect = new Regex (value, RegexOptions.IgnoreCase);
- }
- }
- // Methods
- public override IPermission CreatePermission ()
- {
- if (this.Unrestricted)
- return new WebPermission (PermissionState.Unrestricted);
- WebPermission newPermission = new WebPermission ();
- if (m_accept != null)
- {
- if (m_accept is Regex)
- newPermission.AddPermission (NetworkAccess.Accept, (Regex)m_accept);
- else
- newPermission.AddPermission (NetworkAccess.Accept, (string)m_accept);
- }
- if (m_connect != null)
- {
- if (m_connect is Regex)
- newPermission.AddPermission (NetworkAccess.Connect, (Regex)m_connect);
- else
- newPermission.AddPermission (NetworkAccess.Connect, (string)m_connect);
- }
- return newPermission;
- }
- }
- }
|