コード例 #1
0
        private WebSiteResponse LoadPage(string url)
        {
            WebSiteResponse webSiteResponse = new WebSiteResponse();

            try
            {
                HttpWebRequest  request  = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                if (response.StatusCode == HttpStatusCode.OK)
                {
                    var          streamResponse = response.GetResponseStream();
                    StreamReader stream         = new StreamReader(streamResponse);
                    string       result         = stream.ReadToEnd();
                    webSiteResponse.Html = result;
                    webSiteResponse.Code = response.StatusCode;
                }
                else
                {
                    webSiteResponse.Code = response.StatusCode;
                }
            }
            catch (WebException exception)
            {
                webSiteResponse.Code = ((HttpWebResponse)exception.Response).StatusCode;
            }
            catch (Exception)
            {
                throw new Exception("Unknown errore!");
            }
            return(webSiteResponse);
        }
コード例 #2
0
        private WebSiteResponse GetWebDocument(string url, string username, string password)
        {
            WebSiteResponse result = new WebSiteResponse();
            HttpWebResponse resp   = null;
            StringBuilder   sb     = new StringBuilder();

            try
            {
                WebRequest req = WebRequest.Create(url);

                // set site credentials if required
                if (!String.IsNullOrEmpty(username))
                {
                    req.Credentials = new NetworkCredential(username, password);
                }

                resp = (HttpWebResponse)req.GetResponse();
                Stream   respStream = resp.GetResponseStream();
                string   charSet    = !String.IsNullOrEmpty(resp.CharacterSet) ? resp.CharacterSet : "utf-8";
                Encoding encode     = System.Text.Encoding.GetEncoding(charSet);

                StreamReader sr = new StreamReader(respStream, encode);

                Char[] read  = new Char[256];
                int    count = sr.Read(read, 0, 256);

                while (count > 0)
                {
                    String str = new String(read, 0, count);
                    sb.Append(str);
                    count = sr.Read(read, 0, 256);
                }

                result.Status = (int)resp.StatusCode;
                result.Text   = sb.ToString();
            }
            catch (WebException ex)
            {
                result.Status = (int)((HttpWebResponse)ex.Response).StatusCode;
                result.Text   = ex.ToString();
                TaskManager.WriteError(ex.ToString());
            }
            catch (Exception ex)
            {
                result.Status = -1;
                result.Text   = ex.ToString();
                TaskManager.WriteError(ex.ToString());
            }
            finally
            {
                if (resp != null)
                {
                    resp.Close();
                }
            }

            return(result);
        }
コード例 #3
0
ファイル: WebSite.cs プロジェクト: LipkeGu/Netvision
        public WebSite(Netvision.Backend.Backend backend)
        {
            websitehub = new WebSiteHub(this);
            websitehub.WebSiteHubResponse += (sender, e) =>
            {
                var evArgs = new WebSiteResponseEventArgs();
                evArgs.Context  = e.Context;
                evArgs.Response = e.Response;

                WebSiteResponse?.Invoke(this, evArgs);
            };

            backend.WebSiteRequest += (sender, e) =>
            {
                var evArgs = new WebSiteHubRequestEventArgs();
                evArgs.Context    = e.Context;
                evArgs.Parameters = e.Parameters;

                WebSiteHubRequest?.Invoke(this, evArgs);
            };
        }
コード例 #4
0
        public override void DoWork()
        {
            // Input parameters:
            //  - URL
            //  - USERNAME
            //  - PASSWORD
            //  - RESPONSE_STATUS
            //  - RESPONSE_CONTAIN
            //  - RESPONSE_DOESNT_CONTAIN
            //  - MAIL_FROM
            //  - MAIL_TO
            //  - MAIL_SUBJECT
            //  - MAIL_BODY

            BackgroundTask topTask = TaskManager.TopTask;

            // get input parameters
            string url                 = (string)topTask.GetParamValue("URL");
            string username            = (string)topTask.GetParamValue("USERNAME");
            string password            = (string)topTask.GetParamValue("PASSWORD");
            string strResponseStatus   = (string)topTask.GetParamValue("RESPONSE_STATUS");
            string responseContains    = (string)topTask.GetParamValue("RESPONSE_CONTAIN");
            string responseNotContains = (string)topTask.GetParamValue("RESPONSE_DOESNT_CONTAIN");

            bool useResponseStatus        = Convert.ToBoolean(topTask.GetParamValue("USE_RESPONSE_STATUS"));
            bool useResponseContains      = Convert.ToBoolean(topTask.GetParamValue("USE_RESPONSE_CONTAIN"));
            bool useResponseDoesntContain = Convert.ToBoolean(topTask.GetParamValue("USE_RESPONSE_DOESNT_CONTAIN"));

            // check input parameters
            if (String.IsNullOrEmpty(url))
            {
                TaskManager.WriteWarning("Specify 'Web Site URL' task parameter.");
                return;
            }

            if ((String.IsNullOrEmpty(strResponseStatus) || !useResponseStatus) &&
                (String.IsNullOrEmpty(responseContains) || !useResponseContains) &&
                (String.IsNullOrEmpty(responseNotContains) || !useResponseDoesntContain))
            {
                TaskManager.WriteWarning("Specify one of 'Response Status', 'Response Contain' or 'Response Doesn't Contain' parameters.");
                return;
            }

            int responseStatus = Utils.ParseInt(strResponseStatus, -1);

            if (!String.IsNullOrEmpty(strResponseStatus) && responseStatus == -1)
            {
                TaskManager.WriteWarning("Specify correct response HTTP status, e.g. 404, 500, 503, etc.");
                return;
            }

            // load web site
            WebSiteResponse resp = GetWebDocument(url, username, password);

            // check if there was a generic error
            if (resp.Status == -1)
            {
                SendMailMessage(url, resp.Text, "");
            }

            bool sendMessage = false;

            // check status
            if (responseStatus != -1)
            {
                sendMessage |= ((resp.Status == responseStatus) && useResponseStatus);
            }

            // check "contains"
            if (!String.IsNullOrEmpty(responseContains))
            {
                sendMessage |= ((resp.Text.ToLower().IndexOf(responseContains.ToLower()) != -1) && useResponseContains);
            }

            // check "not contains"
            if (!String.IsNullOrEmpty(responseNotContains))
            {
                sendMessage |= ((resp.Text.ToLower().IndexOf(responseNotContains.ToLower()) == -1) && useResponseDoesntContain);
            }

            if (sendMessage)
            {
                SendMailMessage(url, "", resp.Text);
            }
        }
