Example #1
0
 /// <summary>
 /// StartCheckingUrl method receives a separate stream for each site and checks it for availability.
 /// </summary>
 /// <param name="obj"> An object with all information about the checked site. </param>
 private void StartCheckingUrl(object obj)
 {
     SettingsWebSiteMonitoring.SettingsWebSiteMonitoring webSite = (SettingsWebSiteMonitoring.SettingsWebSiteMonitoring)obj;
     try
     {
         DateTime  start      = DateTime.Now;
         WebClient wc         = new WebClient();
         string    HTMLSource = wc.DownloadString(webSite.UrlSiteForCheck);
         DateTime  finish     = DateTime.Now;
         int       leadTime   = (int)finish.Second - (int)start.Second;
         string    message    = "Attention! Method CheckUrl has checked ";
         if (leadTime < webSite.MaxExpectedServerResponseTimeSeconds)
         {
             lock (Locker)
             {
                 Logger.WriteMessage($"WebSite {webSite.DataAdministrator.siteName} with addres {webSite.UrlSiteForCheck} has been opened successfully.");
             }
         }
         else
         {
             SendMessageAdmin(webSite, message + $"{webSite.DataAdministrator.siteName} webSite with addres {webSite.UrlSiteForCheck}. This webSite is not available.");
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
     }
     Thread.Sleep(webSite.IntervalBetweenChecksSeconds * 1000);
 }
Example #2
0
 /// <summary>
 /// UpdateThreadsSitesDict method updates the data in the dictionary of key (site) - value pairs (separate thread).
 /// </summary>
 /// <param name="threadsSitesDict"> Dictionary of key (site) - value (separate thread). </param>
 private void UpdateThreadsSitesDict(Dictionary <string, Thread> threadsSitesDict)
 {
     if (ListWebSiteSettings.Count > threadsSitesDict.Count)
     {
         foreach (var webSite in ListWebSiteSettings)
         {
             if (!threadsSitesDict.ContainsKey(webSite.UrlSiteForCheck))
             {
                 threadsSitesDict[webSite.UrlSiteForCheck] = null;
             }
         }
     }
     if (ListWebSiteSettings.Count < threadsSitesDict.Count)
     {
         SettingsWebSiteMonitoring.SettingsWebSiteMonitoring result = null;
         List <string> keys = new List <string>(threadsSitesDict.Keys);
         foreach (var webSite in keys)
         {
             result = ListWebSiteSettings.Find((_webSite) => _webSite.UrlSiteForCheck == webSite);
             if (result == null)
             {
                 threadsSitesDict.Remove(webSite);
             }
         }
     }
 }
Example #3
0
        /// <summary>
        /// SendMessage Admin method sends a letter to the administrator of the checked site if his site is unavailable.
        /// </summary>
        /// <param name="webSite"> Website with information about it. </param>
        /// <param name="message"> Text for message. </param>
        private async void SendMessageAdmin(SettingsWebSiteMonitoring.SettingsWebSiteMonitoring webSite, string message)
        {
            MailAddress from = new MailAddress("*****@*****.**");
            MailAddress to   = new MailAddress(webSite.DataAdministrator.adminEmailAddress);
            MailMessage m    = new MailMessage(from, to);

            m.Subject = "Notification.";
            m.Body    = message;
            SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);

            smtp.Credentials = new NetworkCredential("*****@*****.**", "");
            smtp.EnableSsl   = true;
            await smtp.SendMailAsync(m);
        }