Beispiel #1
0
        public async Task <DomainEntity> RetrieveDomainDetailsAsync(string Id)
        {
            var domainId = Id;

            if (_domainValidation.IsValidEmail(Id))
            {
                domainId = _domainValidation.DomainFromEmail(Id);
            }

            return(await _dbContext.DomainEntity.AsNoTracking().FirstOrDefaultAsync(x => x.Id == domainId));
        }
Beispiel #2
0
        public async Task <DomainEntity> Verify(string domain)
        {
            var domainToVerify = string.Empty;
            var domainEntity   = new DomainEntity();

            if (_domainValidation.IsValidEmail(domain))
            {
                domainToVerify = _domainValidation.DomainFromEmail(domain);
            }

            if (_domainValidation.IsValidDomainName(domain))
            {
                domainToVerify = domain;
            }

            //Fill domain entity with domain details if domain was verified as domain
            if (!string.IsNullOrEmpty(domainToVerify))
            {
                var client = new LookupClient
                {
                    UseCache = true
                };

                var result = await client.QueryAsync(domainToVerify, QueryType.TXT);

                var resultAnswer = result.Answers[0].ToString();
                var spfRecord    = resultAnswer.Substring(resultAnswer.IndexOf("\""))
                                   .Replace("\"", "")
                                   .Replace("\\", "")
                                   .Split(";");

                domainEntity.Id = domainToVerify;

                var mxDomains = new StringBuilder();

                //Add spf record details to domain entity, if a domain does not have this specified spf, then all these are null and domain is invalid
                foreach (var item in spfRecord)
                {
                    switch (item)
                    {
                    case string a when a.Contains("v="):
                        domainEntity.SpfVersion = item.Replace("v=", "");

                        break;

                    case string a when a.Contains("version"):
                        domainEntity.Version = item.Replace("version:", "");

                        break;

                    case string a when a.Contains("expire"):
                        domainEntity.ExpiryData = item.Replace("expire:", "");

                        break;

                    case string a when a.Contains("provider"):
                        domainEntity.Provider = item.Replace("provider:", "");

                        break;

                    case string a when a.Contains("ntamx"):
                        mxDomains.AppendLine(item.Replace("ntamx:", ""));

                        break;

                    default:
                        break;
                    }
                }

                domainEntity.NtaMxList = mxDomains.ToString();

                var isValid = IsValidSpf(domainEntity);
                domainEntity.IsValid = isValid ? "Valid" : "InValid";
            }

            return(domainEntity);
        }