protected ServerDomainData ToServerDomainData(ServerDomain domain, ServerDomainDnsData dns) { var serverDomain = new ServerDomainData { Id = domain.Id, Name = domain.Name, Dns = dns, IsSharedDomain = domain.Tenant == Defines.SHARED_TENANT_ID }; return(serverDomain); }
protected ServerDomainDnsData ToServerDomainDnsData(ServerDns serverDns) { if (serverDns == null) { return(null); } var dnsData = new ServerDomainDnsData { Id = serverDns.Id, MxRecord = new ServerDomainMxRecordData { Host = serverDns.Mx, IsVerified = serverDns.MxVerified, Priority = Defines.ServerDnsMxRecordPriority }, SpfRecord = new ServerDomainDnsRecordData { Name = Defines.DNS_DEFAULT_ORIGIN, IsVerified = serverDns.SpfVerified, Value = serverDns.Spf }, DkimRecord = new ServerDomainDkimRecordData { Selector = serverDns.DkimSelector, IsVerified = serverDns.DkimVerified, PublicKey = serverDns.DkimPublicKey }, DomainCheckRecord = new ServerDomainDnsRecordData { Name = Defines.DNS_DEFAULT_ORIGIN, IsVerified = true, Value = serverDns.DomainCheck } }; return(dnsData); }
public static bool CheckDnsStatus(this ServerDomainDnsData dnsData, string domain) { if (string.IsNullOrEmpty(domain)) { return(false); } var dnsLookup = new DnsLookup(); var mxVerified = dnsLookup.IsDomainMxRecordExists(domain, dnsData.MxRecord.Host); dnsData.MxRecord.IsVerified = mxVerified; var spfVerified = dnsLookup.IsDomainTxtRecordExists(domain, dnsData.SpfRecord.Value); dnsData.SpfRecord.IsVerified = spfVerified; var dkimVerified = dnsLookup.IsDomainDkimRecordExists(domain, dnsData.DkimRecord.Selector, dnsData.DkimRecord.PublicKey); dnsData.DkimRecord.IsVerified = dkimVerified; return(mxVerified && spfVerified && dkimVerified); }
public ServerDomainDnsData GetOrCreateUnusedDnsData(IDaoFactory daoFactory, Entities.Server server) { var serverDnsDao = daoFactory.CreateServerDnsDao(Tenant, User); var dnsSettings = serverDnsDao.GetFree(); if (dnsSettings == null) { string privateKey, publicKey; CryptoUtil.GenerateDkimKeys(out privateKey, out publicKey); var domainCheckValue = PasswordGenerator.GenerateNewPassword(16); var domainCheck = Defines.ServerDnsDomainCheckPrefix + ": " + domainCheckValue; var serverDns = new ServerDns { Id = 0, Tenant = Tenant, User = User, DomainId = Defines.UNUSED_DNS_SETTING_DOMAIN_ID, DomainCheck = domainCheck, DkimSelector = Defines.ServerDnsDkimSelector, DkimPrivateKey = privateKey, DkimPublicKey = publicKey, DkimTtl = Defines.ServerDnsDefaultTtl, DkimVerified = false, DkimDateChecked = null, Spf = Defines.ServerDnsSpfRecordValue, SpfTtl = Defines.ServerDnsDefaultTtl, SpfVerified = false, SpfDateChecked = null, Mx = server.MxRecord, MxTtl = Defines.ServerDnsDefaultTtl, MxVerified = false, MxDateChecked = null, TimeModified = DateTime.UtcNow }; serverDns.Id = serverDnsDao.Save(serverDns); dnsSettings = serverDns; } var dnsData = new ServerDomainDnsData { Id = dnsSettings.Id, MxRecord = new ServerDomainMxRecordData { Host = dnsSettings.Mx, IsVerified = false, Priority = Defines.ServerDnsMxRecordPriority }, DkimRecord = new ServerDomainDkimRecordData { Selector = dnsSettings.DkimSelector, IsVerified = false, PublicKey = dnsSettings.DkimPublicKey }, DomainCheckRecord = new ServerDomainDnsRecordData { Name = Defines.DNS_DEFAULT_ORIGIN, IsVerified = false, Value = dnsSettings.DomainCheck }, SpfRecord = new ServerDomainDnsRecordData { Name = Defines.DNS_DEFAULT_ORIGIN, IsVerified = false, Value = dnsSettings.Spf } }; return(dnsData); }