This commit is contained in:
Virtuworks 2014-12-17 12:05:23 -05:00
commit cbba0dabba
6 changed files with 83 additions and 20 deletions

View file

@ -6249,7 +6249,7 @@ Please, find below details of your domain expiration information.
<tr> <tr>
<td>#Domain.DomainName#</td> <td>#Domain.DomainName#</td>
<td>#Domain.Customer#</td> <td>#Domain.Customer#</td>
<td>#Domain.ExpirationDate#</td> <td>Expired</td>
</tr> </tr>
</ad:foreach> </ad:foreach>
</tbody> </tbody>
@ -6313,7 +6313,7 @@ Please, find below details of your domain expiration information.
<ad:foreach collection="#Domains#" var="Domain" index="i"> <ad:foreach collection="#Domains#" var="Domain" index="i">
Domain: #Domain.DomainName# Domain: #Domain.DomainName#
Customer: #Domain.Customer# Customer: #Domain.Customer#
Expiration Date: #Domain.ExpirationDate# Expiration Date: Expired
</ad:foreach> </ad:foreach>
@ -6393,7 +6393,8 @@ Please, find below details of MX and NS changes.
<th>DNS</th> <th>DNS</th>
<th>Type</th> <th>Type</th>
<th>Status</th> <th>Status</th>
<th>Value</th> <th>Old Value</th>
<th>New Value</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -6402,7 +6403,8 @@ Please, find below details of MX and NS changes.
<td>#DnsChange.DnsServer#</td> <td>#DnsChange.DnsServer#</td>
<td>#DnsChange.Type#</td> <td>#DnsChange.Type#</td>
<td>#DnsChange.Status#</td> <td>#DnsChange.Status#</td>
<td>#DnsChange.Record.Value#</td> <td>#DnsChange.OldRecord.Value#</td>
<td>#DnsChange.NewRecord.Value#</td>
</tr> </tr>
</ad:foreach> </ad:foreach>
</tbody> </tbody>
@ -6450,7 +6452,8 @@ Please, find below MX and NS Changes Information.
DNS: #DnsChange.DnsServer# DNS: #DnsChange.DnsServer#
Type: #DnsChange.Type# Type: #DnsChange.Type#
Status: #DnsChange.Status# Status: #DnsChange.Status#
Value: #DnsChange.Record.Value# Old Value: #DnsChange.OldRecord.Value#
New Value: #DnsChange.NewRecord.Value#
</ad:foreach> </ad:foreach>
</ad:foreach> </ad:foreach>

View file

@ -60,11 +60,9 @@ namespace WebsitePanel.EnterpriseServer
subDomains.AddRange(domains.Where(x => x.IsSubDomain)); subDomains.AddRange(domains.Where(x => x.IsSubDomain));
var topLevelDomains = domains = domains.Where(x => !x.IsSubDomain && !x.IsDomainPointer).ToList(); //Selecting top-level domains domains = domains.Where(x => !x.IsSubDomain && !x.IsDomainPointer).ToList(); //Selecting top-level domains
allTopLevelDomains.AddRange(topLevelDomains); allTopLevelDomains.AddRange(domains);
domains = topLevelDomains.Where(x => x.CreationDate == null || x.ExpirationDate == null ? true : CheckDomainExpiration(x.ExpirationDate, daysBeforeNotify)).ToList(); // selecting expired or with empty expire date domains
var domainUser = UserController.GetUser(package.UserId); var domainUser = UserController.GetUser(package.UserId);

View file

