/
AstroJohn
/
MailRobot
Обзор
Документация
Войти
/
AstroJohn
/
MailRobot
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
CsConfig/ConfigReader.cs
133 строки
5 KB
AstroJohn
Fix naming
12 фев 2025, 17:22
12 фев 2025, 17:22
e55a89d
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Xml.Serialization; using LogProcessingModels.Configuration; using LogProcessingModels.Parsing; using Microsoft.Win32; using MySql.Data.MySqlClient; namespace CsConfig { public class ConfigReader { public static readonly string RegistryKeyPath = @"Software\RK1AA Software\Mail Robot"; public static readonly string RegistryKeyPath32Bit = @"Software\WOW6432Node\RK1AA Software\Mail Robot"; public static readonly string XmlConfigFileNameRegistryValueName = "XMLConfigFileName"; public static readonly string PeriodRegistryValueName = "Period"; public static readonly string RecalcRegistryValueName = "Recalc"; public static readonly string ConfigFolderName = "Config"; public static readonly string UsageToolTip = "Usage: installutil /i /config=<XML Config file path (or paths delimited with ';'> /period=<Mail checking period in minutes (1-30)> /recalc=<Crosschecking period in minutes (5-600)> MailRobotService.exe"; // ReSharper disable once UnusedMember.Global public static string GetRegistryKeyPath() { var assembly = Assembly.GetExecutingAssembly(); var fvi = FileVersionInfo.GetVersionInfo(assembly.Location); return @"Software\" + fvi.CompanyName + @"\" + fvi.ProductName; } public static IEnumerable<string> GetCfgFiles() { var fileCollection = new List<string>(); var regKey = Registry.LocalMachine.OpenSubKey(RegistryKeyPath, true) ?? Registry.LocalMachine.OpenSubKey(RegistryKeyPath32Bit, true); if (regKey != null) { var i = 0; do { i = i + 1; var filePath = i == 1 ? regKey.GetValue(XmlConfigFileNameRegistryValueName).ToString() : regKey.GetValue(XmlConfigFileNameRegistryValueName + (i - 1)).ToString(); if (filePath != string.Empty) fileCollection.Add(filePath); } while (regKey.GetValueNames().Contains(XmlConfigFileNameRegistryValueName + i)); regKey.Close(); } return fileCollection; } private readonly string _xmlFileName; public clsChecker_Parameters CheckerParameters { get; set; } public ConfigReader(string fileName) { _xmlFileName = fileName; } public void SaveConfig() { // Сериализация var fs = new FileStream(_xmlFileName, FileMode.Create); var extraTypes = new[] { typeof(ErmakTag) }; var serializer = new XmlSerializer(typeof(clsChecker_Parameters), extraTypes); serializer.Serialize(fs, CheckerParameters); fs.Close(); } public bool LoadConfig() { var xmlFileInfo = new FileInfo(_xmlFileName); if (!xmlFileInfo.Exists) throw new Exception($"Файл конфигурации {_xmlFileName} не найден!"); var extraTypes = new [] { typeof(ErmakTag) }; var serializer = new XmlSerializer(typeof(clsChecker_Parameters), extraTypes); // Десериализация var reader = new System.Xml.XmlTextReader(_xmlFileName); CheckerParameters = (clsChecker_Parameters)serializer.Deserialize(reader); { var msSqlConnectionString = "Data Source=" + CheckerParameters.MSSQL_Parameters.DBServer + ";Initial Catalog=" + CheckerParameters.MSSQL_Parameters.DBName + ";Persist Security Info=True" + ";User ID=" + CheckerParameters.MSSQL_Parameters.DBLogin + ";Password=" + CheckerParameters.MSSQL_Parameters.DBPassword; var mySqlConnectionString = "server=" + CheckerParameters.MySQL_Parameters.DBServer + ";user id=" + CheckerParameters.MySQL_Parameters.DBLogin + ";password=" + CheckerParameters.MySQL_Parameters.DBPassword + ";persist security info=True" + ";database=" + CheckerParameters.MySQL_Parameters.DBName; if (CheckerParameters.MySQL_Parameters.DBPort > 0) mySqlConnectionString += ";port=" + CheckerParameters.MySQL_Parameters.DBPort.ToString("D"); CheckerParameters.MsSqlConnectionString = msSqlConnectionString; CheckerParameters.MySqlConnectionString = mySqlConnectionString; CheckerParameters.MsSqlConnection = new SqlConnection(msSqlConnectionString); CheckerParameters.MySqlConnection = new MySqlConnection(mySqlConnectionString); } return true; } } }