Ejemplo n.º 1
0
        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;
                }
            }
        }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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
Ejemplo n.º 4
0
        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");
        }
Ejemplo n.º 5
0
 private static bool CheckWebPermission()
 {
     try
     {
         WebPermission unrestricted = new WebPermission(PermissionState.Unrestricted);
         unrestricted.Demand();
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Ejemplo n.º 6
0
        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");
        }
Ejemplo n.º 7
0
        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", ""));
        }
Ejemplo n.º 8
0
        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>
    }
Ejemplo n.º 11
0
    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);
    }
Ejemplo n.º 12
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);
            }
        }
Ejemplo n.º 13
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>
    }
Ejemplo n.º 14
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>
    }
Ejemplo n.º 15
0
//==============================
//
    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>
    }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        /// <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);
        }
Ejemplo n.º 18
0
    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);
    }
Ejemplo n.º 19
0
    // 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));
    }
Ejemplo n.º 20
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>
    }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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();
            }
        }
Ejemplo n.º 23
0
        /// <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);
        }
Ejemplo n.º 24
0
        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);
        }
Ejemplo n.º 25
0
        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();
            }
        }
Ejemplo n.º 26
0
 internal CWebPermDialog(WebPermission perm)
 {
     this.Text      = CResourceStore.GetString("WebPerm:PermName");
     m_PermControls = new CWebPermControls(perm, this);
     Init();
 } // CWebPermDialog(WebPermission)
Ejemplo n.º 27
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));
        }
Ejemplo n.º 28
0
        /// <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;
            }
        }
Ejemplo n.º 29
0
        [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;
        }
Ejemplo n.º 30
0
        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...");
            }
        }