@ -99,6 +99,8 @@ namespace WebsitePanel.EnterpriseServer
domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(dbDnsRecords.Where(x => x.RecordType == DnsRecordType.MX), dnsMxRecords, dnsServer)); domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(dbDnsRecords.Where(x => x.RecordType == DnsRecordType.MX), dnsMxRecords, dnsServer));
domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(dbDnsRecords.Where(x => x.RecordType == DnsRecordType.NS), dnsNsRecords, dnsServer)); domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(dbDnsRecords.Where(x => x.RecordType == DnsRecordType.NS), dnsNsRecords, dnsServer));
domainChanges.DnsChanges = CombineDnsRecordChanges(domainChanges.DnsChanges, dnsServer).ToList();
} }
domainsChanges.Add(domainChanges); domainsChanges.Add(domainChanges);
@ -150,13 +152,13 @@ namespace WebsitePanel.EnterpriseServer
if (dnsRecord != null) if (dnsRecord != null)
{ {
dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.NotChanged, DnsServer = dnsServer }); dnsRecordChanges.Add(new DnsRecordInfoChange { OldRecord = record, NewRecord = dnsRecord, Type = record.RecordType, Status = DomainDnsRecordStatuses.NotChanged, DnsServer = dnsServer });
dnsRecords.Remove(dnsRecord); dnsRecords.Remove(dnsRecord);
} }
else else
{ {
dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Removed, DnsServer = dnsServer }); dnsRecordChanges.Add(new DnsRecordInfoChange { OldRecord = record, NewRecord = new DnsRecordInfo { Value = string.Empty}, Type = record.RecordType, Status = DomainDnsRecordStatuses.Removed, DnsServer = dnsServer });
RemoveRecord(record); RemoveRecord(record);
} }
@ -164,7 +166,7 @@ namespace WebsitePanel.EnterpriseServer
foreach (var record in dnsRecords) foreach (var record in dnsRecords)
{ {
dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Added, DnsServer= dnsServer}); dnsRecordChanges.Add(new DnsRecordInfoChange { OldRecord = new DnsRecordInfo { Value = string.Empty }, NewRecord = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Added, DnsServer = dnsServer });
AddRecord(record); AddRecord(record);
} }
@ -172,6 +174,39 @@ namespace WebsitePanel.EnterpriseServer
return dnsRecordChanges; return dnsRecordChanges;
} }
private IEnumerable<DnsRecordInfoChange> CombineDnsRecordChanges(IEnumerable<DnsRecordInfoChange> records, string dnsServer)
{
var resultRecords = records.Where(x => x.DnsServer == dnsServer).ToList();
var recordsToRemove = new List<DnsRecordInfoChange>();
var removedRecords = records.Where(x => x.Status == DomainDnsRecordStatuses.Removed);
var addedRecords = records.Where(x => x.Status == DomainDnsRecordStatuses.Added);
foreach (DnsRecordType type in (DnsRecordType[])Enum.GetValues(typeof(DnsRecordType)))
{
foreach (var removedRecord in removedRecords.Where(x => x.Type == type))
{
var addedRecord = addedRecords.FirstOrDefault(x => x.Type == type && !recordsToRemove.Contains(x));
if (addedRecord != null)
{
recordsToRemove.Add(addedRecord);
removedRecord.NewRecord = addedRecord.NewRecord;
removedRecord.Status = DomainDnsRecordStatuses.Updated;
}
}
}
foreach (var record in recordsToRemove)
{
resultRecords.Remove(record);
}
return resultRecords;
}
private void FillRecordData(IEnumerable<DnsRecordInfo> records, DomainInfo domain, string dnsServer) private void FillRecordData(IEnumerable<DnsRecordInfo> records, DomainInfo domain, string dnsServer)
{ {
foreach (var record in records) foreach (var record in records)

View file

@ -42,6 +42,8 @@ using WebsitePanel.Providers.HostedSolution;
using Whois.NET; using Whois.NET;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using WebsitePanel.Providers.DomainLookup; using WebsitePanel.Providers.DomainLookup;
using System.Globalization;
using System.Linq;
namespace WebsitePanel.EnterpriseServer namespace WebsitePanel.EnterpriseServer
{ {
@ -72,6 +74,9 @@ namespace WebsitePanel.EnterpriseServer
@"expires:(.+)" //.fi @"expires:(.+)" //.fi
}; };
private static List<string> _datePatterns = new List<string> { @"ddd MMM dd HH:mm:ss G\MT yyyy"
};
#region Servers #region Servers
public static List<ServerInfo> GetAllServers() public static List<ServerInfo> GetAllServers()
{ {
@ -1641,11 +1646,16 @@ namespace WebsitePanel.EnterpriseServer
{ {
var result = new List<DnsRecordInfo>(); var result = new List<DnsRecordInfo>();
var mxRecords = ObjectUtils.CreateListFromDataReader<DnsRecordInfo>(DataProvider.GetDomainDnsRecords(domainId, DnsRecordType.MX)); var records = ObjectUtils.CreateListFromDataReader<DnsRecordInfo>(DataProvider.GetDomainAllDnsRecords(domainId));
var nsRecords = ObjectUtils.CreateListFromDataReader<DnsRecordInfo>(DataProvider.GetDomainDnsRecords(domainId, DnsRecordType.NS));
result.AddRange(mxRecords); var activeDomain = records.OrderByDescending(x => x.Date).FirstOrDefault();
result.AddRange(nsRecords);
if (activeDomain != null)
{
records = records.Where(x => x.DnsServer == activeDomain.DnsServer).ToList();
}
result.AddRange(records);
return result; return result;
} }
@ -2723,7 +2733,7 @@ namespace WebsitePanel.EnterpriseServer
{ {
if (match.Success && match.Groups.Count == 2) if (match.Success && match.Groups.Count == 2)
{ {
return DateTime.Parse(match.Groups[1].ToString().Trim()); return ParseDate(match.Groups[1].ToString().Trim());
} }
} }
} }
@ -2731,6 +2741,21 @@ namespace WebsitePanel.EnterpriseServer
return null; return null;
} }
private static DateTime? ParseDate(string dateString)
{
var result = DateTime.MinValue;
foreach (var datePattern in _datePatterns)
{
if (DateTime.TryParseExact(dateString, datePattern, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
{
return result;
}
}
return DateTime.Parse(dateString);
}
#endregion #endregion
#region DNS Zones #region DNS Zones

View file

@ -9,7 +9,8 @@ namespace WebsitePanel.Providers.DomainLookup
public class DnsRecordInfoChange public class DnsRecordInfoChange
{ {
public string DnsServer { get; set; } public string DnsServer { get; set; }
public DnsRecordInfo Record { get; set; } public DnsRecordInfo OldRecord { get; set; }
public DnsRecordInfo NewRecord { get; set; }
public DomainDnsRecordStatuses Status { get; set; } public DomainDnsRecordStatuses Status { get; set; }
public DnsRecordType Type { get; set; } public DnsRecordType Type { get; set; }
} }

View file

@ -9,6 +9,7 @@ namespace WebsitePanel.Providers.DomainLookup
{ {
NotChanged, NotChanged,
Removed, Removed,
Added Added,
Updated
} }
} }