diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index 0b4b54b5..6e3ace09 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6089,6 +6089,12 @@ INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [D END GO +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'PAUSE_BETWEEN_QUERIES' ) +BEGIN +INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'PAUSE_BETWEEN_QUERIES', N'String', N'100', 4) +END +GO + IF EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'SERVER_NAME' ) BEGIN UPDATE [dbo].[ScheduleTaskParameters] SET [DefaultValue] = N'' WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'SERVER_NAME' diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs index ef0cce8d..521d17be 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainExpirationTask.cs @@ -181,9 +181,11 @@ namespace WebsitePanel.EnterpriseServer Hashtable items = new Hashtable(); items["user"] = user; + items["Domains"] = domains.Select(x => new { DomainName = x.DomainName, ExpirationDate = x.ExpirationDate, - Customer = string.Format("{0} {1}", domainUsers[x.PackageId].FirstName, domainUsers[x.PackageId].LastName) }); + Customer = string.Format("{0} {1}", domainUsers[x.PackageId].FirstName, domainUsers[x.PackageId].LastName) }) + .OrderBy(x => x.ExpirationDate).ThenBy(x => x.Customer).ThenBy(x => x.DomainName); items["IncludeNonExistenDomains"] = includeNonExistenDomains; @@ -191,7 +193,7 @@ namespace WebsitePanel.EnterpriseServer { DomainName = x.DomainName, Customer = string.Format("{0} {1}", domainUsers[x.PackageId].FirstName, domainUsers[x.PackageId].LastName) - }); + }).OrderBy(x => x.Customer).ThenBy(x => x.DomainName); body = PackageController.EvaluateTemplate(body, items); diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs index d5e042c1..b6a7b26d 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs @@ -23,6 +23,7 @@ namespace WebsitePanel.EnterpriseServer private static readonly string MailBodyTemplateParameter = "MAIL_BODY"; private static readonly string MailBodyDomainRecordTemplateParameter = "MAIL_DOMAIN_RECORD"; private static readonly string ServerNameParameter = "SERVER_NAME"; + private static readonly string PauseBetweenQueriesParameter = "PAUSE_BETWEEN_QUERIES"; private const string MxRecordPattern = @"mail exchanger = (.+)"; private const string NsRecordPattern = @"nameserver = (.+)"; @@ -40,7 +41,9 @@ namespace WebsitePanel.EnterpriseServer string dnsServersString = (string)topTask.GetParamValue(DnsServersParameter); string serverName = (string)topTask.GetParamValue(ServerNameParameter); - // check input parameters + int pause; + + // check input parameters if (String.IsNullOrEmpty(dnsServersString)) { TaskManager.WriteWarning("Specify 'DNS' task parameter."); @@ -53,6 +56,13 @@ namespace WebsitePanel.EnterpriseServer return; } + + if (!int.TryParse((string)topTask.GetParamValue(PauseBetweenQueriesParameter), out pause)) + { + TaskManager.WriteWarning("The 'pause between queries' parameter is not valid."); + return; + } + // find server by name ServerInfo server = ServerController.GetServerByName(serverName); if (server == null) @@ -102,8 +112,8 @@ namespace WebsitePanel.EnterpriseServer //execute server foreach (var dnsServer in dnsServers) { - var dnsMxRecords = GetDomainDnsRecords(winServer, domain.DomainName, dnsServer, DnsRecordType.MX) ?? dbDnsRecords.Where(x => x.RecordType == DnsRecordType.MX).ToList(); - var dnsNsRecords = GetDomainDnsRecords(winServer, domain.DomainName, dnsServer, DnsRecordType.NS) ?? dbDnsRecords.Where(x => x.RecordType == DnsRecordType.NS).ToList(); + var dnsMxRecords = GetDomainDnsRecords(winServer, domain.DomainName, dnsServer, DnsRecordType.MX, pause) ?? dbDnsRecords.Where(x => x.RecordType == DnsRecordType.MX).ToList(); + var dnsNsRecords = GetDomainDnsRecords(winServer, domain.DomainName, dnsServer, DnsRecordType.NS, pause) ?? dbDnsRecords.Where(x => x.RecordType == DnsRecordType.NS).ToList(); FillRecordData(dnsMxRecords, domain, dnsServer); FillRecordData(dnsNsRecords, domain, dnsServer); @@ -306,8 +316,10 @@ namespace WebsitePanel.EnterpriseServer MailHelper.SendMessage(from, mailTo, bcc, subject, body, priority, isHtml); } - public List GetDomainDnsRecords(WindowsServer winServer, string domain, string dnsServer, DnsRecordType recordType) + public List GetDomainDnsRecords(WindowsServer winServer, string domain, string dnsServer, DnsRecordType recordType, int pause) { + Thread.Sleep(pause); + //nslookup -type=mx google.com 195.46.39.39 var command = "nslookup"; var args = string.Format("-type={0} {1} {2}", recordType, domain, dnsServer); diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs index 14bdff31..c9616469 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs @@ -79,6 +79,15 @@ namespace WebsitePanel.Portal.ScheduleTaskControls.App_LocalResources { } } + /// + /// Looks up a localized string similar to Pause between queries (ms):. + /// + internal static string lblPause { + get { + return ResourceManager.GetString("lblPause", resourceCulture); + } + } + /// /// Looks up a localized string similar to Server Name:. /// diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx index 3bfff31e..7c217906 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx @@ -123,6 +123,9 @@ Please enter dns servers to check. + + Pause between queries (ms): + Server Name: diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx index 8655355c..d366a370 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx @@ -25,4 +25,12 @@ + + + + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs index e03b5a49..f35f8209 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs @@ -14,6 +14,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls private static readonly string DnsServersParameter = "DNS_SERVERS"; private static readonly string MailToParameter = "MAIL_TO"; private static readonly string ServerNameParameter = "SERVER_NAME"; + private static readonly string PauseBetweenQueriesParameter = "PAUSE_BETWEEN_QUERIES"; protected void Page_Load(object sender, EventArgs e) { @@ -30,6 +31,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls this.SetParameter(this.txtDnsServers, DnsServersParameter); this.SetParameter(this.txtMailTo, MailToParameter); + this.SetParameter(this.txtPause, PauseBetweenQueriesParameter); this.SetParameter(this.ddlServers, ServerNameParameter); var servers = ES.Services.Servers.GetAllServers(); @@ -68,8 +70,9 @@ namespace WebsitePanel.Portal.ScheduleTaskControls ScheduleTaskParameterInfo dnsServers = this.GetParameter(this.txtDnsServers, DnsServersParameter); ScheduleTaskParameterInfo mailTo = this.GetParameter(this.txtMailTo, MailToParameter); ScheduleTaskParameterInfo serverName = this.GetParameter(this.ddlServers, ServerNameParameter); + ScheduleTaskParameterInfo pause = this.GetParameter(this.txtPause, PauseBetweenQueriesParameter); - return new ScheduleTaskParameterInfo[3] { dnsServers, mailTo, serverName }; + return new ScheduleTaskParameterInfo[4] { dnsServers, mailTo, serverName, pause }; } } } \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs index df689cac..d057be14 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs @@ -65,5 +65,23 @@ namespace WebsitePanel.Portal.ScheduleTaskControls { /// To modify move field declaration from designer file to code-behind file. /// protected global::System.Web.UI.WebControls.TextBox txtMailTo; + + /// + /// lblPause control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblPause; + + /// + /// txtPause control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtPause; } }