예제 #1
0
        /// <summary>
        /// Рассылает сообщения на email
        /// </summary>
        /// <param name="_params"></param>
        /// <returns></returns>
        private static void SendEmail(string body)
        {
            try
            {
                ServiceLogger.Info("{work}", "рассылка оповещений");
                foreach (var emailTo in Params.EmailToAddresses)
                {
                    if (!String.IsNullOrEmpty(emailTo))
                    {
                        var from = new MailAddress(Params.EmailFromAddress, Params.EmailFromName);
                        var to   = new MailAddress(emailTo);

                        var message = new MailMessage(from, to)
                        {
                            Subject    = "BackUp chuvashia.com",
                            Body       = body,
                            IsBodyHtml = true
                        };

                        var smtp = new SmtpClient(Params.EmailHost, Params.EmailPort)
                        {
                            Credentials = new NetworkCredential(Params.EmailFromAddress, Params.EmailPassword),
                            EnableSsl   = Params.EmailEnableSsl
                        };
                        smtp.Send(message);
                    }
                }
                ServiceLogger.Info("{work}", "рассылка оповещения проведена");
            }
            catch (Exception e)
            {
                ServiceLogger.Info("{error}", "рассылка оповещений завершилась ошибкой");
                ServiceLogger.Error("{error}", e.ToString());
            }
        }
예제 #2
0
        /// <summary>
        /// Скачивает файл с сервера
        /// </summary>
        private static void DownloadFileFTP(string folderName, string fileName, string pathTo)
        {
            try
            {
                string ftpFullPath      = $"{Params.FtpServer}{folderName}/{fileName}";
                string downloadFilePath = Path.Combine(pathTo, fileName);

                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpFullPath);
                request.Credentials = new NetworkCredential(Params.FtpUserName, Params.FtpUserPassword);
                request.Method      = WebRequestMethods.Ftp.DownloadFile;

                using (Stream ftpStream = request.GetResponse().GetResponseStream())
                    using (Stream fileStream = File.Create(downloadFilePath))
                    {
                        ftpStream.CopyTo(fileStream);
                    }

                messageBody += $"<li>{folderName}</li>";
                ServiceLogger.Info("{work}", $"скачивание backup-а {folderName} проведено");
            }
            catch (Exception e)
            {
                ServiceLogger.Error("{error}", e.ToString());
            }
        }
예제 #3
0
        /// <summary>
        /// Копирует backup-ы с chuvashia.com на машину
        /// </summary>
        private static void CopyBackups()
        {
            messageBody += "<ol>Список скопированных backup-ов:</ol>";
            string dateDir = DateTime.Now.ToString("yyyyMMdd");

            foreach (string fold in Params.Folders)
            {
                try
                {
                    string pathTo  = Params.PathTo + fold + @"\" + dateDir;
                    bool   isExist = Directory.Exists(pathTo);
                    if (!isExist)
                    {
                        Directory.CreateDirectory(pathTo);
                    }

                    DownloadFileFTP(fold, fold + "_" + dateDir + ".bak", pathTo);
                }
                catch (Exception e)
                {
                    ServiceLogger.Info("{error}", $"при скачивании backup-а {fold} произошла ошибка");
                    ServiceLogger.Error("{error}", e.ToString());
                }
            }
        }
예제 #4
0
 /// <summary>
 /// Создаёт директорию на сервере
 /// </summary>
 /// <returns></returns>
 private static void CreateDirectoryOnServer(string folderName)
 {
     try
     {
         FtpWebRequest request = (FtpWebRequest)WebRequest.Create($"{Params.FtpServer}{folderName}");
         request.Credentials = new NetworkCredential(Params.FtpUserName, Params.FtpUserPassword);
         request.Method      = WebRequestMethods.Ftp.MakeDirectory;
         using (var response = (FtpWebResponse)request.GetResponse())
         {
             ServiceLogger.Info("{work}", $"создана папка: {folderName} статус: {response.StatusCode.ToString()}");
         }
     }
     catch (Exception e)
     {
         ServiceLogger.Error("{error}", e.ToString());
     }
 }
예제 #5
0
        /// <summary>
        /// Выполняет скрипт по созданию backUp
        /// </summary>
        private static bool CreateBackup()
        {
            bool result = false;

            try
            {
                string[] listOfDirectories = GetDirectoryListFromServer();
                if (listOfDirectories != null)
                {
                    foreach (string folder in Params.Folders)
                    {
                        bool isExists = listOfDirectories.Contains(folder.ToLower());
                        if (!isExists)
                        {
                            CreateDirectoryOnServer(folder);
                        }
                    }

                    ServiceLogger.Info("{work}", "запуск скрипта по созданию backup");
                    using (var db = new DbModel(connection))
                    {
                        if (db.Command != null)
                        {
                            db.Command.CommandTimeout = 1800000;
                            db.backup_service(Params.StrFolders);
                            result = true;
                        }
                    }
                    ServiceLogger.Info("{work}", "создание backup завершено");
                }
            }
            catch (Exception e)
            {
                ServiceLogger.Info("{error}", "скрипт по созданию backup завершился ошибкой");
                ServiceLogger.Error("{error}", e.ToString());
            }

            return(result);
        }
예제 #6
0
        /// <summary>
        /// Возвращает список директорий
        /// </summary>
        /// <returns></returns>
        private static string[] GetDirectoryListFromServer()
        {
            try
            {
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create($"{Params.FtpServer}");
                request.Credentials = new NetworkCredential(Params.FtpUserName, Params.FtpUserPassword);
                request.Method      = WebRequestMethods.Ftp.ListDirectory;

                using (FtpWebResponse directoryListResponse = (FtpWebResponse)request.GetResponse())
                {
                    using (StreamReader directoryListResponseReader = new StreamReader(directoryListResponse.GetResponseStream()))
                    {
                        string responseString = directoryListResponseReader.ReadToEnd().ToLower();
                        return(responseString.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries));
                    }
                }
            }
            catch (Exception e)
            {
                ServiceLogger.Error("{error}", e.ToString());
                return(null);
            }
        }