/// <summary> /// Создание нового блока AES с новым вектором шифрования. /// </summary> /// <returns></returns> public static AES_Data NewAES() { AES_Data New = new AES_Data(); New.CreateData(); return(New); }
// Заносит информацию о файле в БД. В будущем сделаю шифрование информации. public int Add_To_DB(DB DataBase, AES_Data AES, int Lab, int Person) { string queryString = @"INSERT INTO `files` (`name`, `file_name`, `info`, `laboratory`, `person`) VALUES ('" + Name + "', '" + FileName + "', @Info, " + Lab.ToString() + ", " + Person.ToString() + @"); SELECT LAST_INSERT_ID(); "; MySqlCommand com = DataBase.MakeCommandObject(queryString); com.Parameters.AddWithValue("@Info", Data); return(Convert.ToInt32(com.ExecuteScalar())); }
public Communication() { Crypt = AES_Data.NewAES(); }
/// <summary> /// Базовый функционал программы. /// </summary> /// <param name="args"></param> static void Main(string[] args) { try { //Подключаемся к БД DataBase = new DB(DB_Server, DB_Name, DB_User, DB_Pass); Console.WriteLine("Подключение к MySQL: 127.0.0.1:3306"); } catch { Console.WriteLine("Ошибка подключения к БД"); } // Создаём классы для обработки команд List <Commands.ExecutableCommand> BaseCommands = new List <Commands.ExecutableCommand>() { new Commands.Account(DataBase), new Commands.Database(DataBase), new Commands.FileEngine(DataBase), new Commands.Laboratories(DataBase), new Commands.Log(DataBase), new Commands.Molecules(DataBase), new Commands.Users(DataBase), new Commands.Status(DataBase) }; Commands.Log Log = (Commands.Log)(BaseCommands.Where(x => x.Name == "log").ToArray()[0]); // Открываем файл-ключ CommonAES = (AES_Data)AES_Data.LoadFromFile("vector.bin"); // Устанавливаем для сокета локальную конечную точку IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 11000); // Создаем сокет Tcp/Ip Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Назначаем сокет локальной конечной точке и слушаем входящие сокеты try { sListener.Bind(ipEndPoint); sListener.Listen(10); Console.WriteLine("Старт сервера"); // Завершаем все сеансы сообщением о падении сервера. DataBase.ExecuteQuery(@"UPDATE `sessions` SET `quit_date` = CURRENT_TIMESTAMP(), `reason_quit` = 'Server Fail – quit date of restart' WHERE `quit_date` IS NULL;"); // Начинаем слушать соединения while (true) { Console.WriteLine($"Ожидаем соединение через порт {ipEndPoint}"); // Программа приостанавливается, ожидая входящее соединение Socket handler = sListener.Accept(); Task NewCommandRun = Task.Run(() => RunCommand(handler, BaseCommands, Log)); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { Console.ReadLine(); } }
/// <summary> /// Запускает прослушивание порта /// </summary> public void Start() { Enabled = true; try { //Подключаемся к БД DataBase = new DB(DB_Server, DB_Name, DB_User, DB_Pass); Log($"Подключение к службе MySQL: {DB_Server}:3306"); } catch { Exception E = new Exception("Ошибка подключения к БД"); } // Создаём классы для обработки команд List <Commands.ExecutableCommand> BaseCommands = new List <Commands.ExecutableCommand>() { new Commands.Account(DataBase), new Commands.Database(DataBase), new Commands.FileEngine(DataBase), new Commands.Laboratories(DataBase), new Commands.Log(DataBase), new Commands.Molecules(DataBase), new Commands.Users(DataBase), new Commands.Status(DataBase) }; Log("Создание команд"); Commands.Log LogCmd = (Commands.Log)(BaseCommands.Where(x => x.Name == "log").ToArray()[0]); Log("Создание команды Log"); // Открываем файл-ключ try { CommonAES = (AES_Data)Serializable.LoadFromFile(Path.Combine( Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "vector.bin")); Log("открытие ключа"); } catch (Exception e) { Log(e.Message); } // Устанавливаем для сокета локальную конечную точку IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 11000); // Создаем сокет Tcp/Ip Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Log("Создание сокета"); // Назначаем сокет локальной конечной точке и слушаем входящие сокеты try { sListener.Bind(ipEndPoint); sListener.Listen(10); Log("Старт сервера"); // Завершаем все сеансы сообщением о падении сервера. DataBase.ExecuteQuery(@"UPDATE `sessions` SET `quit_date` = CURRENT_TIMESTAMP(), `reason_quit` = 'Server Fail – quit date of restart' WHERE `quit_date` IS NULL;"); // Начинаем слушать соединения while (Enabled) { Log($"Ожидаем соединение через порт {ipEndPoint}"); // Программа приостанавливается, ожидая входящее соединение Socket handler = sListener.Accept(); Log($"Сигнал получен. Передаём в отдельный поток"); //Task NewCommandRun = Task.Run(() => RunCommand(handler, BaseCommands, LogCmd)); RunCommand(handler, BaseCommands, LogCmd); } } catch (Exception ex) { Log(ex.ToString()); } finally { } }