Exemple #1
0
        public async Task HandleAsync(IMessageContext context, AddEntry message)
        {
            var entry = new Whitelist {
                DomainName = message.DomainName
            };
            await _uow.InsertAsync(entry);

            foreach (var dto in message.ApplicationIds)
            {
                var entity = new WhitelistedDomainApplication {
                    DomainId = entry.Id, ApplicationId = dto
                };
                await _uow.InsertAsync(entity);
            }

            if (message.IpAddresses?.Length > 0)
            {
                foreach (var ip in message.IpAddresses)
                {
                    var entity = new WhitelistedDomainIp
                    {
                        DomainId    = entry.Id,
                        IpType      = IpType.Manual,
                        IpAddress   = IPAddress.Parse(ip),
                        StoredAtUtc = DateTime.UtcNow
                    };

                    await _uow.InsertAsync(entity);
                }
            }
            else
            {
                await LookupIps(message, entry);
            }
        }
        private async Task UpdateIps(EditEntry message, Whitelist whitelist)
        {
            var dbIps = await _uow.ToListAsync <WhitelistedDomainIp>("DomainId = @id", new { id = message.Id });

            foreach (var address in message.IpAddresses)
            {
                var dbIp = dbIps.FirstOrDefault(x => x.IpAddress.ToString() == address);
                if (dbIp == null)
                {
                    var entity = new WhitelistedDomainIp
                    {
                        DomainId    = whitelist.Id,
                        IpType      = IpType.Manual,
                        IpAddress   = IPAddress.Parse(address),
                        StoredAtUtc = DateTime.UtcNow
                    };
                    await _uow.InsertAsync(entity);

                    continue;
                }

                if (dbIp.IpType == IpType.Manual)
                {
                    continue;
                }

                dbIp.IpType = IpType.Manual;
                await _uow.UpdateAsync(dbIp);
            }

            //find removed
            var removedEntries = dbIps.Select(x => x.IpAddress.ToString())
                                 .Except(message.IpAddresses)
                                 .Select(x => dbIps.First(y => x == y.IpAddress.ToString()));

            foreach (var entry in removedEntries)
            {
                await _uow.DeleteAsync(entry);
            }
        }
Exemple #3
0
 public async Task SaveIp(WhitelistedDomainIp entry)
 {
     await _unitOfWork.InsertAsync(entry);
 }