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); }
public static void CheckAcceptPermission(string uriToCheck) { WebPermission permissionToCheck = new WebPermission(); permissionToCheck.AddPermission(NetworkAccess.Accept, uriToCheck); permissionToCheck.Demand(); }
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> }
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> }
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); }
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> }
//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)); }
}// 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
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)); }
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)); }