コード例 #5
0
        private WebSiteResponse GetWebDocument(string url, string username, string password)
        {
            WebSiteResponse result     = new WebSiteResponse();
            HttpWebResponse resp       = null;
            StringBuilder   sb         = new StringBuilder();
            Stream          respStream = null;

            try
            {
                // Enable TLS1.2 support if its https
                if (url.StartsWith("https://"))
                {
                    TaskManager.Write("Identified as SSL Website");
                    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
                }

                WebRequest req = WebRequest.Create(url);

                // set site credentials if required
                if (!String.IsNullOrEmpty(username))
                {
                    req.Credentials = new NetworkCredential(username, password);
                }

                resp       = (HttpWebResponse)req.GetResponse();
                respStream = resp.GetResponseStream();
                string   charSet = !String.IsNullOrEmpty(resp.CharacterSet) ? resp.CharacterSet : "utf-8";
                Encoding encode  = System.Text.Encoding.GetEncoding(charSet);

                StreamReader sr = new StreamReader(respStream, encode);

                Char[] read  = new Char[256];
                int    count = sr.Read(read, 0, 256);

                while (count > 0)
                {
                    String str = new String(read, 0, count);
                    sb.Append(str);
                    count = sr.Read(read, 0, 256);
                }

                result.Status = (int)resp.StatusCode;
                result.Text   = sb.ToString();
            }
            catch (ThreadAbortException)
            {
            }
            catch (WebException ex)
            {
                result.Status = (int)((HttpWebResponse)ex.Response).StatusCode;
                result.Text   = ex.ToString();
                TaskManager.WriteError(ex.ToString());
            }
            catch (Exception ex)
            {
                result.Status = -1;
                result.Text   = ex.ToString();
                TaskManager.WriteError(ex.ToString());
            }
            finally
            {
                if (respStream != null)
                {
                    respStream.Close();
                }

                if (resp != null)
                {
                    resp.Close();
                }
            }

            return(result);
        }
コード例 #6
0
        private WebSiteResponse GetWebDocument(string url, string username, string password)
        {
            WebSiteResponse result = new WebSiteResponse();
            HttpWebResponse resp = null;
            StringBuilder sb = new StringBuilder();
            try
            {
                WebRequest req = WebRequest.Create(url);

                // set site credentials if required
                if (!String.IsNullOrEmpty(username))
                {
                    req.Credentials = new NetworkCredential(username, password);
                }

                resp = (HttpWebResponse)req.GetResponse();
                Stream respStream = resp.GetResponseStream();
                string charSet = !String.IsNullOrEmpty(resp.CharacterSet) ? resp.CharacterSet : "utf-8";
                Encoding encode = System.Text.Encoding.GetEncoding(charSet);

                StreamReader sr = new StreamReader(respStream, encode);

                Char[] read = new Char[256];
                int count = sr.Read(read, 0, 256);

                while (count > 0)
                {
                    String str = new String(read, 0, count);
                    sb.Append(str);
                    count = sr.Read(read, 0, 256);
                }

                result.Status = (int)resp.StatusCode;
                result.Text = sb.ToString();
            }
            catch (WebException ex)
            {
                result.Status = (int)((HttpWebResponse)ex.Response).StatusCode;
                result.Text = ex.ToString();
                TaskManager.WriteError(ex.ToString());
            }
            catch (Exception ex)
            {
                result.Status = -1;
                result.Text = ex.ToString();
                TaskManager.WriteError(ex.ToString());
            }
            finally
            {
                if (resp != null)
                {
                    resp.Close();
                }
            }

            return result;
        }