private string EncryptString(AzureConnectionString connectionString)
        {
            if (_protector == null)
            {
                _protector = _protectionProvider.CreateProtector("BlobBlaze.ApplicationContext");
            }

            var bytes = _protector.Protect(Encoding.UTF8.GetBytes(connectionString.ToString().ToCharArray()));

            return(Convert.ToBase64String(bytes));
        }
        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);
        }
예제 #3
0
        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));
            }
        }
예제 #4
0
        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));
        }