using System; using System.IO; using System.Collections.Generic; namespace FileSecurity_Server { class FileSystem { public List Files; public Dictionary Hashes; private String SecurityFile = String.Format("{0}{1}", Program.LocalPath, Properties.Settings.Default.Security_File); private String SecurityFolder = String.Format("{0}{1}\\", Program.LocalPath, Properties.Settings.Default.Security_Folder); public FileSystem() { Files = new List(); Hashes = new Dictionary(); if (!File.Exists(SecurityFile)) { using (StreamWriter Writer = new StreamWriter(SecurityFile)) { Writer.WriteLine(); } } if (!Directory.Exists(SecurityFolder)) { Directory.CreateDirectory(SecurityFolder); } LoadFiles(); LoadHashes(); } private void LoadFiles() { using (StreamReader Reader = new StreamReader(SecurityFile)) { String CurrentLine; while ((CurrentLine = Reader.ReadLine()) != null) { if (!File.Exists(String.Format("{0}{1}", SecurityFolder, CurrentLine))) { Program.Writer.WriteLine(WriteType.Error, false, "File Check Missing: {0}", CurrentLine); } if (Files.Contains(CurrentLine)) { Program.Writer.WriteLine(WriteType.Error, false, "Duplicated File Check: {0}", CurrentLine); } else { Program.Writer.WriteLine(WriteType.Information, false, "File Check Added: {0}", CurrentLine); Files.Add(CurrentLine); } } if (Files.Count == 0) { Program.Writer.WriteLine(WriteType.Error, false, "There Cannot Be 0 File Checks!"); //Program.ShutdownTimer(5000); } Program.Writer.WriteLine(WriteType.Information, true, "{0} Checks Added!", Files.Count); } } private void LoadHashes() { foreach (var File in Files) { String MD5Hash = Program.MD5Hash(String.Format("{0}{1}", SecurityFolder, File)); Hashes.Add(File, MD5Hash); } } } }