Beispiel #1
0
    public void CreateCopy()
    {
// <Snippet1>
        // Create a WebPermission instance.
        WebPermission myWebPermission1 = new WebPermission(PermissionState.None);

        // Allow access to the first set of URL's.
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.microsoft.com/default.htm");
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.msn.com");

        // Check whether all callers higher in the call stack have been granted the permissionor not.
        myWebPermission1.Demand();

// </Snippet1>

// <Snippet2>
        // Create another WebPermission instance that is the copy of the above WebPermission instance.
        WebPermission myWebPermission2 = (WebPermission)myWebPermission1.Copy();

        // Check whether all callers higher in the call stack have been granted the permissionor not.
        myWebPermission2.Demand();

// </Snippet2>
        Console.WriteLine("The Attributes and Values are :\n");
        // Display the Attributes,Values and Children of the XML encoded instance.
        PrintKeysAndValues(myWebPermission1.ToXml().Attributes, myWebPermission1.ToXml().Children);

        Console.WriteLine("\nCopied Instance Attributes and Values are :\n");
        // Display the Attributes,Values and Children of the XML encoded copied instance.
        PrintKeysAndValues(myWebPermission2.ToXml().Attributes, myWebPermission2.ToXml().Children);
    }
Beispiel #2
0
    public static void CheckAcceptPermission(string uriToCheck)
    {
        WebPermission permissionToCheck = new WebPermission();

        permissionToCheck.AddPermission(NetworkAccess.Accept, uriToCheck);
        permissionToCheck.Demand();
    }
Beispiel #3
0
        static void Main(string[] args)
        {
            //创建一个WebPermission实例,连接到本地
            WebPermission myWebPermissionnl = new WebPermission(NetworkAccess.Connect, "https://brushes8.com");

            myWebPermissionnl.Demand();
            //增加两个访问网络连接
            myWebPermissionnl.AddPermission(NetworkAccess.Connect, "http://www.baidu.com");
            myWebPermissionnl.AddPermission(NetworkAccess.Connect, "http://www.12315.cn");
            myWebPermissionnl.Demand();
            IEnumerator myEnum1 = myWebPermissionnl.ConnectList;

            Console.WriteLine("\n\nThe URIs with Accept permission are :\n");
            while (myEnum1.MoveNext())
            {
                Console.WriteLine("\tThe URI is : " + myEnum1.Current);
            }
        }
//==============================
//
    static void Use_PermissionSet()
    {
//<snippet4a>
        WebPermission myWebPermission = new WebPermission(PermissionState.None);

//</snippet4a>
//<snippet4b>
        myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/");
        myWebPermission.AddPermission(NetworkAccess.Connect, "http://litwareinc.com/data/");
//</snippet4b>
//<snippet4c>
        PermissionSet myPermissions = new PermissionSet(PermissionState.None);

        myPermissions.AddPermission(myWebPermission);
//</snippet4c>
//<snippet4d>
        XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myPermissions);
//</snippet4d>
    }
Beispiel #5
0
    public void CreateIntersect()
    {
// <Snippet1>
        // Create two WebPermission instances.
        WebPermission myWebPermission1 = new WebPermission();
        WebPermission myWebPermission2 = new WebPermission();

// <Snippet2>

        // Allow access to the first set of resources.
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.contoso.com/default.htm");
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.adventure-works.com/default.htm");

        // Check whether if the callers higher in the call stack have been granted
        // access permissions.
        myWebPermission1.Demand();

// </Snippet2>
        // Allow access right to the second set of resources.
        myWebPermission2.AddPermission(NetworkAccess.Connect, "http://www.alpineskihouse.com/default.htm");
        myWebPermission2.AddPermission(NetworkAccess.Connect, "http://www.baldwinmuseumofscience.com/default.htm");
        myWebPermission2.Demand();

// </Snippet1>

        // Display the attributes , values and childrens of the XML encoded instances.
        Console.WriteLine("Attributes and values of  first 'WebPermission' instance are :");
        PrintKeysAndValues(myWebPermission1.ToXml().Attributes, myWebPermission2.ToXml().Children);

        Console.WriteLine("\nAttributes and values of second 'WebPermission' instance are : ");
        PrintKeysAndValues(myWebPermission2.ToXml().Attributes, myWebPermission2.ToXml().Children);

// <Snippet3>

        // Create a third WebPermission instance via the logical intersection of the previous
        // two WebPermission instances.
        WebPermission myWebPermission3 = (WebPermission)myWebPermission1.Intersect(myWebPermission2);

        Console.WriteLine("\nAttributes and Values of  the WebPermission instance after the Intersect are:\n");
        Console.WriteLine(myWebPermission3.ToXml().ToString());

// </Snippet3>
    }
