DomainLookup Task fixes
This commit is contained in:
parent
f3ceabf4cc
commit
3fc43037bf
16 changed files with 155 additions and 255 deletions
|
@ -6178,6 +6178,12 @@ INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [D
|
||||||
END
|
END
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'SERVER_NAME' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'SERVER_NAME', N'String', NULL, 3)
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
-- Domain Expiration Task
|
-- Domain Expiration Task
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -813,24 +813,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Domain DNS Records lookup
|
|
||||||
|
|
||||||
public static List<DnsRecordInfo> GetDomainRecords(int packageId, string domain, string dnsServer, DnsRecordType recordType)
|
|
||||||
{
|
|
||||||
List<DnsRecordInfo> records = new List<DnsRecordInfo>();
|
|
||||||
|
|
||||||
// load OS service
|
|
||||||
int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os);
|
|
||||||
|
|
||||||
var os = GetOS(serviceId);
|
|
||||||
|
|
||||||
records = os.GetDomainDnsRecords(domain, dnsServer, recordType).ToList();
|
|
||||||
|
|
||||||
return records;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
foreach (var subDomain in subDomains)
|
foreach (var subDomain in subDomains)
|
||||||
{
|
{
|
||||||
var mainDomain = topLevelDomains.Where(x => subDomain.DomainName.Contains(x.DomainName)).OrderByDescending(s => s.DomainName.Length).FirstOrDefault(); ;
|
var mainDomain = topLevelDomains.Where(x => subDomain.DomainName.ToLowerInvariant().Contains(x.DomainName.ToLowerInvariant())).OrderByDescending(s => s.DomainName.Length).FirstOrDefault(); ;
|
||||||
|
|
||||||
if (mainDomain != null)
|
if (mainDomain != null)
|
||||||
{
|
{
|
||||||
|
@ -182,5 +182,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
// send mail message
|
// send mail message
|
||||||
MailHelper.SendMessage(from, mailTo, bcc, subject, body, priority, isHtml);
|
MailHelper.SendMessage(from, mailTo, bcc, subject, body, priority, isHtml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Mail;
|
using System.Net.Mail;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using WebsitePanel.Providers.DNS;
|
using WebsitePanel.Providers.DNS;
|
||||||
using WebsitePanel.Providers.DomainLookup;
|
using WebsitePanel.Providers.DomainLookup;
|
||||||
using WebsitePanel.Server;
|
using WebsitePanel.Server;
|
||||||
|
@ -20,6 +21,10 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
private static readonly string MailBodyTemplateParameter = "MAIL_BODY";
|
private static readonly string MailBodyTemplateParameter = "MAIL_BODY";
|
||||||
private static readonly string MailBodyDomainRecordTemplateParameter = "MAIL_DOMAIN_RECORD";
|
private static readonly string MailBodyDomainRecordTemplateParameter = "MAIL_DOMAIN_RECORD";
|
||||||
|
private static readonly string ServerNameParameter = "SERVER_NAME";
|
||||||
|
|
||||||
|
private const string MxRecordPattern = @"mail exchanger = (.+)";
|
||||||
|
private const string NsRecordPattern = @"nameserver = (.+)";
|
||||||
|
|
||||||
public override void DoWork()
|
public override void DoWork()
|
||||||
{
|
{
|
||||||
|
@ -29,6 +34,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
// get input parameters
|
// get input parameters
|
||||||
string dnsServersString = (string)topTask.GetParamValue(DnsServersParameter);
|
string dnsServersString = (string)topTask.GetParamValue(DnsServersParameter);
|
||||||
|
string serverName = (string)topTask.GetParamValue(ServerNameParameter);
|
||||||
|
|
||||||
// check input parameters
|
// check input parameters
|
||||||
if (String.IsNullOrEmpty(dnsServersString))
|
if (String.IsNullOrEmpty(dnsServersString))
|
||||||
|
@ -43,6 +49,17 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find server by name
|
||||||
|
ServerInfo server = ServerController.GetServerByName(serverName);
|
||||||
|
if (server == null)
|
||||||
|
{
|
||||||
|
TaskManager.WriteWarning(String.Format("Server with the name '{0}' was not found", serverName));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowsServer winServer = new WindowsServer();
|
||||||
|
ServiceProviderProxy.ServerInit(winServer, server.ServerId);
|
||||||
|
|
||||||
var user = UserController.GetUser(topTask.UserId);
|
var user = UserController.GetUser(topTask.UserId);
|
||||||
|
|
||||||
var dnsServers = dnsServersString.Split(';');
|
var dnsServers = dnsServersString.Split(';');
|
||||||
|
@ -74,8 +91,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
//execute server
|
//execute server
|
||||||
foreach (var dnsServer in dnsServers)
|
foreach (var dnsServer in dnsServers)
|
||||||
{
|
{
|
||||||
var dnsMxRecords = OperatingSystemController.GetDomainRecords(domain.PackageId, domain.DomainName, dnsServer, DnsRecordType.MX);
|
var dnsMxRecords = GetDomainDnsRecords(winServer, domain.DomainName, dnsServer, DnsRecordType.MX);
|
||||||
var dnsNsRecords = OperatingSystemController.GetDomainRecords(domain.PackageId, domain.DomainName, dnsServer, DnsRecordType.NS);
|
var dnsNsRecords = GetDomainDnsRecords(winServer, domain.DomainName, dnsServer, DnsRecordType.NS);
|
||||||
|
|
||||||
FillRecordData(dnsMxRecords, domain, dnsServer);
|
FillRecordData(dnsMxRecords, domain, dnsServer);
|
||||||
FillRecordData(dnsNsRecords, domain, dnsServer);
|
FillRecordData(dnsNsRecords, domain, dnsServer);
|
||||||
|
@ -123,7 +140,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return changedDomains;
|
return changedDomains;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IEnumerable<DnsRecordInfoChange> ApplyDomainRecordsChanges(List<DnsRecordInfo> dbRecords, List<DnsRecordInfo> dnsRecords, string dnsServer)
|
private IEnumerable<DnsRecordInfoChange> ApplyDomainRecordsChanges(IEnumerable<DnsRecordInfo> dbRecords, List<DnsRecordInfo> dnsRecords, string dnsServer)
|
||||||
{
|
{
|
||||||
var dnsRecordChanges = new List<DnsRecordInfoChange>();
|
var dnsRecordChanges = new List<DnsRecordInfoChange>();
|
||||||
|
|
||||||
|
@ -240,6 +257,62 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
MailHelper.SendMessage(from, mailTo, bcc, subject, body, priority, isHtml);
|
MailHelper.SendMessage(from, mailTo, bcc, subject, body, priority, isHtml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<DnsRecordInfo> GetDomainDnsRecords(WindowsServer winServer, string domain, string dnsServer, DnsRecordType recordType)
|
||||||
|
{
|
||||||
|
//nslookup -type=mx google.com 195.46.39.39
|
||||||
|
var command = "nslookup";
|
||||||
|
var args = string.Format("-type={0} {1} {2}", recordType, domain, dnsServer);
|
||||||
|
|
||||||
|
// execute system command
|
||||||
|
var raw = winServer.ExecuteSystemCommand(command, args);
|
||||||
|
|
||||||
|
var records = ParseNsLookupResult(raw, dnsServer, recordType);
|
||||||
|
|
||||||
|
return records.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<DnsRecordInfo> ParseNsLookupResult(string raw, string dnsServer, DnsRecordType recordType)
|
||||||
|
{
|
||||||
|
var records = new List<DnsRecordInfo>();
|
||||||
|
|
||||||
|
var recordTypePattern = string.Empty;
|
||||||
|
|
||||||
|
switch (recordType)
|
||||||
|
{
|
||||||
|
case DnsRecordType.NS:
|
||||||
|
{
|
||||||
|
recordTypePattern = NsRecordPattern;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DnsRecordType.MX:
|
||||||
|
{
|
||||||
|
recordTypePattern = MxRecordPattern;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var regex = new Regex(recordTypePattern, RegexOptions.IgnoreCase);
|
||||||
|
|
||||||
|
foreach (Match match in regex.Matches(raw))
|
||||||
|
{
|
||||||
|
if (match.Groups.Count != 2)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var dnsRecord = new DnsRecordInfo
|
||||||
|
{
|
||||||
|
Value = match.Groups[1].Value != null ? match.Groups[1].Value.Replace("\r\n", "").Replace("\r", "").Replace("\n", "").Trim() : null,
|
||||||
|
RecordType = recordType,
|
||||||
|
DnsServer = dnsServer
|
||||||
|
};
|
||||||
|
|
||||||
|
records.Add(dnsRecord);
|
||||||
|
}
|
||||||
|
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,8 +91,5 @@ namespace WebsitePanel.Providers.OS
|
||||||
|
|
||||||
// File Services
|
// File Services
|
||||||
bool CheckFileServicesInstallation();
|
bool CheckFileServicesInstallation();
|
||||||
|
|
||||||
//DNS
|
|
||||||
DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,8 +58,6 @@ namespace WebsitePanel.Providers.OS
|
||||||
private const string MSEXCEL_DRIVER = "Microsoft Excel Driver (*.xls)";
|
private const string MSEXCEL_DRIVER = "Microsoft Excel Driver (*.xls)";
|
||||||
private const string TEXT_DRIVER = "Microsoft Text Driver (*.txt; *.csv)";
|
private const string TEXT_DRIVER = "Microsoft Text Driver (*.txt; *.csv)";
|
||||||
|
|
||||||
private const string MXRECORDPATTERN = @"mail exchanger = (.+)";
|
|
||||||
private const string NSRECORDPATTERN = @"nameserver = (.+)";
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
@ -751,63 +749,6 @@ namespace WebsitePanel.Providers.OS
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public virtual DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType)
|
|
||||||
{
|
|
||||||
//nslookup -type=mx google.com 195.46.39.39
|
|
||||||
var command = "nslookup";
|
|
||||||
var args = string.Format("-type={0} {1} {2}", recordType, domain, dnsServer);
|
|
||||||
|
|
||||||
var raw = FileUtils.ExecuteSystemCommand(command, args);
|
|
||||||
|
|
||||||
var records = ParseNsLookupResult(raw, dnsServer, recordType);
|
|
||||||
|
|
||||||
return records.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
private IEnumerable<DnsRecordInfo> ParseNsLookupResult(string raw, string dnsServer, DnsRecordType recordType)
|
|
||||||
{
|
|
||||||
var records = new List<DnsRecordInfo>();
|
|
||||||
|
|
||||||
var recordTypePattern = string.Empty;
|
|
||||||
|
|
||||||
switch (recordType)
|
|
||||||
{
|
|
||||||
case DnsRecordType.NS:
|
|
||||||
{
|
|
||||||
recordTypePattern = NSRECORDPATTERN;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case DnsRecordType.MX:
|
|
||||||
{
|
|
||||||
recordTypePattern = MXRECORDPATTERN;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var regex = new Regex(recordTypePattern, RegexOptions.IgnoreCase);
|
|
||||||
|
|
||||||
foreach (Match match in regex.Matches(raw))
|
|
||||||
{
|
|
||||||
if (match.Groups.Count != 2)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dnsRecord = new DnsRecordInfo
|
|
||||||
{
|
|
||||||
Value = match.Groups[1].Value != null ? match.Groups[1].Value.Replace("\r\n", "").Replace("\r", "").Replace("\n", "").Trim() : null,
|
|
||||||
RecordType = recordType,
|
|
||||||
DnsServer = dnsServer
|
|
||||||
};
|
|
||||||
|
|
||||||
records.Add(dnsRecord);
|
|
||||||
}
|
|
||||||
|
|
||||||
return records;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool IsInstalled()
|
public override bool IsInstalled()
|
||||||
{
|
{
|
||||||
return WebsitePanel.Server.Utils.OS.GetVersion() == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2003;
|
return WebsitePanel.Server.Utils.OS.GetVersion() == WebsitePanel.Server.Utils.OS.WindowsVersion.WindowsServer2003;
|
||||||
|
|
|
@ -299,74 +299,6 @@ namespace WebsitePanel.Providers.OS
|
||||||
ExecuteShellCommand(runSpace, cmd, false);
|
ExecuteShellCommand(runSpace, cmd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Domain LookUp
|
|
||||||
|
|
||||||
//public override DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType)
|
|
||||||
//{
|
|
||||||
// List<DnsRecordInfo> records = new List<DnsRecordInfo>();
|
|
||||||
|
|
||||||
// Runspace runSpace = null;
|
|
||||||
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// runSpace = OpenRunspace();
|
|
||||||
|
|
||||||
// Command cmd = new Command("Resolve-DnsName");
|
|
||||||
// cmd.Parameters.Add("Name", domain);
|
|
||||||
// cmd.Parameters.Add("Server", dnsServer);
|
|
||||||
// cmd.Parameters.Add("Type", recordType.ToString());
|
|
||||||
|
|
||||||
// var dnsRecordsPs = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
|
|
||||||
// if (dnsRecordsPs != null)
|
|
||||||
// {
|
|
||||||
// foreach (var dnsRecordPs in dnsRecordsPs)
|
|
||||||
// {
|
|
||||||
// DnsRecordInfo newRecord = null;
|
|
||||||
|
|
||||||
// switch (recordType)
|
|
||||||
// {
|
|
||||||
// case DnsRecordType.MX: { newRecord = CreateDnsRecordFromPsObject(dnsRecordPs, "NameExchange"); break; }
|
|
||||||
// case DnsRecordType.NS: { newRecord = CreateDnsRecordFromPsObject(dnsRecordPs, "NameHost"); break; }
|
|
||||||
// default: continue;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (newRecord != null)
|
|
||||||
// {
|
|
||||||
// newRecord.DnsServer = dnsServer;
|
|
||||||
// newRecord.RecordType = recordType;
|
|
||||||
|
|
||||||
// records.Add(newRecord);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// finally
|
|
||||||
// {
|
|
||||||
// CloseRunspace(runSpace);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// return records.ToArray();
|
|
||||||
//}
|
|
||||||
|
|
||||||
private DnsRecordInfo CreateDnsRecordFromPsObject(PSObject psObject, string valueName)
|
|
||||||
{
|
|
||||||
if (!psObject.Members.Any(x => x.Name == valueName))
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dnsRecord = new DnsRecordInfo
|
|
||||||
{
|
|
||||||
Value = Convert.ToString(GetPSObjectProperty(psObject, valueName)),
|
|
||||||
};
|
|
||||||
|
|
||||||
return dnsRecord;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region PowerShell integration
|
#region PowerShell integration
|
||||||
private static InitialSessionState session = null;
|
private static InitialSessionState session = null;
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,6 @@ namespace WebsitePanel.Providers.OS {
|
||||||
using System.Web.Services.Protocols;
|
using System.Web.Services.Protocols;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using WebsitePanel.Providers.DNS;
|
|
||||||
using WebsitePanel.Providers.DomainLookup;
|
|
||||||
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
|
@ -114,8 +112,6 @@ namespace WebsitePanel.Providers.OS {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted;
|
private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetDomainDnsRecordsOperationCompleted;
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public OperatingSystem() {
|
public OperatingSystem() {
|
||||||
this.Url = "http://localhost:9003/OperatingSystem.asmx";
|
this.Url = "http://localhost:9003/OperatingSystem.asmx";
|
||||||
|
@ -244,9 +240,6 @@ namespace WebsitePanel.Providers.OS {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event DeleteDSNCompletedEventHandler DeleteDSNCompleted;
|
public event DeleteDSNCompletedEventHandler DeleteDSNCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public event GetDomainDnsRecordsCompletedEventHandler GetDomainDnsRecordsCompleted;
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreatePackageFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreatePackageFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
@ -2017,54 +2010,6 @@ namespace WebsitePanel.Providers.OS {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDomainDnsRecords", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
|
||||||
public DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType) {
|
|
||||||
object[] results = this.Invoke("GetDomainDnsRecords", new object[] {
|
|
||||||
domain,
|
|
||||||
dnsServer,
|
|
||||||
recordType});
|
|
||||||
return ((DnsRecordInfo[])(results[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public System.IAsyncResult BeginGetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType, System.AsyncCallback callback, object asyncState) {
|
|
||||||
return this.BeginInvoke("GetDomainDnsRecords", new object[] {
|
|
||||||
domain,
|
|
||||||
dnsServer,
|
|
||||||
recordType}, callback, asyncState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public DnsRecordInfo[] EndGetDomainDnsRecords(System.IAsyncResult asyncResult) {
|
|
||||||
object[] results = this.EndInvoke(asyncResult);
|
|
||||||
return ((DnsRecordInfo[])(results[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public void GetDomainDnsRecordsAsync(string domain, string dnsServer, DnsRecordType recordType) {
|
|
||||||
this.GetDomainDnsRecordsAsync(domain, dnsServer, recordType, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public void GetDomainDnsRecordsAsync(string domain, string dnsServer, DnsRecordType recordType, object userState) {
|
|
||||||
if ((this.GetDomainDnsRecordsOperationCompleted == null)) {
|
|
||||||
this.GetDomainDnsRecordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetDomainDnsRecordsOperationCompleted);
|
|
||||||
}
|
|
||||||
this.InvokeAsync("GetDomainDnsRecords", new object[] {
|
|
||||||
domain,
|
|
||||||
dnsServer,
|
|
||||||
recordType}, this.GetDomainDnsRecordsOperationCompleted, userState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnGetDomainDnsRecordsOperationCompleted(object arg) {
|
|
||||||
if ((this.GetDomainDnsRecordsCompleted != null)) {
|
|
||||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
|
||||||
this.GetDomainDnsRecordsCompleted(this, new GetDomainDnsRecordsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
|
@ -2674,30 +2619,4 @@ namespace WebsitePanel.Providers.OS {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void DeleteDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
public delegate void DeleteDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
|
||||||
public delegate void GetDomainDnsRecordsCompletedEventHandler(object sender, GetDomainDnsRecordsCompletedEventArgs e);
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
|
||||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
|
||||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
|
||||||
public partial class GetDomainDnsRecordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
|
||||||
|
|
||||||
private object[] results;
|
|
||||||
|
|
||||||
internal GetDomainDnsRecordsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
|
||||||
base(exception, cancelled, userState) {
|
|
||||||
this.results = results;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public DnsRecordInfo[] Result {
|
|
||||||
get {
|
|
||||||
this.RaiseExceptionIfNecessary();
|
|
||||||
return ((DnsRecordInfo[])(this.results[0]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -741,25 +741,5 @@ namespace WebsitePanel.Server
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Dns
|
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
|
||||||
public DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Log.WriteStart("'{0}' GetDomainDnsRecords", ProviderSettings.ProviderName);
|
|
||||||
var result = OsProvider.GetDomainDnsRecords(domain, dnsServer, recordType);
|
|
||||||
Log.WriteEnd("'{0}' GetDomainDnsRecords", ProviderSettings.ProviderName);
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Log.WriteError(String.Format("'{0}' GetDomainDnsRecords", ProviderSettings.ProviderName), ex);
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<%# GetDomainExpirationDate(Eval("ExpirationDate"), Eval("LastUpdateDate"))%>
|
<%# GetDomainExpirationDate(Eval("ExpirationDate"), Eval("LastUpdateDate"))%>
|
||||||
|
|
||||||
<div style="display:inline-block" runat="server" Visible='<%# !(bool)Eval("IsSubDomain") && !(bool)Eval("IsInstantAlias") && !(bool)Eval("IsDomainPointer") %>'>
|
<div style="display:inline-block" runat="server" Visible='<%# ShowDomainDnsInfo(Eval("ExpirationDate"), Eval("LastUpdateDate"), !(bool)Eval("IsSubDomain") && !(bool)Eval("IsInstantAlias") && !(bool)Eval("IsDomainPointer")) %>'>
|
||||||
<img style="border-width: 0px;" src="App_Themes/Default/Images/information_icon_small.gif" title="<%# GetDomainDnsRecords((int)Eval("DomainId")) %>">
|
<img style="border-width: 0px;" src="App_Themes/Default/Images/information_icon_small.gif" title="<%# GetDomainDnsRecords((int)Eval("DomainId")) %>">
|
||||||
</div>
|
</div>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
|
|
|
@ -124,6 +124,33 @@ namespace WebsitePanel.Portal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool ShowDomainDnsInfo(object expirationDateObject, object LastUpdateDateObject, bool isTopLevelDomain)
|
||||||
|
{
|
||||||
|
var expirationDate = expirationDateObject as DateTime?;
|
||||||
|
var lastUpdateDate = LastUpdateDateObject as DateTime?;
|
||||||
|
|
||||||
|
if (!isTopLevelDomain)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (expirationDate != null && expirationDate < DateTime.Now)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if(expirationDate != null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (lastUpdateDate == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string GetDomainDnsRecords(int domainId)
|
public string GetDomainDnsRecords(int domainId)
|
||||||
{
|
{
|
||||||
var records = ES.Services.Servers.GetDomainDnsRecords(domainId);
|
var records = ES.Services.Servers.GetDomainDnsRecords(domainId);
|
||||||
|
|
|
@ -78,5 +78,14 @@ namespace WebsitePanel.Portal.ScheduleTaskControls.App_LocalResources {
|
||||||
return ResourceManager.GetString("lblDnsServersHint", resourceCulture);
|
return ResourceManager.GetString("lblDnsServersHint", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Server Name:.
|
||||||
|
/// </summary>
|
||||||
|
internal static string lblServerName {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("lblServerName", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,4 +123,7 @@
|
||||||
<data name="lblDnsServersHint" xml:space="preserve">
|
<data name="lblDnsServersHint" xml:space="preserve">
|
||||||
<value>Please enter dns servers to check.</value>
|
<value>Please enter dns servers to check.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lblServerName" xml:space="preserve">
|
||||||
|
<value>Server Name:</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -1,6 +1,13 @@
|
||||||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainLookupView.ascx.cs" Inherits="WebsitePanel.Portal.ScheduleTaskControls.DomainLookupView" %>
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainLookupView.ascx.cs" Inherits="WebsitePanel.Portal.ScheduleTaskControls.DomainLookupView" %>
|
||||||
|
|
||||||
<table cellspacing="0" cellpadding="4" width="100%">
|
<table cellspacing="0" cellpadding="4" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" nowrap valign="top">
|
||||||
|
<asp:Label ID="lblServerName" runat="server" meta:resourcekey="lblServerName">Server Name: </asp:Label>
|
||||||
|
</td>
|
||||||
|
<td class="Normal" width="100%">
|
||||||
|
<asp:TextBox ID="txtServerName" runat="server" Width="95%" CssClass="NormalTextBox" MaxLength="1000"></asp:TextBox>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="SubHead" nowrap>
|
<td class="SubHead" nowrap>
|
||||||
<asp:Label ID="lblDnsServers" runat="server" meta:resourcekey="lblDnsServers" Text="DNS Servers:"></asp:Label>
|
<asp:Label ID="lblDnsServers" runat="server" meta:resourcekey="lblDnsServers" Text="DNS Servers:"></asp:Label>
|
||||||
|
|
|
@ -13,6 +13,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls
|
||||||
{
|
{
|
||||||
private static readonly string DnsServersParameter = "DNS_SERVERS";
|
private static readonly string DnsServersParameter = "DNS_SERVERS";
|
||||||
private static readonly string MailToParameter = "MAIL_TO";
|
private static readonly string MailToParameter = "MAIL_TO";
|
||||||
|
private static readonly string ServerNameParameter = "SERVER_NAME";
|
||||||
|
|
||||||
protected void Page_Load(object sender, EventArgs e)
|
protected void Page_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
@ -29,6 +30,7 @@ namespace WebsitePanel.Portal.ScheduleTaskControls
|
||||||
|
|
||||||
this.SetParameter(this.txtDnsServers, DnsServersParameter);
|
this.SetParameter(this.txtDnsServers, DnsServersParameter);
|
||||||
this.SetParameter(this.txtMailTo, MailToParameter);
|
this.SetParameter(this.txtMailTo, MailToParameter);
|
||||||
|
this.SetParameter(this.txtServerName, ServerNameParameter);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -39,8 +41,9 @@ namespace WebsitePanel.Portal.ScheduleTaskControls
|
||||||
{
|
{
|
||||||
ScheduleTaskParameterInfo dnsServers = this.GetParameter(this.txtDnsServers, DnsServersParameter);
|
ScheduleTaskParameterInfo dnsServers = this.GetParameter(this.txtDnsServers, DnsServersParameter);
|
||||||
ScheduleTaskParameterInfo mailTo = this.GetParameter(this.txtMailTo, MailToParameter);
|
ScheduleTaskParameterInfo mailTo = this.GetParameter(this.txtMailTo, MailToParameter);
|
||||||
|
ScheduleTaskParameterInfo serverName = this.GetParameter(this.txtServerName, ServerNameParameter);
|
||||||
|
|
||||||
return new ScheduleTaskParameterInfo[2] { dnsServers, mailTo };
|
return new ScheduleTaskParameterInfo[3] { dnsServers, mailTo, serverName };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,6 +12,24 @@ namespace WebsitePanel.Portal.ScheduleTaskControls {
|
||||||
|
|
||||||
public partial class DomainLookupView {
|
public partial class DomainLookupView {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblServerName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblServerName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtServerName control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtServerName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// lblDnsServers control.
|
/// lblDnsServers control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue