public async Task <IActionResult> CreateStorage([FromBody] StorageRequestModel model) { if (ModelState.IsValid) { try { model.Storage.User = User.Identity.Name; model.Storage.IV = encryptor.GenerateIV(); var result = storageContext.Storages .Where(s => s.Name == model.Storage.Name && s.User == User.Identity.Name); if (model.Storage.Name == null) { return(new BadRequestObjectResult("Отсутствует имя хранилища")); } if (result.Count() != 0) { return(new BadRequestObjectResult("Хранилище с таким именем существует")); } if (!encryptor.CheckSizeKey(model.Key)) { return(new BadRequestObjectResult("Размер ключа [16, 24, 32]")); } await storageContext.Storages.AddAsync(model.Storage); HttpContext.Session.SetString("StorageIV", encryptor.ToString(model.Storage.IV)); HttpContext.Session.SetString("StorageKey", model.Key); await storageContext.Words.AddAsync( new WordModel() { User = User.Identity.Name, Storage = model.Storage.Name, ControlWord = encryptor.Encrypt(encryptor.ToByte("ControlWord")) }); await storageContext.SaveChangesAsync(); //LoadStorages(storageDB, model.Storage.Name); //storageDB.Connection.Close(); dataLite.Initializing(model.Storage.Name); dataLite.Close(); logger.LogInformation("Хранилище создано"); return(new OkObjectResult("Хранилище создано")); } catch (Exception ex) { logger.LogInformation("##### " + ex.StackTrace); return(new BadRequestObjectResult(ex.Message)); } } return(new BadRequestObjectResult("Модель данных не корректна")); }
public IActionResult Create([FromBody] AccountModel model) { if (ModelState.IsValid) { try { var storageName = HttpContext.Session?.GetString("StorageName"); if (storageName == null) { return(new BadRequestObjectResult("Нужно зайти в хранилище")); } //LoadStorages(ref storageDB, storageName); var storage = storageContext.Storages .Where(s => s.Name == storageName) .FirstOrDefault(); model = encryptor.Encrypt(model); dataLite.Accounts.Add(model); dataLite.Close(); logger.LogInformation("Аккаунт добавлен в хранилище"); return(new OkObjectResult("Аккаунт добавлен в хранилище")); } catch (Exception ex) { logger.LogInformation("##### " + ex.StackTrace); return(new BadRequestObjectResult(ex.Message)); } } return(new BadRequestObjectResult("Модель не корректна")); }
public async Task <IActionResult> Upload() { if (ModelState.IsValid) { try { var files = Request.Form.Files; var storageName = HttpContext.Session?.GetString("StorageName"); if (storageName == null) { return(new BadRequestObjectResult("Хранилище не выбрано")); } if (files == null) { return(new BadRequestObjectResult("Файл отсутствует")); } //LoadStorages(ref storageDB, storageName); var storage = storageContext.Storages .Where(s => s.Name == storageName && s.User == User.Identity.Name) .FirstOrDefault(); if (storage == null) { new BadRequestObjectResult("Хранилище не найдено"); } var fileName = (Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 10)).Replace(@"\", "0").Replace(@"/", "0"); foreach (var file in files) { var findFile = dataLite.Files.Get(f => f.Name == file.Name); if (findFile != null) { return(new BadRequestObjectResult("Файл с таким именем существует")); } var type = file.FileName.Split('.').Last(); fileName += "." + type; var group = file.ContentType.Split('/')[0]; //storageDB.Connection.Insert( // new CryptoFile() // { // Name = file.Name, // Size = Math.Round(file.Length / (double)1000000, 2), // Group = group, // Type = type, // Path = fileName // } //); //storageDB.Connection.Close(); dataLite.Files.Add( new FileModel() { Name = file.Name, Size = Math.Round(file.Length / (double)1000000, 2), Group = group, Type = type, Path = fileName } ); dataLite.Close(); await encryptor.EncryptFile(file, GetDirFile() + fileName); } return(new OkObjectResult(files[0].Name)); ; } catch (Exception ex) { logger.LogInformation("#####" + ex.StackTrace); return(new BadRequestObjectResult(ex.Message)); } } return(new BadRequestObjectResult("Модель данных не корректна")); }