Beispiel #6
0
    public static void MySample()
    {
// <Snippet1>

        //  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
        Regex myRegex = new Regex(@"http://www\.contoso\.com/.*");

        // Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
        WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect, myRegex);

        //Add connect privileges for a www.adventure-works.com.
        myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.adventure-works.com");

        //Add accept privileges for www.alpineskihouse.com.
        myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/");

        // Check whether all callers higher in the call stack have been granted the permission.
        myWebPermission.Demand();

        // Get all the URIs with Connect permission.
        IEnumerator myConnectEnum = myWebPermission.ConnectList;

        Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
        while (myConnectEnum.MoveNext())
        {
            Console.WriteLine("\t" + myConnectEnum.Current);
        }

        // Get all the URIs with Accept permission.
        IEnumerator myAcceptEnum = myWebPermission.AcceptList;

        Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");

        while (myAcceptEnum.MoveNext())
        {
            Console.WriteLine("\t" + myAcceptEnum.Current);
        }

// </Snippet1>
    }
        public SecuritySettings()
        {
            SocketPermission = new SocketPermission(PermissionState.None);

            WebPermission = new WebPermission(PermissionState.None);
            foreach (var uri in  Config.Instance.SelectedProfile.InstalledAssemblies.Select(u => u.Location))
            {
                WebPermission.AddPermission(NetworkAccess.Connect, uri);
            }

            FileIoPermission = new FileIOPermission(PermissionState.None);
            FileIoPermission.AddPathList(FileIOPermissionAccess.Read | FileIOPermissionAccess.Write | FileIOPermissionAccess.Append, Directories.DataDirectory);

            MediaPermission = new MediaPermission(PermissionState.None);
        }
    public void CheckSubset()
    {
// <Snippet1>
        // Create a WebPermission.
        WebPermission myWebPermission1 = new WebPermission();

        // Allow Connect access to the specified URLs.
        myWebPermission1.AddPermission(NetworkAccess.Connect, new Regex("http://www\\.contoso\\.com/.*",
                                                                        RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline));

        myWebPermission1.Demand();

// </Snippet1>

        // Create another WebPermission with the specified URL.
        WebPermission myWebPermission2 = new WebPermission(NetworkAccess.Connect, "http://www.contoso.com");

        // Check whether all callers higher in the call stack have been granted the permission.
        myWebPermission2.Demand();

// <Snippet2>

        WebPermission myWebPermission3 = null;

        // Check which permissions have the Connect access to more number of URLs.
        if (myWebPermission2.IsSubsetOf(myWebPermission1))
        {
            Console.WriteLine("\n WebPermission2 is the Subset of WebPermission1\n");
            myWebPermission3 = myWebPermission1;
        }
        else if (myWebPermission1.IsSubsetOf(myWebPermission2))
        {
            Console.WriteLine("\n WebPermission1 is the Subset of WebPermission2");
            myWebPermission3 = myWebPermission2;
        }
        else
        {
            // Create the third permission.
            myWebPermission3 = (WebPermission)myWebPermission1.Union(myWebPermission2);
        }

// </Snippet2>
        // Prints the attributes , values and childrens of XML encoded instances.

        Console.WriteLine("\nAttributes and Values of third WebPermission instance are : ");
        PrintKeysAndValues(myWebPermission3.ToXml().Attributes, myWebPermission3.ToXml().Children);
    }
Beispiel #9
0
    public static void myIsSubsetExample()
    {
//<Snippet1>

        // Create the target permission.
        WebPermission targetPermission = new WebPermission();

        targetPermission.AddPermission(NetworkAccess.Connect, new Regex("www\\.contoso\\.com/Public/.*"));

        // Create the permission for a URI matching target.
        WebPermission connectPermission = new WebPermission();

        connectPermission.AddPermission(NetworkAccess.Connect, "www.contoso.com/Public/default.htm");

        //The following statement prints true.
        Console.WriteLine("Is the second URI a subset of the first one?: " + connectPermission.IsSubsetOf(targetPermission));

//</Snippet1>
    }
    public void DisplayAcceptConnect()
    {
        // Create a 'WebPermission' object with permission state set to 'None'.
        WebPermission myWebPermission1 = new WebPermission(PermissionState.None);

        // Allow 'Connect' access right to first set of URL's.
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.contoso.com");
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.adventure-works.com");
        myWebPermission1.AddPermission(NetworkAccess.Connect, "http://www.alpineskihouse.com");

        // Allow 'Accept' access right to second set of URL's.
        myWebPermission1.AddPermission(NetworkAccess.Accept, "http://www.contoso.com");
        myWebPermission1.AddPermission(NetworkAccess.Accept, "http://www.adventure-works.com");
        myWebPermission1.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com");

        // Check whether all callers higher in the call stack have been granted the permission or not.
        myWebPermission1.Demand();

        Console.WriteLine("The Attributes,Values and Children of the 'WebPermission' object are :\n");
        // Display the Attributes,Values and Children of the XML encoded instance.
        PrintKeysAndValues(myWebPermission1.ToXml().Attributes, myWebPermission1.ToXml().Children);

// <Snippet1>

        // Gets all URIs with Connect permission.
        IEnumerator myEnum = myWebPermission1.ConnectList;

        Console.WriteLine("\nThe URIs with Connect permission are :\n");
        while (myEnum.MoveNext())
        {
            Console.WriteLine("\tThe URI is : " + myEnum.Current);
        }

// </Snippet1>

// <Snippet2>

        // Get all URI's with Accept permission.
        IEnumerator myEnum1 = myWebPermission1.AcceptList;

        Console.WriteLine("\n\nThe URIs with Accept permission are :\n");
        while (myEnum1.MoveNext())
        {
            Console.WriteLine("\tThe URI is : " + myEnum1.Current);
        }

// </Snippet2>
    }
