private AzureConnectionString DecryptString(string encrypted) { if (_protector == null) { _protector = _protectionProvider.CreateProtector("BlobBlaze.ApplicationContext"); } byte[] bytes = _protector.Unprotect(Convert.FromBase64String(encrypted)); var rawString = Encoding.UTF8.GetString(bytes); if (!AzureConnectionString.TryParse(rawString, out var connectionString)) { throw new InvalidOperationException("Decrypted String is invalid"); } return(connectionString); }
public async Task <IActionResult> UpdateRemote(int id, [FromBody] AddNewRemoteFormData data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!AzureConnectionString.TryParse(data.ConnectionString, out var connectionStirngObj)) { ModelState.AddModelError(nameof(data.ConnectionString), "Connection String Was Invalid"); return(BadRequest(ModelState)); } using (var context = _contextFactory.CreateContext()) { var remote = await context.BackupRemotes.FindAsync(id); if (remote == null) { return(NotFound()); } remote.BaseFolder = data.BaseFolder; remote.ConnectionString = connectionStirngObj; remote.Default = data.Default; remote.Name = data.Name; if (data.Default) { var currentDefault = await context.BackupRemotes.SingleOrDefaultAsync(r => r.Default); if (currentDefault != null) { currentDefault.Default = false; } } await context.SaveChangesAsync(); return(Created(Request.Path.ToString() + "/" + remote.BackupRemoteId, remote)); } }
public async Task <IActionResult> AddNewRemote([FromBody] AddNewRemoteFormData data) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!AzureConnectionString.TryParse(data.ConnectionString, out var connectionStringObj)) { ModelState.AddModelError(nameof(data.ConnectionString), "Connection String Was Invalid"); return(BadRequest(ModelState)); } var remote = new BackupRemote(data.Name, data.BaseFolder, connectionStringObj) { Default = data.Default }; using (var context = _contextFactory.CreateContext()) { if (data.Default) { var currentDefault = await context.BackupRemotes.SingleOrDefaultAsync(r => r.Default == true); if (currentDefault != null) { currentDefault.Default = false; } } await context.BackupRemotes.AddAsync(remote); await context.SaveChangesAsync(); } return(Created(Request.Path.ToString() + "/" + remote.BackupRemoteId, remote)); }