/// /// Copyright (c) 2019-2022 Sensus Slovensko a.s. /// using System; using System.IO; using System.Security.Cryptography; using System.Text; using System.Xml.Serialization; using SharedDatabase; namespace GenericTest { /// /// Class to be serialized to an XML file... /// [XmlRootAttribute("GenericTest")] public class LocalSettings { static XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(LocalSettings) })[0]; /// Configuration file ecryption/decryption key and initialization vector static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 }; static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; public string Workplace; public bool IsUserLoginRequired; public string Language; public string ConnectionString; public string UsersDBConnString; public string TestResultsFolder; public string ArchiveFolder; public bool DoCheckSNsValidity; public string ValidSNPrefixes; public bool DoCheckPreviousTracingRecords; public bool DoSaveTestResultToOracle; public Mode OracleMode; public bool DoPrintLabels; public bool DoPrintGoodLabelsOnly; public bool MaximizeWindowOnError; public bool DoReadSensor; public string SensorName; public int SensorComPortNr; public int SensorAddress; public int SensorFilterTimeMinutes; /// MainWnd public bool MainWndMaximized; public int MainWndLeft; public int MainWndTop; public int MainWndWidth; public int MainWndHeight; public LocalSettings() { } public LocalSettings(bool createNew) : this() { if (createNew) { /// Default settings Workplace = GenericTestDlg.DfltWorkplaceName; Language = "en"; ConnectionString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;"; UsersDBConnString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;"; TestResultsFolder = "C:\\FTS\\HookSpool\\Filemover"; ArchiveFolder = "C:\\FTS\\HookSpool\\Filemover"; DoCheckSNsValidity = false; ValidSNPrefixes = "297,298,299,300,301,302"; DoCheckPreviousTracingRecords = true; DoSaveTestResultToOracle = false; OracleMode = Mode.Production; DoPrintLabels = true; DoPrintGoodLabelsOnly = false; MaximizeWindowOnError = false; MainWndMaximized = false; MainWndWidth = 1000; MainWndHeight = 260; MainWndLeft = 50; MainWndTop = 50; DoReadSensor = false; SensorName = "Temp."; SensorComPortNr = 4; SensorAddress = 1; SensorFilterTimeMinutes = 15; } } /// /// Load public fields of this class from the XML file. /// /// LocalSettings object or null when Load() fails public static LocalSettings Load(string fileName) { try { bool isEncrypted = true; using (StreamReader reader = new StreamReader(fileName)) { isEncrypted = !reader.ReadLine().StartsWith(" /// Save public fields of this class to the XML file. /// public void Save() { try { /// Encrypt and write to file 'Program.LocalSettingsFileName' using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros }) { using (FileStream fsCrypt = new FileStream(Program.LocalSettingsFileName, FileMode.Create)) { using (ICryptoTransform encryptor = aes.CreateEncryptor(key, IV)) { using (CryptoStream cs = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write)) { using (MemoryStream mStream = new MemoryStream()) { using (var writer = new StreamWriter(mStream)) { /// Serialize and write settings to a memory stream serializer.Serialize(writer, this); writer.Flush(); mStream.Position = 0; using (var reader = new StreamReader(mStream)) { /// Encrypt and write to file 'Program.LocalSettingsFileName' int data; while ((data = mStream.ReadByte()) != -1) cs.WriteByte((byte)data); } } } } } } } } catch (Exception e) { string msg = e.Message; } } } }