Beispiel #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)
            {
                Log.Warn("Web_Read", e);
            }
            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));
        }
Beispiel #12
0
        }// ValidateData

        internal override IPermission GetCurrentPermission()
        {
            // Change cells so we get data committed to the grid
            m_dg.CurrentCell = new DataGridCell(0, 1);
            m_dg.CurrentCell = new DataGridCell(0, 0);

            WebPermission perm = null;

            if (m_radUnrestricted.Checked == true)
            {
                perm = new WebPermission(PermissionState.Unrestricted);
            }
            else
            {
                perm = new WebPermission(PermissionState.None);

                for (int i = 0; i < m_dt.Rows.Count; i++)
                {
                    // Make sure we have a web permission to add
                    if (m_dg[i, 0] != DBNull.Value && ((String)m_dg[i, 0]).Length > 0)
                    {
                        String sHostname = (String)m_dg[i, 0];

                        // See if this hostname has Accept access
                        try
                        {
                            if ((bool)m_dg[i, 1])
                            {
                                perm.AddPermission(NetworkAccess.Accept, sHostname);
                            }

                            // See if this hostname has Connect access
                            if ((bool)m_dg[i, 2])
                            {
                                perm.AddPermission(NetworkAccess.Connect, sHostname);
                            }
                        }
                        catch (Exception)
                        {
                            MessageBox(String.Format(CResourceStore.GetString("WebPerm:BadHostName"), sHostname),
                                       CResourceStore.GetString("WebPerm:BadHostNameTitle"),
                                       MB.ICONEXCLAMATION);

                            m_dg.CurrentCell = new DataGridCell(i, 0);
                            return(null);
                        }
                    }
                    else
                    {
                        // if they checked a box, throw up a error dialog
                        if ((bool)m_dg[i, 1] || (bool)m_dg[i, 2])
                        {
                            MessageBox(CResourceStore.GetString("WebPerm:NeedHostName"),
                                       CResourceStore.GetString("WebPerm:NeedHostNameTitle"),
                                       MB.ICONEXCLAMATION);

                            m_dg.CurrentCell = new DataGridCell(i, 0);
                            return(null);
                        }
                    }
                }
            }
            return(perm);
        }// GetCurrentPermission
Beispiel #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));
        }
Beispiel #14
0
        internal Tuple <string, int> DoWebRequest(string url, int timeout = 0, string data = null)
        {
            int    statusCode = 0;
            string result     = "";

            try
            {
                Uri uriResult;
                if (!Uri.TryCreate(url, UriKind.Absolute, out uriResult) || (uriResult.Scheme != Uri.UriSchemeHttp && uriResult.Scheme != Uri.UriSchemeHttps))
                {
                    return(Tuple.Create("URL is in an invalid format", 0));
                }

                //asking for permission to call the specified url.
                result = "Failed Setting Web Permissions";
                var permission = new WebPermission();
                permission.AddPermission(NetworkAccess.Connect, url);
                permission.Assert();

                result = "Failed Constructing WebRequest";
                var request = WebRequest.Create(url);
                request.Timeout = (timeout == 0) ? request.Timeout : timeout;
                request.Headers["UserAgent"] = "OCTGN_" + Const.OctgnVersion.ToString() + "/" + Program.GameEngine.Definition.Name + "_" + Program.GameEngine.Definition.Version.ToString();
                request.Method = data == null ? "GET" : "POST";

                if (data != null)
                {
                    var byteArray = Encoding.UTF8.GetBytes(data);
                    request.ContentType   = "application/x-www-form-urlencoded";
                    request.ContentLength = byteArray.Length;

                    using (var webpageStream = request.GetRequestStream()) {
                        webpageStream.Write(byteArray, 0, byteArray.Length);
                    }
                }

                result = "Failed Making WebRequest";
                using (var response = (HttpWebResponse)request.GetResponse())
                    using (var grs = response.GetResponseStream()) {
                        if (grs == null)
                        {
                            return(Tuple.Create("Null Stream Error", 0));
                        }

                        using (var reader = new StreamReader(grs)) {
                            result = reader.ReadToEnd();

                            //if the response is empty it will officially return a 204 status code.
                            if (result.Length == 0)
                            {
                                return(Tuple.Create("No Content Error", 204));
                            }
                            statusCode = 200;
                        }
                    }
            } catch (WebException ex) {
                var resp = (HttpWebResponse)ex.Response;
                if (resp == null)
                {
                    result     = "Unknown Error: " + ex.ToString();
                    statusCode = 500;
                }
                else
                {
                    result     = "Error";
                    statusCode = (int)resp.StatusCode;
                }
            } catch (Exception e) {
                Log.Warn("Web_Read", e);
                result     = "Unknown Error: " + result + " " + e.ToString();
                statusCode = 500;
            }

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