diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql
index a15974e1..89d4b28f 100644
--- a/WebsitePanel/Database/update_db.sql
+++ b/WebsitePanel/Database/update_db.sql
@@ -6154,39 +6154,46 @@ GO
-- Domain lookup tasks
---IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP')
---BEGIN
---INSERT [dbo].[ScheduleTasks] ([TaskID], [TaskType], [RoleID]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'WebsitePanel.EnterpriseServer.DomainLookupViewTask, WebsitePanel.EnterpriseServer.Code', 1)
---END
---GO
+IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP')
+BEGIN
+INSERT [dbo].[ScheduleTasks] ([TaskID], [TaskType], [RoleID]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'WebsitePanel.EnterpriseServer.DomainLookupViewTask, WebsitePanel.EnterpriseServer.Code', 1)
+END
+GO
---IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskViewConfiguration] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP')
---BEGIN
---INSERT [dbo].[ScheduleTaskViewConfiguration] ([TaskID], [ConfigurationID], [Environment], [Description]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'ASP_NET', N'ASP.NET', N'~/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx')
---END
---GO
+IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskViewConfiguration] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP')
+BEGIN
+INSERT [dbo].[ScheduleTaskViewConfiguration] ([TaskID], [ConfigurationID], [Environment], [Description]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'ASP_NET', N'ASP.NET', N'~/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx')
+END
+GO
---IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'DNS_SERVERS' )
---BEGIN
---INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'DNS_SERVERS', N'String', NULL, 1)
---END
---GO
+IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'DNS_SERVERS' )
+BEGIN
+INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'DNS_SERVERS', N'String', NULL, 1)
+END
+GO
---IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'MAIL_TO' )
---BEGIN
---INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'MAIL_TO', N'String', NULL, 2)
---END
---GO
+IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'MAIL_TO' )
+BEGIN
+INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'MAIL_TO', N'String', NULL, 2)
+END
+GO
-- Domain Expiration Task
IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_EXPIRATION')
BEGIN
-INSERT [dbo].[ScheduleTasks] ([TaskID], [TaskType], [RoleID]) VALUES (N'SCHEDULE_TASK_DOMAIN_EXPIRATION', N'WebsitePanel.EnterpriseServer.DomainExpirationTask, WebsitePanel.EnterpriseServer.Code', 1)
+INSERT [dbo].[ScheduleTasks] ([TaskID], [TaskType], [RoleID]) VALUES (N'SCHEDULE_TASK_DOMAIN_EXPIRATION', N'WebsitePanel.EnterpriseServer.DomainExpirationTask, WebsitePanel.EnterpriseServer.Code', 3)
END
GO
+IF EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_EXPIRATION' AND [RoleID] = 1)
+BEGIN
+UPDATE [dbo].[ScheduleTasks] SET [RoleID] = 3 WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_EXPIRATION'
+END
+GO
+
+
IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskViewConfiguration] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_EXPIRATION')
BEGIN
INSERT [dbo].[ScheduleTaskViewConfiguration] ([TaskID], [ConfigurationID], [Environment], [Description]) VALUES (N'SCHEDULE_TASK_DOMAIN_EXPIRATION', N'ASP_NET', N'ASP.NET', N'~/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainExpirationView.ascx')
@@ -6366,6 +6373,139 @@ END
GO
+
+
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'DomainLookupLetter' AND [PropertyName]= N'CC' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'DomainLookupLetter', N'CC', N'support@HostingCompany.com')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'DomainLookupLetter' AND [PropertyName]= N'From' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'DomainLookupLetter', N'From', N'support@HostingCompany.com')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'DomainLookupLetter' AND [PropertyName]= N'HtmlBody' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'DomainLookupLetter', N'HtmlBody', N'
+
+ MX and NS Changes Information
+
+
+
+
+
+
+
+
+
+
+Hello #user.FirstName#,
+
+
+
+
+Please, find below details of MX and NS changes.
+
+
+
+ #Domain.DomainName#
+
+
+
+
+ DNS |
+ Type |
+ Status |
+ Value |
+
+
+
+
+
+ #DnsChange.DnsServer# |
+ #DnsChange.Type# |
+ #DnsChange.Status# |
+ #DnsChange.Record.Value# |
+
+
+
+
+
+
+
+
+If you have any questions regarding your hosting account, feel free to contact our support department at any time.
+
+
+
+Best regards
+
')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'DomainLookupLetter' AND [PropertyName]= N'Priority' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'DomainLookupLetter', N'Priority', N'Normal')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'DomainLookupLetter' AND [PropertyName]= N'Subject' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'DomainLookupLetter', N'Subject', N'MX and NS changes notification')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'DomainLookupLetter' AND [PropertyName]= N'TextBody' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'DomainLookupLetter', N'TextBody', N'=================================
+ MX and NS Changes Information
+=================================
+
+
+Hello #user.FirstName#,
+
+
+
+Please, find below details of your domain expiration information.
+
+
+
+
+
+ #Domain.DomainName#
+
+
+ DNS: #DnsChange.DnsServer#
+ Type: #DnsChange.Type#
+ Status: #DnsChange.Status#
+ Value: #DnsChange.Record.Value#
+
+
+
+
+
+
+If you have any questions regarding your hosting account, feel free to contact our support department at any time.
+
+Best regards
+')
+END
+GO
+
+
-- Procedures for Domain lookup service
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetAllPackages')
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Users/UserSettings.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Users/UserSettings.cs
index d5dcb39a..da8ad05c 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Users/UserSettings.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Users/UserSettings.cs
@@ -46,6 +46,7 @@ namespace WebsitePanel.EnterpriseServer
public const string ORGANIZATION_USER_SUMMARY_LETTER = "OrganizationUserSummaryLetter";
public const string VPS_SUMMARY_LETTER = "VpsSummaryLetter";
public const string DOMAIN_EXPIRATION_LETTER = "DomainExpirationLetter";
+ public const string DOMAIN_LOOKUP_LETTER = "DomainLookupLetter";
public const string WEB_POLICY = "WebPolicy";
public const string FTP_POLICY = "FtpPolicy";
public const string MAIL_POLICY = "MailPolicy";
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs
index 52c0bbc3..803bc8ef 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs
@@ -4732,7 +4732,7 @@ namespace WebsitePanel.EnterpriseServer
);
}
- public static IDataReader GetDomainMXRecords(int domainId, DnsRecordType recordType)
+ public static IDataReader GetDomainDnsRecords(int domainId, DnsRecordType recordType)
{
return SqlHelper.ExecuteReader(
ConnectionString,
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs
index a500a869..088d9aa7 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs
@@ -27,6 +27,7 @@ namespace WebsitePanel.EnterpriseServer
{
BackgroundTask topTask = TaskManager.TopTask;
var domainUsers = new Dictionary
();
+ var checkedDomains = new List();
// get input parameters
int daysBeforeNotify;
@@ -65,6 +66,13 @@ namespace WebsitePanel.EnterpriseServer
foreach (var domain in domains)
{
+ if (checkedDomains.Contains(domain.DomainId))
+ {
+ continue;
+ }
+
+ checkedDomains.Add(domain.DomainId);
+
ServerController.UpdateDomainRegistrationData(domain);
if (CheckDomainExpiration(domain.ExpirationDate, daysBeforeNotify))
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs
index 414b7fd2..930f40c7 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs
@@ -1,6 +1,8 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using System.Net.Mail;
using System.Text;
using WebsitePanel.Providers.DNS;
using WebsitePanel.Providers.DomainLookup;
@@ -22,7 +24,7 @@ namespace WebsitePanel.EnterpriseServer
{
BackgroundTask topTask = TaskManager.TopTask;
- List domainsChanges = new List();
+ List domainsChanges = new List();
// get input parameters
string dnsServersString = (string)topTask.GetParamValue(DnsServersParameter);
@@ -34,6 +36,14 @@ namespace WebsitePanel.EnterpriseServer
return;
}
+ if (String.IsNullOrEmpty((string)topTask.GetParamValue("MAIL_TO")))
+ {
+ TaskManager.WriteWarning("The e-mail message has not been sent because 'Mail To' is empty.");
+ return;
+ }
+
+ var user = UserController.GetUser(topTask.UserId);
+
var dnsServers = dnsServersString.Split(';');
var packages = ObjectUtils.CreateListFromDataReader(DataProvider.GetAllPackages());
@@ -48,11 +58,16 @@ namespace WebsitePanel.EnterpriseServer
foreach (var domain in domains)
{
- DomainChanges domainChanges = new DomainChanges();
- domainChanges.Domain = domain.DomainName;
+ if (domainsChanges.Any(x => x.DomainName == domain.DomainName))
+ {
+ continue;
+ }
- var mxRecords = ObjectUtils.CreateListFromDataReader(DataProvider.GetDomainMXRecords(domain.DomainId, DnsRecordType.MX));
- var nsRecords = ObjectUtils.CreateListFromDataReader(DataProvider.GetDomainMXRecords(domain.DomainId, DnsRecordType.NS));
+ DomainDnsChanges domainChanges = new DomainDnsChanges();
+ domainChanges.DomainName = domain.DomainName;
+
+ var mxRecords = ObjectUtils.CreateListFromDataReader(DataProvider.GetDomainDnsRecords(domain.DomainId, DnsRecordType.MX));
+ var nsRecords = ObjectUtils.CreateListFromDataReader(DataProvider.GetDomainDnsRecords(domain.DomainId, DnsRecordType.NS));
//execute server
foreach (var dnsServer in dnsServers)
@@ -63,8 +78,8 @@ namespace WebsitePanel.EnterpriseServer
FillRecordData(dnsMxRecords, domain, dnsServer);
FillRecordData(dnsNsRecords, domain, dnsServer);
- domainChanges.DnsChanges.Add(ApplyDomainRecordsChanges(mxRecords, dnsMxRecords, dnsServer));
- domainChanges.DnsChanges.Add(ApplyDomainRecordsChanges(nsRecords, dnsNsRecords, dnsServer));
+ domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(mxRecords, dnsMxRecords, dnsServer));
+ domainChanges.DnsChanges.AddRange(ApplyDomainRecordsChanges(nsRecords, dnsNsRecords, dnsServer));
}
domainsChanges.Add(domainChanges);
@@ -75,7 +90,7 @@ namespace WebsitePanel.EnterpriseServer
if (changedDomains.Any())
{
- SendMailMessage(changedDomains);
+ SendMailMessage(user,changedDomains);
}
}
@@ -83,20 +98,20 @@ namespace WebsitePanel.EnterpriseServer
#region Helpers
- private IEnumerable FindDomainsWithChangedRecords(IEnumerable domainsChanges)
+ private IEnumerable FindDomainsWithChangedRecords(IEnumerable domainsChanges)
{
- var changedDomains = new List();
+ var changedDomains = new List();
foreach (var domainChanges in domainsChanges)
{
- var firstTimeAdditon = domainChanges.DnsChanges.All(x => x.DnsRecordsCompare.All(dns => dns.DbRecord == null));
+ var firstTimeAdditon = domainChanges.DnsChanges.All(x => x.Status == DomainDnsRecordStatuses.Added);
if (firstTimeAdditon)
{
continue;
}
- bool isChanged = domainChanges.DnsChanges.Any(x => x.DnsRecordsCompare.Any(d => d.Status != DomainDnsRecordStatuses.NotChanged));
+ bool isChanged = domainChanges.DnsChanges.Any(d => d.Status != DomainDnsRecordStatuses.NotChanged);
if (isChanged)
{
@@ -107,10 +122,9 @@ namespace WebsitePanel.EnterpriseServer
return changedDomains;
}
- private DomainDnsRecordsChanges ApplyDomainRecordsChanges(List dbRecords, List dnsRecords, string dnsServer)
+ private IEnumerable ApplyDomainRecordsChanges(List dbRecords, List dnsRecords, string dnsServer)
{
- var domainRecordChanges = new DomainDnsRecordsChanges();
- domainRecordChanges.DnsServer = dnsServer;
+ var dnsRecordChanges = new List();
var filteredDbRecords = dbRecords.Where(x => x.DnsServer == dnsServer);
@@ -120,30 +134,26 @@ namespace WebsitePanel.EnterpriseServer
if (dnsRecord != null)
{
- domainRecordChanges.DnsRecordsCompare.Add(new DomainDnsRecordCompare { DbRecord = record, DnsRecord = dnsRecord, Type= record.RecordType, Status = DomainDnsRecordStatuses.NotChanged });
+ dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.NotChanged, DnsServer = dnsServer });
dnsRecords.Remove(dnsRecord);
}
else
{
- domainRecordChanges.DnsRecordsCompare.Add(new DomainDnsRecordCompare { DbRecord = record, DnsRecord = null, Type = record.RecordType, Status = DomainDnsRecordStatuses.Removed });
+ dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Removed, DnsServer = dnsServer });
RemoveRecord(record);
-
- domainRecordChanges.IsChanged = true;
}
}
foreach (var record in dnsRecords)
{
- domainRecordChanges.DnsRecordsCompare.Add(new DomainDnsRecordCompare { DbRecord = null, DnsRecord = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Added });
+ dnsRecordChanges.Add(new DnsRecordInfoChange { Record = record, Type = record.RecordType, Status = DomainDnsRecordStatuses.Added, DnsServer= dnsServer});
AddRecord(record);
-
- domainRecordChanges.IsChanged = true;
}
- return domainRecordChanges;
+ return dnsRecordChanges;
}
private void FillRecordData(IEnumerable records, DomainInfo domain, string dnsServer)
@@ -187,52 +197,37 @@ namespace WebsitePanel.EnterpriseServer
DataProvider.AddDomainDnsRecord(dnsRecord);
}
- private void SendMailMessage(IEnumerable domainsChanges)
+ private void SendMailMessage(UserInfo user, IEnumerable domainsChanges)
{
BackgroundTask topTask = TaskManager.TopTask;
- var bodyTempalte = ObjectUtils.FillObjectFromDataReader(DataProvider.GetScheduleTaskEmailTemplate(TaskId));
- var domainRecordTemplate = ObjectUtils.FillObjectFromDataReader(DataProvider.GetScheduleTaskEmailTemplate(TaskId));
+ UserSettings settings = UserController.GetUserSettings(user.UserId, UserSettings.DOMAIN_LOOKUP_LETTER);
+
+ string from = settings["From"];
+
+ var bcc = settings["CC"];
+
+ string subject = settings["Subject"];
+ string body = user.HtmlMail ? settings["HtmlBody"] : settings["TextBody"];
+ bool isHtml = user.HtmlMail;
+
+ MailPriority priority = MailPriority.Normal;
+ if (!String.IsNullOrEmpty(settings["Priority"]))
+ priority = (MailPriority)Enum.Parse(typeof(MailPriority), settings["Priority"], true);
// input parameters
- string mailFrom = "wsp-scheduler@noreply.net";
string mailTo = (string)topTask.GetParamValue("MAIL_TO");
- string mailSubject = "MX and NS notification";
- if (String.IsNullOrEmpty(mailTo))
- {
- TaskManager.WriteWarning("The e-mail message has not been sent because 'Mail To' is empty.");
- }
- else
- {
- var tableRecords = new List();
+ Hashtable items = new Hashtable();
- foreach (var domain in domainsChanges)
- {
- var changes = domain.DnsChanges;
+ items["user"] = user;
+ items["Domains"] = domainsChanges;
- foreach (var dnsChanged in changes.Where(x=>x.IsChanged))
- {
- foreach (var record in dnsChanged.DnsRecordsCompare.Where(x=>x.Status != DomainDnsRecordStatuses.NotChanged))
- {
- var tableRow = Utils.ReplaceStringVariable(domainRecordTemplate.Template, "domain", domain.Domain);
- tableRow = Utils.ReplaceStringVariable(tableRow, "dns", dnsChanged.DnsServer);
- tableRow = Utils.ReplaceStringVariable(tableRow, "recordType", record.Type.ToString());
- tableRow = Utils.ReplaceStringVariable(tableRow, "dbRecord", record.DbRecord != null ? record.DbRecord.Value : "-");
- tableRow = Utils.ReplaceStringVariable(tableRow, "dnsRecord", record.DnsRecord != null ? record.DnsRecord.Value : "-");
+ body = PackageController.EvaluateTemplate(body, items);
- tableRecords.Add(tableRow);
- }
- }
- }
-
-
- var mailBody = Utils.ReplaceStringVariable(bodyTempalte.Template, "RecordRow", string.Join(" ", tableRecords));
-
- // send mail message
- MailHelper.SendMessage(mailFrom, mailTo, mailSubject, mailBody, true);
- }
- }
+ // send mail message
+ MailHelper.SendMessage(from, mailTo, bcc, subject, body, priority, isHtml);
+ }
#endregion
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordCompare.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs
similarity index 64%
rename from WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordCompare.cs
rename to WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs
index e21d0eac..183c16e0 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordCompare.cs
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfoChange.cs
@@ -6,10 +6,10 @@ using WebsitePanel.Providers.DNS;
namespace WebsitePanel.Providers.DomainLookup
{
- public class DomainDnsRecordCompare
+ public class DnsRecordInfoChange
{
- public DnsRecordInfo DbRecord { get; set; }
- public DnsRecordInfo DnsRecord { get; set; }
+ public string DnsServer { get; set; }
+ public DnsRecordInfo Record { get; set; }
public DomainDnsRecordStatuses Status { get; set; }
public DnsRecordType Type { get; set; }
}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainChanges.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainChanges.cs
deleted file mode 100644
index 9af977ae..00000000
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainChanges.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace WebsitePanel.Providers.DomainLookup
-{
- public class DomainChanges
- {
- public string Domain { get; set; }
-
- public List DnsChanges { get; set; }
-
- public DomainChanges()
- {
- DnsChanges = new List();
- }
- }
-}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsChanges.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsChanges.cs
new file mode 100644
index 00000000..ff178e77
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsChanges.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace WebsitePanel.Providers.DomainLookup
+{
+ public class DomainDnsChanges
+ {
+ public string DomainName { get; set; }
+
+ public List DnsChanges { get; set; }
+
+ public DomainDnsChanges()
+ {
+ DnsChanges = new List();
+ }
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordsChanges.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordsChanges.cs
deleted file mode 100644
index 27d07337..00000000
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordsChanges.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace WebsitePanel.Providers.DomainLookup
-{
- public class DomainDnsRecordsChanges
- {
- public string DnsServer { get; set; }
-
- public bool IsChanged { get; set; }
-
- public List DnsRecordsCompare { get; set; }
-
- public DomainDnsRecordsChanges()
- {
- DnsRecordsCompare = new List();
- }
- }
-}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/ScheduleTaskEmailTemplate.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/ScheduleTaskEmailTemplate.cs
deleted file mode 100644
index 4680efed..00000000
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/ScheduleTaskEmailTemplate.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace WebsitePanel.Providers.DomainLookup
-{
- public class ScheduleTaskEmailTemplate
- {
- public string TaskId { get; set; }
- public string From { get; set; }
- public string Subject { get; set; }
- public string Template { get; set; }
- }
-}
diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
index 43abd255..93fd43e7 100644
--- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
+++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj
@@ -86,11 +86,9 @@
-
-
-
+
+
-
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsDomainLookupLetter.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsDomainLookupLetter.ascx.resx
new file mode 100644
index 00000000..c0e9bcb8
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/SettingsDomainLookupLetter.ascx.resx
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ High
+
+
+ Low
+
+
+ Normal
+
+
+ CC:
+
+
+ From:
+
+
+ HTML Body:
+
+
+ Priority:
+
+
+ Subject:
+
+
+ Text Body:
+
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountMailTemplateSettings.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountMailTemplateSettings.ascx.resx
index 5d73fb9d..fddd4fbc 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountMailTemplateSettings.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/App_LocalResources/UserAccountMailTemplateSettings.ascx.resx
@@ -144,4 +144,7 @@
Domain Expiration Letter
+
+ Domain MX and NS Letter
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx
new file mode 100644
index 00000000..435167f8
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx
@@ -0,0 +1,42 @@
+<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SettingsDomainLookupLetter.ascx.cs" Inherits="WebsitePanel.Portal.SettingsDomainLookupLetter" %>
+
+
+ |
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+
+ |
+
+
+ |
+
+
+ High
+ Normal
+ Low
+
+ |
+
+
+
|
+
+
+
+ |
+
+
+
|
+
+
+
+ |
+
+
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx.cs
new file mode 100644
index 00000000..b8a9951d
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using System.Web.UI;
+using System.Web.UI.WebControls;
+using WebsitePanel.EnterpriseServer;
+
+namespace WebsitePanel.Portal
+{
+ public partial class SettingsDomainLookupLetter : WebsitePanelControlBase, IUserSettingsEditorControl
+ {
+ public void BindSettings(UserSettings settings)
+ {
+ txtFrom.Text = settings["From"];
+ txtCC.Text = settings["CC"];
+ txtSubject.Text = settings["Subject"];
+ Utils.SelectListItem(ddlPriority, settings["Priority"]);
+ txtHtmlBody.Text = settings["HtmlBody"];
+ txtTextBody.Text = settings["TextBody"];
+ }
+
+ public void SaveSettings(UserSettings settings)
+ {
+ settings["From"] = txtFrom.Text;
+ settings["CC"] = txtCC.Text;
+ settings["Subject"] = txtSubject.Text;
+ settings["Priority"] = ddlPriority.SelectedValue;
+ settings["HtmlBody"] = txtHtmlBody.Text;
+ settings["TextBody"] = txtTextBody.Text;
+ }
+ }
+}
\ No newline at end of file
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx.designer.cs
new file mode 100644
index 00000000..afcf7988
--- /dev/null
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/SettingsDomainLookupLetter.ascx.designer.cs
@@ -0,0 +1,123 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace WebsitePanel.Portal {
+
+
+ public partial class SettingsDomainLookupLetter {
+
+ ///
+ /// lblFrom control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblFrom;
+
+ ///
+ /// txtFrom control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtFrom;
+
+ ///
+ /// lblCC control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblCC;
+
+ ///
+ /// txtCC control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtCC;
+
+ ///
+ /// lblSubject control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblSubject;
+
+ ///
+ /// txtSubject control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtSubject;
+
+ ///
+ /// lblPriority control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblPriority;
+
+ ///
+ /// ddlPriority control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.DropDownList ddlPriority;
+
+ ///
+ /// lblHtmlBody control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblHtmlBody;
+
+ ///
+ /// txtHtmlBody control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtHtmlBody;
+
+ ///
+ /// lblTextBody control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblTextBody;
+
+ ///
+ /// txtTextBody control.
+ ///
+ ///
+ /// Auto-generated field.
+ /// To modify move field declaration from designer file to code-behind file.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtTextBody;
+ }
+}
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountMailTemplateSettings.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountMailTemplateSettings.ascx
index 218e959e..45a3d489 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountMailTemplateSettings.ascx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/UserAccountMailTemplateSettings.ascx
@@ -34,6 +34,10 @@
+
+
+