private static void GetPermissions() { if (!m_Initialized) { //test RelectionPermission CodeAccessPermission securityTest; try { securityTest = new ReflectionPermission(PermissionState.Unrestricted); securityTest.Demand(); m_ReflectionPermission = true; } catch { //code access security error m_ReflectionPermission = false; } //test WebPermission try { securityTest = new WebPermission(PermissionState.Unrestricted); securityTest.Demand(); m_WebPermission = true; } catch { //code access security error m_WebPermission = false; } //test WebHosting Permission (Full Trust) try { securityTest = new AspNetHostingPermission(AspNetHostingPermissionLevel.Unrestricted); securityTest.Demand(); m_AspNetHostingPermission = true; } catch { //code access security error m_AspNetHostingPermission = false; } m_Initialized = true; //Test for Unmanaged Code permission try { securityTest = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode); securityTest.Demand(); m_UnManagedCodePermission = true; } catch (Exception) { m_UnManagedCodePermission = false; } } }
public void CreatePermission_InvalidRegex() { WebPermissionAttribute a = new WebPermissionAttribute(SecurityAction.Assert); a.AcceptPattern = "\b(?"; // invalid regex expression a.ConnectPattern = "\b(?"; // invalid regex expression WebPermission wp = (WebPermission)a.CreatePermission(); Assert.IsNotNull(wp, "CreatePermission"); }
internal CWebPermControls(IPermission perm, Object oParent) : base(perm, oParent) { // If they don't have a permission for this permission set, we will // feed our property page a 'none' permission state. if (perm == null) { m_perm = new WebPermission(PermissionState.None); } }// CWebPermControls
public void Default() { WebPermissionAttribute a = new WebPermissionAttribute(SecurityAction.Assert); Assert.AreEqual(a.ToString(), a.TypeId.ToString(), "TypeId"); Assert.IsFalse(a.Unrestricted, "Unrestricted"); WebPermission wp = (WebPermission)a.CreatePermission(); Assert.IsFalse(wp.IsUnrestricted(), "IsUnrestricted"); }
private static bool CheckWebPermission() { try { WebPermission unrestricted = new WebPermission(PermissionState.Unrestricted); unrestricted.Demand(); } catch { return(false); } return(true); }
public void Unrestricted() { WebPermissionAttribute a = new WebPermissionAttribute(SecurityAction.Assert); a.Unrestricted = true; WebPermission wp = (WebPermission)a.CreatePermission(); Assert.IsTrue(wp.IsUnrestricted(), "IsUnrestricted"); a.Unrestricted = false; wp = (WebPermission)a.CreatePermission(); Assert.IsFalse(wp.IsUnrestricted(), "!IsUnrestricted"); }
public void Serialization() { #if NET_4_0 string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" + "version=\"1\">\n" + "<ConnectAccess>\n" + "<URI uri=\"Hello\"/>\n" + "</ConnectAccess>\n" + "</IPermission>\n"; string result2 = "<IPermission class=\"System.Net.WebPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" + "version=\"1\">\n" + "<AcceptAccess>\n" + "<URI uri=\"Hello\"/>\n" + "</AcceptAccess>\n" + "</IPermission>\n"; #elif MOBILE string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=79439ffc308aa6a0\"\n" + "version=\"1\">\n" + "<ConnectAccess>\n" + "<URI uri=\"Hello\"/>\n" + "</ConnectAccess>\n" + "</IPermission>\n"; string result2 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=79439ffc308aa6a0\"\n" + "version=\"1\">\n" + "<AcceptAccess>\n" + "<URI uri=\"Hello\"/>\n" + "</AcceptAccess>\n" + "</IPermission>\n"; #else string result1 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" + "version=\"1\">\n" + "<ConnectAccess>\n" + "<URI uri=\"Hello\"/>\n" + "</ConnectAccess>\n" + "</IPermission>\n"; string result2 = "<IPermission class=\"System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"\n" + "version=\"1\">\n" + "<AcceptAccess>\n" + "<URI uri=\"Hello\"/>\n" + "</AcceptAccess>\n" + "</IPermission>\n"; #endif WebPermission pp = new WebPermission(NetworkAccess.Connect, "Hello"); Assert.AreEqual(result1, pp.ToXml().ToString().Replace("\r", "")); pp = new WebPermission(NetworkAccess.Accept, "Hello"); Assert.AreEqual(result2, pp.ToXml().ToString().Replace("\r", "")); }
public static void InsertLatestStockPrice(string symbol) { try { PermissionSet perms = new PermissionSet(PermissionState.None); string url = "http://finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=sl1d1t1c1ov"; WebPermission webPerm = new WebPermission(NetworkAccess.Connect, url); perms.AddPermission(webPerm); SqlClientPermission sqlPerm = new SqlClientPermission( PermissionState.None); sqlPerm.Add("context connection=true", "", KeyRestrictionBehavior.AllowOnly); perms.AddPermission(sqlPerm); perms.PermitOnly(); string[] data = HttpFileReader.ReadFile(url); string[] cols = data[0].Split(new char[] { ',' }); string date = cols[2].Substring(1, cols[2].Length - 2); string time = cols[3].Substring(1, cols[3].Length - 2); DateTime tradetime = DateTime.Parse(date + " " + time); double price = Double.Parse(cols[1]); double change = Double.Parse(cols[4]); SqlDouble openprice = cols[5] == "N/A" ? SqlDouble.Null : SqlDouble.Parse(cols[5]); int volume = Int32.Parse(cols[6]); using (SqlConnection cn = new SqlConnection("context connection=true")) { cn.Open(); string cmdStr = "INSERT INTO StockPrices VALUES (@symbol, @price, @tradetime, @change, @openprice, @volume)"; SqlCommand cmd = new SqlCommand(cmdStr, cn); cmd.Parameters.AddWithValue("@symbol", symbol); cmd.Parameters.AddWithValue("@price", price); cmd.Parameters.AddWithValue("@tradetime", tradetime); cmd.Parameters.AddWithValue("@change", change); cmd.Parameters.AddWithValue("@openprice", openprice); cmd.Parameters.AddWithValue("@volume", volume); cmd.ExecuteNonQuery(); } } catch (Exception e) { SqlPipe pipe = SqlContext.Pipe; pipe.Send(e.Message); } }
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 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> }
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); }
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); } }
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 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> }
//============================== // 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> }
internal static PermissionSet ExtractAppDomainPermissionSetMinusSiteOfOrigin() { PermissionSet permissionSet = AppDomain.CurrentDomain.PermissionSet; Uri siteOfOrigin = SiteOfOriginContainer.SiteOfOrigin; CodeAccessPermission codeAccessPermission = null; if (siteOfOrigin.Scheme == Uri.UriSchemeFile) { codeAccessPermission = new FileIOPermission(PermissionState.Unrestricted); } else if (siteOfOrigin.Scheme == Uri.UriSchemeHttp) { codeAccessPermission = new WebPermission(PermissionState.Unrestricted); } if (codeAccessPermission != null && permissionSet.GetPermission(codeAccessPermission.GetType()) != null) { permissionSet.RemovePermission(codeAccessPermission.GetType()); } return(permissionSet); }
/// <summary> /// Richiesta HTTP --> GET, tiene in considerazione i protocolli di sicurezza, il redirect e la cache. /// <para>Wiki : https://github.com/cTraderGURU/cTrader-GURU-Utility/wiki/Browser.GET() </para> /// </summary> /// <returns> /// Restituisce il source della pagina /// </returns> /// <param name="url">L'indirizzo della pagina per la richiesta</param> /// <param name="nocache">Effettua la richiesta con parametro aggiuntivo mutevole</param> /// <param name="useragent">User-Agent personalizzato</param> public static string GET(string url, bool nocache = true, string useragent = "cTrader GURU") { string responseInString = ""; // --> Richiesta originale senza cache ? if (nocache) { url = AddGetParamToUrl(url, "t", DateTime.Now.ToString("yyyyMMddHHmmssffff")); } // --> Mi servono i permessi di sicurezza per il dominio, compreso i redirect Uri myuri = new Uri(url); string pattern = string.Format("{0}://{1}/.*", myuri.Scheme, myuri.Host); // --> Autorizzo tutte le pagine di questo dominio Regex urlRegEx = new Regex(@pattern); WebPermission p = new WebPermission(NetworkAccess.Connect, urlRegEx); p.Assert(); // --> Protocollo di sicurezza https:// ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; // --> Prelevo la pagina e la restituisco using (var wb = new WebClient()) { wb.Headers.Add("User-Agent", useragent); wb.Encoding = Encoding.UTF8; responseInString = wb.DownloadString(myuri); // --> responseInString = Encoding.UTF8.GetString(wb.DownloadData(url)); } return(responseInString); }
public void CreateRegexConstructor() { // <Snippet1> // Create an instance of 'Regex' that accepts all URL's containing the host // fragment 'www.contoso.com'. Regex myRegex = new Regex(@"http://www\.contoso\.com/.*"); // Create a WebPermission that gives the permissions to all the hosts containing // the same fragment. WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect, myRegex); // Checks all callers higher in the call stack have been granted the permission. myWebPermission.Demand(); // </Snippet1> Console.WriteLine("Attribute and Values of WebPermission are : \n"); // Display the Attributes,Values and Children of the XML encoded copied instance. PrintKeysAndValues(myWebPermission.ToXml().Attributes, myWebPermission.ToXml().Children); }
// NOTE: To test, replace www.contoso.com w/ the local string //<snippet1> public static Object GetFile(String fileURL, XmlResolver resolver) { // Generate the default PermissionSet using the file URL. Evidence evidence = XmlSecureResolver.CreateEvidenceForUrl(fileURL); PermissionSet myPermissions = SecurityManager.ResolvePolicy(evidence); // Modify the PermissionSet to only allow access to http://www.contoso.com. // Create a WebPermission which only allows access to http://www.contoso.com. WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect, "http://www.contoso.com"); // Replace the existing WebPermission in myPermissions with the updated WebPermission. myPermissions.SetPermission(myWebPermission); // Use the modified PermissionSet to construct the XmlSecureResolver. XmlSecureResolver sResolver = new XmlSecureResolver(resolver, myPermissions); // Get the object. Uri fullUri = sResolver.ResolveUri(null, fileURL); return(sResolver.GetEntity(fullUri, null, null)); }
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> }
internal static PermissionSet ExtractAppDomainPermissionSetMinusSiteOfOrigin() { #if NETFX PermissionSet permissionSetAppDomain = AppDomain.CurrentDomain.PermissionSet; #else PermissionSet permissionSetAppDomain = new PermissionSet(PermissionState.Unrestricted); #endif // Ensure we remove the FileIO read permission to site of origin. // We choose to use unrestricted here because it does not matter // matter which specific variant of Fileio/Web permission we use // since we are using an overload to check and remove permission // that works on type. There is not a way to remove some // part of a permission, although we could remove this and add // back the delta if the existing permission set had more than the ones // we care about but it is really the path we are targeting here since // that is what causes the delta and hence we are removing it all together. Uri siteOfOrigin = SiteOfOriginContainer.SiteOfOrigin; CodeAccessPermission siteOfOriginReadPermission = null; if (siteOfOrigin.Scheme == Uri.UriSchemeFile) { siteOfOriginReadPermission = new FileIOPermission(PermissionState.Unrestricted); } else if (siteOfOrigin.Scheme == Uri.UriSchemeHttp) { siteOfOriginReadPermission = new WebPermission(PermissionState.Unrestricted); } if (siteOfOriginReadPermission != null) { if (permissionSetAppDomain.GetPermission(siteOfOriginReadPermission.GetType()) != null) { permissionSetAppDomain.RemovePermission(siteOfOriginReadPermission.GetType()); // Failing on a ReadOnlyPermissionSet here? // (Ctrl+X to cut text in RichTextBox // in an XBAP throws InvalidOperationException) } } return(permissionSetAppDomain); }
public void OnPositionOpened(PositionOpenedEventArgs args) { // --> Condividiamo solo il cross corrente? if (OonlyThis && args.Position.SymbolName != SymbolName) { return; } double sl = (args.Position.StopLoss == null) ? 0 : (double)args.Position.StopLoss; double tp = (args.Position.TakeProfit == null) ? 0 : (double)args.Position.TakeProfit; string messageformat = string.Format(Message, args.Position.SymbolName, args.Position.TradeType, args.Position.EntryPrice, args.Position.Quantity, sl, tp); try { // --> Mi servono i permessi di sicurezza per il dominio, compreso i redirect Uri myuri = new Uri(Webhook); string pattern = string.Format("{0}://{1}/.*", myuri.Scheme, myuri.Host); // --> Autorizzo tutte le pagine di questo dominio Regex urlRegEx = new Regex(pattern); WebPermission p = new WebPermission(NetworkAccess.Connect, urlRegEx); p.Assert(); // --> Protocollo di sicurezza https:// ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(myuri, string.Format(PostParams, messageformat)); } } catch (Exception exc) { MessageBox.Show(string.Format("{0}\r\nstopping cBots 'Share Opened Trades To Webhook' ...", exc.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Stop(); } }
/// <summary> /// Download the requested bytes /// </summary> private HttpWebRequest CreateHttpWebRequest(int[,] byteRanges) { HttpWebRequest request; // Create the request object request = (HttpWebRequest)WpfWebRequestHelper.CreateRequest(_requestedUri); request.ProtocolVersion = HttpVersion.Version11; request.Method = "GET"; // Set the Proxy to Empty one; If we don't set this to empty one, it will try to find one for us // and ends up triggering JScript in another assembly. This will throw PolicyException since the JScript // dll doesn't have execution right. This is a bug in CLR; supposed to be fixed later // Future work: Need to keep consistent HTTP stack with the WININET one (e.g. authentication, proxy, cookies) // IWebProxy emptyProxy = GlobalProxySelection.GetEmptyWebProxy(); // request.Proxy = emptyProxy; // Local assert to allow Proxy get/set under partial trust new WebPermission(PermissionState.Unrestricted).Assert(); // Blessed try { request.Proxy = _proxy; } finally { WebPermission.RevertAssert(); } request.Credentials = _credentials; request.CachePolicy = _cachePolicy; // Add byte ranges (to header) for (int i = 0; i < byteRanges.GetLength(0); ++i) { request.AddRange(byteRanges[i, Offset_Index], byteRanges[i, Offset_Index] + byteRanges[i, Length_Index] - 1); } return(request); }
private HttpWebRequest CreateHttpWebRequest(int[,] byteRanges) { HttpWebRequest request; // Create the request object request = (HttpWebRequest)WpfWebRequestHelper.CreateRequest(_requestedUri); request.ProtocolVersion = HttpVersion.Version11; request.Method = "GET"; // Set the Proxy to Empty one; If we don't set this to empty one, it will try to find one for us // and ends up triggering JScript in another assembly. This will throw PolicyException since the JScript // dll doesn't have execution right. This is // Local assert to allow Proxy get/set under partial trust new WebPermission(PermissionState.Unrestricted).Assert(); // Blessed try { request.Proxy = _proxy; } finally { WebPermission.RevertAssert(); } request.Credentials = _credentials; request.CachePolicy = _cachePolicy; // Add byte ranges (to header) for (int i = 0; i < byteRanges.GetLength(0); ++i) { request.AddRange(byteRanges[i, Offset_Index], byteRanges[i, Offset_Index] + byteRanges[i, Length_Index] - 1); } return(request); }
public void _toWebHook(string custom = null) { if (!WebhookEnabled) { return; } string tmpMex = custom != null && custom.Length > 0 ? custom : "{0} : {1} breakout, Ask {2} / Bid {3}"; string messageformat = string.Format(tmpMex, NAME, SymbolName, string.Format("{0:N" + Symbol.Digits + "}", Ask), string.Format("{0:N" + Symbol.Digits + "}", Bid)); try { // --> Mi servono i permessi di sicurezza per il dominio, compreso i redirect Uri myuri = new Uri(Webhook); string pattern = string.Format("{0}://{1}/.*", myuri.Scheme, myuri.Host); // --> Autorizzo tutte le pagine di questo dominio Regex urlRegEx = new Regex(pattern); WebPermission p = new WebPermission(NetworkAccess.Connect, urlRegEx); p.Assert(); // --> Protocollo di sicurezza https:// ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(myuri, string.Format(PostParams, messageformat)); } } catch (Exception exc) { MessageBox.Show(string.Format("{0}\r\nstopping cBots 'TrendLine Power' ...", exc.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Stop(); } }
internal CWebPermDialog(WebPermission perm) { this.Text = CResourceStore.GetString("WebPerm:PermName"); m_PermControls = new CWebPermControls(perm, this); Init(); } // CWebPermDialog(WebPermission)
//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)); }
/// <summary> /// Richiede le informazioni del prodotto richiesto /// </summary> /// <param name="Request"></param> public API(RequestProductInfo Request) { RequestProduct = Request; // --> Non controllo se non ho l'ID del prodotto if (Request.MyProduct.ID <= 0) { return; } // --> Rendo disponibile il file del cookie _pathsetup = string.Format("{0}\\{1}.json", _mainpath, Request.MyProduct.ID); CookieInformation MySetup = new CookieInformation(); DateTime now = DateTime.Now; // --> Evito di chiamare il server se non sono passate almeno 24h try { string json = _loadSetup(); if (json != null && json.Trim().Length > 0) { json = json.Trim(); MySetup = JsonConvert.DeserializeObject <CookieInformation>(json); DateTime ExpireDate = MySetup.LastCheck.AddDays(1); // --> Impedisco di controllare se non è passato il tempo necessario if (now < ExpireDate) { ProductInfo.Exception = string.Format("Check for updates scheduled for {0}", ExpireDate.ToString()); return; } } } catch (Exception Exp) { // --> Setup corrotto ? resetto! _writeSetup(MySetup); // --> Se ci sono errori non controllo perchè non è gestito ed evito di sovraccaricare il server che mi bloccherebbe ProductInfo.Exception = Exp.Message; return; } // --> Dobbiamo supervisionare la chiamata per registrare l'eccexione try { // --> Strutturo le informazioni per la richiesta POST NameValueCollection data = new NameValueCollection { { "account_broker", Request.AccountBroker }, { "account_number", Request.AccountNumber.ToString() }, { "my_version", Request.MyProduct.Version }, { "productid", Request.MyProduct.ID.ToString() } }; // --> Autorizzo tutte le pagine di questo dominio Uri myuri = new Uri(Service); string pattern = string.Format("{0}://{1}/.*", myuri.Scheme, myuri.Host); Regex urlRegEx = new Regex(pattern); WebPermission p = new WebPermission(NetworkAccess.Connect, urlRegEx); p.Assert(); // --> Protocollo di sicurezza https:// ServicePointManager.SecurityProtocol = (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; // -->> Richiedo le informazioni al server using (var wb = new WebClient()) { wb.Headers.Add("User-Agent", UserAgent); var response = wb.UploadValues(myuri, "POST", data); ProductInfo.Source = Encoding.UTF8.GetString(response); } // -->>> Nel cBot necessita l'attivazione di "AccessRights = AccessRights.FullAccess" ProductInfo.LastProduct = JsonConvert.DeserializeObject <Product>(ProductInfo.Source); // --> Salviamo la sessione MySetup.LastCheck = now; _writeSetup(MySetup); } catch (Exception Exp) { // --> Qualcosa è andato storto, registro l'eccezione ProductInfo.Exception = Exp.Message; } }
[SuppressMessage("Microsoft.Security", "CA2103:ReviewImperativeSecurity")] // WebPermission based on URI path, but path isn't gonna change during scope of Demand private void LoadSync() { Debug.Assert((uri == null || !uri.IsFile), "we only load streams"); // first make sure that any possible download ended if (!semaphore.WaitOne(LoadTimeout, false)) { if (copyThread != null) { copyThread.Abort(); } CleanupStreamData(); throw new TimeoutException(SR.GetString(SR.SoundAPILoadTimedOut)); } // if we have data, then we are done if (streamData != null) { return; } // setup the http stream if (uri != null && !uri.IsFile && stream == null) { WebPermission webPerm = new WebPermission(NetworkAccess.Connect, uri.AbsolutePath); webPerm.Demand(); WebRequest webRequest = WebRequest.Create(uri); webRequest.Timeout = LoadTimeout; WebResponse webResponse; webResponse = webRequest.GetResponse(); // now get the stream stream = webResponse.GetResponseStream(); } if (stream.CanSeek) { // if we can get data synchronously, then get it LoadStream(true); } else { // the data can't be loaded synchronously // load it async, then wait for it to finish doesLoadAppearSynchronous = true; // to avoid OnFailed call. LoadStream(false); if (!semaphore.WaitOne(LoadTimeout, false)) { if (copyThread != null) { copyThread.Abort(); } CleanupStreamData(); throw new TimeoutException(SR.GetString(SR.SoundAPILoadTimedOut)); } doesLoadAppearSynchronous = false; if (lastLoadException != null) { throw lastLoadException; } } // we don't need the worker copyThread anymore this.copyThread = null; }
private void Window_Loaded(object sender, RoutedEventArgs e) { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; try { //demand WebPermissions. WebPermission wp = new WebPermission(); DnsPermission dperm = new DnsPermission(PermissionState.Unrestricted); dperm.Demand(); wp.Demand(); //dbase.DbConnection_Progress(); DbConnection getcon = dbase.GetConnection(); } catch (Exception exx) { //log the error. DataLayer.LogClient("Exception:" + exx.Message + " Stack Trace:" + exx.StackTrace); //show a message. dbase.WriteDebugMessage(DataLayer.GetExceptionData(exx)); MessageBox.Show(this, "Error Connecting to the Database:" + exx.Message); Close(); } OperatingMode = OperatingModeConstants.OpMode_PinEntry; //dbase = new DataLayer(DataLayer.ConnectionTypeConstants.Connection_Client); lstLogEntries.ItemsSource = MessageLog; //connect to the DB right NAU! WorkOrderEntry.MaxLength = dbase.Configuration.WorkOrderMaxLength; //make various items collapsed if the config calls for it... lstLogEntries.Visibility = !dbase.Configuration.Client_ShowActivityLog ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible; UserListExpander.Visibility = !dbase.Configuration.Client_ShowUserList ? System.Windows.Visibility.Collapsed : System.Windows.Visibility.Visible; lblLogEntry.Visibility = lstLogEntries.Visibility; if (dbase.Configuration.Client_PasswordPIN) { lblPIN.Visibility = System.Windows.Visibility.Collapsed; lblPINpass.Visibility = System.Windows.Visibility.Visible; } //now, bind lstLogEntries to the MESSAGELOG database... /* ObservableCollection<MessageActivityLogItem> GeneralLog = dbase.GetLogMessages("GENERAL"); * lstLogEntries.ItemsSource=GeneralLog;*/ //lstLogEntries VersionLabel.Content = GetVersionData(); //set the timer that will periodically (every 20 seconds or so) refresh the listbox. //the IDEAL case would be to use some sort of binding but...meh. refreshUserListTimer = new DispatcherTimer(); refreshUserListTimer.Interval = new TimeSpan(0, 0, 0, 30); refreshUserListTimer.Tick += new EventHandler(refreshUserListTimer_Tick); refreshUserListTimer.Start(); refreshUserListTimer_Tick(refreshUserListTimer, null); //now that there is the admin panel, the seeding code is unneeded :D try { //dbase.SeedDB(); } catch (Exception seedexception) { Debug.Print("Exception while seeding..."); } }