Example #1
0
        private void RecivePrivateFile(Message message)
        {
            var fields = message.StringMessage.Split('$');

            if (fields.Length < 3)
            {
                SendResult(false);
                return;
            }
            SendResult(true);
            var    fileName = CreatePrivateFileName(fields[0]);
            string fileHash;
            SHA1   hashCalc = SHA1.Create();

            if (!((fields[2] == true.ToString())
                    ? _sslChannel.ReciveEncryptedFile(fileName, fields[1])
                    : _sslChannel.ReciveFile(fileName)))
            {
                File.Delete(fileName);
                SendResult(false, "Ошибка получения файла");
                return;
            }
            using (FileStream fs = new FileStream(fileName, FileMode.Open))
            {
                fileHash = ByteToStringConverter(hashCalc.ComputeHash(fs));
            }
            string keyHash  = ByteToStringConverter(hashCalc.ComputeHash(StringToByteConverter(fields[1])));
            string fileSize = new FileInfo(fileName).Length.ToString();

            if (!_dbController.SaveNewPrivateFile(fields[0], fileName, fileSize, fileHash, fields[2] == true.ToString(),
                                                  keyHash))
            {
                File.Delete(fileName);
                SendResult(false, "Ошибка записи в базу данных");
                return;
            }
            SendResult(true);
        }