DNS SRV Record support. Only supported with MS DNS Provider

This commit is contained in:
robvde 2012-07-04 13:18:58 +04:00
parent a327e27e15
commit 452fcb7f47
28 changed files with 6890 additions and 4002 deletions

View file

@ -1 +0,0 @@
INSERT INTO Quotas (QuotaID, GroupID, QuotaOrder, QuotaName,QuotaDescription, QuotaTypeID, ServiceQuota) VALUES (400, 20, 3, 'HostedSharePoint.UseSharedSSL' ,'Use shared SSL Root', 1, 0)

View file

@ -1174,7 +1174,7 @@ INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID
LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID
LEFT OUTER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
WHERE D.IsInstantAlias = 0 AND
WHERE (D.IsInstantAlias = 0 AND D.IsDomainPointer = 0) AND
((@Recursive = 0 AND D.PackageID = @PackageID)
OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, D.PackageID) = 1))
AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
@ -3306,6 +3306,7 @@ CREATE PROCEDURE CheckDomain
(
@PackageID int,
@DomainName nvarchar(100),
@IsDomainPointer bit,
@Result int OUTPUT
)
AS
@ -3322,7 +3323,7 @@ SET @Result = 0 -- OK
-- check if the domain already exists
IF EXISTS(
SELECT DomainID FROM Domains
WHERE DomainName = @DomainName
WHERE DomainName = @DomainName AND IsDomainPointer = @IsDomainPointer
)
BEGIN
SET @Result = -1
@ -15772,6 +15773,9 @@ CREATE TABLE [dbo].[GlobalDnsRecords](
[ServerID] [int] NULL,
[PackageID] [int] NULL,
[IPAddressID] [int] NULL,
[SrvPriority] [int] NULL,
[SrvWeight] [int] NULL,
[SrvPort] [int] NULL,
CONSTRAINT [PK_GlobalDnsRecords] PRIMARY KEY CLUSTERED
(
[RecordID] ASC
@ -23347,6 +23351,9 @@ CREATE PROCEDURE UpdateDnsRecord
@RecordName nvarchar(50),
@RecordData nvarchar(500),
@MXPriority int,
@SrvPriority int,
@SrvWeight int,
@SrvPort int,
@IPAddressID int
)
AS
@ -23377,6 +23384,9 @@ SET
RecordName = @RecordName,
RecordData = @RecordData,
MXPriority = @MXPriority,
SrvPriority = @SrvPriority,
SrvWeight = @SrvWeight,
SrvPort = @SrvPort,
IPAddressID = @IPAddressID
WHERE
RecordID = @RecordID
@ -23484,6 +23494,9 @@ SELECT
NR.RecordName,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID
FROM
GlobalDnsRecords AS NR
@ -23669,6 +23682,9 @@ CREATE PROCEDURE AddDnsRecord
@RecordName nvarchar(50),
@RecordData nvarchar(500),
@MXPriority int,
@SrvPriority int,
@SrvWeight int,
@SrvPort int,
@IPAddressID int
)
AS
@ -23693,8 +23709,12 @@ IF EXISTS
UPDATE GlobalDnsRecords
SET
RecordData = RecordData,
MXPriority = MXPriority,
RecordData = @RecordData,
MXPriority = @MXPriority,
SrvPriority = @SrvPriority,
SrvWeight = @SrvWeight,
SrvPort = @SrvPort,
IPAddressID = @IPAddressID
WHERE
ServiceID = @ServiceID AND ServerID = @ServerID AND PackageID = @PackageID
@ -23708,6 +23728,9 @@ ELSE
RecordName,
RecordData,
MXPriority,
SrvPriority,
SrvWeight,
SrvPort,
IPAddressID
)
VALUES
@ -23719,6 +23742,9 @@ ELSE
@RecordName,
@RecordData,
@MXPriority,
@SrvPriority,
@SrvWeight,
@SrvPort,
@IPAddressID
)
@ -35697,7 +35723,7 @@ BEGIN
GR.RecordName
FROM GlobalDNSRecords AS GR
WHERE GR.PackageID = @TmpPackageID
AND GR.RecordType COLLATE DATABASE_DEFAULT + GR.RecordName COLLATE DATABASE_DEFAULT NOT IN (SELECT RecordType + RecordName FROM @Records)
AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records)
SET @ParentPackageID = NULL
@ -35725,7 +35751,7 @@ SELECT
GR.RecordName
FROM GlobalDNSRecords AS GR
WHERE GR.ServerID = @ServerID
AND GR.RecordType COLLATE DATABASE_DEFAULT + GR.RecordName COLLATE DATABASE_DEFAULT NOT IN (SELECT RecordType + RecordName FROM @Records)
AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records)
-- select SERVICES DNS records
@ -35739,7 +35765,7 @@ SELECT
GR.RecordName
FROM GlobalDNSRecords AS GR
WHERE GR.ServiceID IN (SELECT ServiceID FROM PackageServices WHERE PackageID = @PackageID)
AND GR.RecordType COLLATE DATABASE_DEFAULT + GR.RecordName COLLATE DATABASE_DEFAULT NOT IN (SELECT RecordType + RecordName FROM @Records)
AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records)
SELECT
@ -35751,12 +35777,16 @@ SELECT
NR.RecordName,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
ISNULL(IP.ExternalIP, '') AS ExternalIP,
ISNULL(IP.InternalIP, '') AS InternalIP,
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress
@ -35855,10 +35885,14 @@ SELECT
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP,
@ -35958,9 +35992,13 @@ SELECT
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP,
@ -36005,6 +36043,7 @@ RETURN
GO
@ -36062,10 +36101,14 @@ SELECT
NR.RecordName,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,

View file

@ -854,3 +854,656 @@ BEGIN
INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (63, N'AdminPassword', N'')
END
GO
ALTER TABLE [dbo].[GlobalDnsRecords] ADD
[SrvPriority] [int] NULL,
[SrvWeight] [int] NULL,
[SrvPort] [int] NULL
GO
ALTER PROCEDURE [dbo].[AddDnsRecord]
(
@ActorID int,
@ServiceID int,
@ServerID int,
@PackageID int,
@RecordType nvarchar(10),
@RecordName nvarchar(50),
@RecordData nvarchar(500),
@MXPriority int,
@SrvPriority int,
@SrvWeight int,
@SrvPort int,
@IPAddressID int
)
AS
IF (@ServiceID > 0 OR @ServerID > 0) AND dbo.CheckIsUserAdmin(@ActorID) = 0
RAISERROR('You should have administrator role to perform such operation', 16, 1)
IF (@PackageID > 0) AND dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
IF @ServiceID = 0 SET @ServiceID = NULL
IF @ServerID = 0 SET @ServerID = NULL
IF @PackageID = 0 SET @PackageID = NULL
IF @IPAddressID = 0 SET @IPAddressID = NULL
IF EXISTS
(
SELECT RecordID FROM GlobalDnsRecords WHERE
ServiceID = @ServiceID AND ServerID = @ServerID AND PackageID = @PackageID
AND RecordName = @RecordName AND RecordType = @RecordType
)
UPDATE GlobalDnsRecords
SET
RecordData = RecordData,
MXPriority = MXPriority,
SrvPriority = SrvPriority,
SrvWeight = SrvWeight,
SrvPort = SrvPort,
IPAddressID = @IPAddressID
WHERE
ServiceID = @ServiceID AND ServerID = @ServerID AND PackageID = @PackageID
ELSE
INSERT INTO GlobalDnsRecords
(
ServiceID,
ServerID,
PackageID,
RecordType,
RecordName,
RecordData,
MXPriority,
SrvPriority,
SrvWeight,
SrvPort,
IPAddressID
)
VALUES
(
@ServiceID,
@ServerID,
@PackageID,
@RecordType,
@RecordName,
@RecordData,
@MXPriority,
@SrvPriority,
@SrvWeight,
@SrvPort,
@IPAddressID
)
RETURN
GO
ALTER PROCEDURE [dbo].[CheckDomain]
(
@PackageID int,
@DomainName nvarchar(100),
@IsDomainPointer bit,
@Result int OUTPUT
)
AS
/*
@Result values:
0 - OK
-1 - already exists
-2 - sub-domain of prohibited domain
*/
SET @Result = 0 -- OK
-- check if the domain already exists
IF EXISTS(
SELECT DomainID FROM Domains
WHERE DomainName = @DomainName AND IsDomainPointer = @IsDomainPointer
)
BEGIN
SET @Result = -1
RETURN
END
-- check if this is a sub-domain of other domain
-- that is not allowed for 3rd level hosting
DECLARE @UserID int
SELECT @UserID = UserID FROM Packages
WHERE PackageID = @PackageID
-- find sub-domains
DECLARE @DomainUserID int, @HostingAllowed bit
SELECT
@DomainUserID = P.UserID,
@HostingAllowed = D.HostingAllowed
FROM Domains AS D
INNER JOIN Packages AS P ON D.PackageID = P.PackageID
WHERE CHARINDEX('.' + DomainName, @DomainName) > 0
AND (CHARINDEX('.' + DomainName, @DomainName) + LEN('.' + DomainName)) = LEN(@DomainName) + 1
-- this is a domain of other user
IF @UserID <> @DomainUserID AND @HostingAllowed = 0
BEGIN
SET @Result = -2
RETURN
END
RETURN
GO
ALTER PROCEDURE [dbo].[GetDnsRecord]
(
@ActorID int,
@RecordID int
)
AS
-- check rights
DECLARE @ServiceID int, @ServerID int, @PackageID int
SELECT
@ServiceID = ServiceID,
@ServerID = ServerID,
@PackageID = PackageID
FROM GlobalDnsRecords
WHERE
RecordID = @RecordID
IF (@ServiceID > 0 OR @ServerID > 0) AND dbo.CheckIsUserAdmin(@ActorID) = 0
RAISERROR('You are not allowed to perform this operation', 16, 1)
IF (@PackageID > 0) AND dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
SELECT
NR.RecordID,
NR.ServiceID,
NR.ServerID,
NR.PackageID,
NR.RecordType,
NR.RecordName,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID
FROM
GlobalDnsRecords AS NR
WHERE NR.RecordID = @RecordID
RETURN
GO
ALTER PROCEDURE [dbo].[GetDnsRecordsByPackage]
(
@ActorID int,
@PackageID int
)
AS
-- check rights
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
SELECT
NR.RecordID,
NR.ServiceID,
NR.ServerID,
NR.PackageID,
NR.RecordType,
NR.RecordName,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP,
IP.InternalIP
FROM
GlobalDnsRecords AS NR
LEFT OUTER JOIN IPAddresses AS IP ON NR.IPAddressID = IP.AddressID
WHERE NR.PackageID = @PackageID
RETURN
GO
USE [WebsitePanel]
GO
/****** Object: StoredProcedure [dbo].[GetDnsRecordsByServer] Script Date: 06/01/2011 23:42:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetDnsRecordsByServer]
(
@ActorID int,
@ServerID int
)
AS
SELECT
NR.RecordID,
NR.ServiceID,
NR.ServerID,
NR.PackageID,
NR.RecordType,
NR.RecordName,
NR.RecordData,
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP,
IP.InternalIP
FROM
GlobalDnsRecords AS NR
LEFT OUTER JOIN IPAddresses AS IP ON NR.IPAddressID = IP.AddressID
WHERE
NR.ServerID = @ServerID
RETURN
GO
ALTER PROCEDURE [dbo].[GetDnsRecordsByService]
(
@ActorID int,
@ServiceID int
)
AS
SELECT
NR.RecordID,
NR.ServiceID,
NR.ServerID,
NR.PackageID,
NR.RecordType,
NR.RecordName,
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP,
IP.InternalIP
FROM
GlobalDnsRecords AS NR
LEFT OUTER JOIN IPAddresses AS IP ON NR.IPAddressID = IP.AddressID
WHERE
NR.ServiceID = @ServiceID
RETURN
GO
ALTER PROCEDURE [dbo].[GetDnsRecordsTotal]
(
@ActorID int,
@PackageID int
)
AS
-- check rights
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
-- create temp table for DNS records
DECLARE @Records TABLE
(
RecordID int,
RecordType nvarchar(10) COLLATE DATABASE_DEFAULT,
RecordName nvarchar(50) COLLATE DATABASE_DEFAULT
)
-- select PACKAGES DNS records
DECLARE @ParentPackageID int, @TmpPackageID int
SET @TmpPackageID = @PackageID
WHILE 10 = 10
BEGIN
-- get DNS records for the current package
INSERT INTO @Records (RecordID, RecordType, RecordName)
SELECT
GR.RecordID,
GR.RecordType,
GR.RecordName
FROM GlobalDNSRecords AS GR
WHERE GR.PackageID = @TmpPackageID
AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records)
SET @ParentPackageID = NULL
-- get parent package
SELECT
@ParentPackageID = ParentPackageID
FROM Packages
WHERE PackageID = @TmpPackageID
IF @ParentPackageID IS NULL -- the last parent
BREAK
SET @TmpPackageID = @ParentPackageID
END
-- select SERVER DNS records
DECLARE @ServerID int
SELECT @ServerID = ServerID FROM Packages
WHERE PackageID = @PackageID
INSERT INTO @Records (RecordID, RecordType, RecordName)
SELECT
GR.RecordID,
GR.RecordType,
GR.RecordName
FROM GlobalDNSRecords AS GR
WHERE GR.ServerID = @ServerID
AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records)
-- select SERVICES DNS records
-- re-distribute package services
EXEC DistributePackageServices @ActorID, @PackageID
INSERT INTO @Records (RecordID, RecordType, RecordName)
SELECT
GR.RecordID,
GR.RecordType,
GR.RecordName
FROM GlobalDNSRecords AS GR
WHERE GR.ServiceID IN (SELECT ServiceID FROM PackageServices WHERE PackageID = @PackageID)
AND GR.RecordType + GR.RecordName NOT IN (SELECT RecordType + RecordName FROM @Records)
SELECT
NR.RecordID,
NR.ServiceID,
NR.ServerID,
NR.PackageID,
NR.RecordType,
NR.RecordName,
NR.RecordData,
NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID,
ISNULL(IP.ExternalIP, '') AS ExternalIP,
ISNULL(IP.InternalIP, '') AS InternalIP,
CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP)
WHEN NR.RecordType = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData
END AS FullRecordData,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress
FROM @Records AS TR
INNER JOIN GlobalDnsRecords AS NR ON TR.RecordID = NR.RecordID
LEFT OUTER JOIN IPAddresses AS IP ON NR.IPAddressID = IP.AddressID
RETURN
GO
ALTER PROCEDURE [dbo].[GetDomainsPaged]
(
@ActorID int,
@PackageID int,
@ServerID int,
@Recursive bit,
@FilterColumn nvarchar(50) = '',
@FilterValue nvarchar(50) = '',
@SortColumn nvarchar(50),
@StartRow int,
@MaximumRows int
)
AS
SET NOCOUNT ON
-- check rights
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
-- build query and run it to the temporary table
DECLARE @sql nvarchar(2000)
IF @SortColumn = '' OR @SortColumn IS NULL
SET @SortColumn = 'DomainName'
SET @sql = '
DECLARE @Domains TABLE
(
ItemPosition int IDENTITY(1,1),
DomainID int
)
INSERT INTO @Domains (DomainID)
SELECT
D.DomainID
FROM Domains AS D
INNER JOIN Packages AS P ON D.PackageID = P.PackageID
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID
LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID
LEFT OUTER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
WHERE (D.IsInstantAlias = 0 AND D.IsDomainPointer = 0) AND
((@Recursive = 0 AND D.PackageID = @PackageID)
OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, D.PackageID) = 1))
AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
'
IF @FilterColumn <> '' AND @FilterValue <> ''
SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
IF @SortColumn <> '' AND @SortColumn IS NOT NULL
SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
SET @sql = @sql + ' SELECT COUNT(DomainID) FROM @Domains;SELECT
D.DomainID,
D.PackageID,
D.ZoneItemID,
D.DomainName,
D.HostingAllowed,
ISNULL(WS.ItemID, 0) AS WebSiteID,
WS.ItemName AS WebSiteName,
ISNULL(MD.ItemID, 0) AS MailDomainID,
MD.ItemName AS MailDomainName,
D.IsSubDomain,
D.IsInstantAlias,
D.IsDomainPointer,
-- packages
P.PackageName,
-- server
ISNULL(SRV.ServerID, 0) AS ServerID,
ISNULL(SRV.ServerName, '''') AS ServerName,
ISNULL(SRV.Comments, '''') AS ServerComments,
ISNULL(SRV.VirtualServer, 0) AS VirtualServer,
-- user
P.UserID,
U.Username,
U.FirstName,
U.LastName,
U.FullName,
U.RoleID,
U.Email
FROM @Domains AS SD
INNER JOIN Domains AS D ON SD.DomainID = D.DomainID
INNER JOIN Packages AS P ON D.PackageID = P.PackageID
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
LEFT OUTER JOIN ServiceItems AS WS ON D.WebSiteID = WS.ItemID
LEFT OUTER JOIN ServiceItems AS MD ON D.MailDomainID = MD.ItemID
LEFT OUTER JOIN ServiceItems AS Z ON D.ZoneItemID = Z.ItemID
LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID
LEFT OUTER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
WHERE SD.ItemPosition BETWEEN @StartRow + 1 AND @StartRow + @MaximumRows'
exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @FilterValue nvarchar(50), @ServerID int, @Recursive bit',
@StartRow, @MaximumRows, @PackageID, @FilterValue, @ServerID, @Recursive
RETURN
GO
ALTER PROCEDURE [dbo].[UpdateDnsRecord]
(
@ActorID int,
@RecordID int,
@RecordType nvarchar(10),
@RecordName nvarchar(50),
@RecordData nvarchar(500),
@MXPriority int,
@SrvPriority int,
@SrvWeight int,
@SrvPort int,
@IPAddressID int
)
AS
IF @IPAddressID = 0 SET @IPAddressID = NULL
-- check rights
DECLARE @ServiceID int, @ServerID int, @PackageID int
SELECT
@ServiceID = ServiceID,
@ServerID = ServerID,
@PackageID = PackageID
FROM GlobalDnsRecords
WHERE
RecordID = @RecordID
IF (@ServiceID > 0 OR @ServerID > 0) AND dbo.CheckIsUserAdmin(@ActorID) = 0
RAISERROR('You are not allowed to perform this operation', 16, 1)
IF (@PackageID > 0) AND dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
RAISERROR('You are not allowed to access this package', 16, 1)
-- update record
UPDATE GlobalDnsRecords
SET
RecordType = @RecordType,
RecordName = @RecordName,
RecordData = @RecordData,
MXPriority = @MXPriority,
SrvPriority = @SrvPriority,
SrvWeight = @SrvWeight,
SrvPort = @SrvPort,
IPAddressID = @IPAddressID
WHERE
RecordID = @RecordID
RETURN
GO

View file

@ -36,6 +36,22 @@ namespace WebsitePanel.EnterpriseServer
public class GlobalDnsRecord
{
private int recordId;
private string internalIP;
private string externalIP;
private int recordOrder;
private int groupId;
private int serviceId;
private int serverId;
private int packageId;
private string recordType;
private string recordName;
private string recordData;
private int mxPriority;
private int ipAddressId;
private int srvPriority;
private int srvWeight;
private int srvPort;
public int RecordId
{
@ -43,63 +59,54 @@ namespace WebsitePanel.EnterpriseServer
set { recordId = value; }
}
private int recordOrder;
public int RecordOrder
{
get { return recordOrder; }
set { recordOrder = value; }
}
private int groupId;
public int GroupId
{
get { return groupId; }
set { groupId = value; }
}
private int serviceId;
public int ServiceId
{
get { return serviceId; }
set { serviceId = value; }
}
private int serverId;
public int ServerId
{
get { return serverId; }
set { serverId = value; }
}
private int packageId;
public int PackageId
{
get { return packageId; }
set { packageId = value; }
}
private string recordType;
public string RecordType
{
get { return recordType; }
set { recordType = value; }
}
private string recordName;
public string RecordName
{
get { return recordName; }
set { recordName = value; }
}
private string recordData;
public string RecordData
{
get { return recordData; }
set { recordData = value; }
}
private int mxPriority;
public int MxPriority
{
@ -107,7 +114,6 @@ namespace WebsitePanel.EnterpriseServer
set { mxPriority = value; }
}
private int ipAddressId;
public int IpAddressId
{
@ -115,9 +121,6 @@ namespace WebsitePanel.EnterpriseServer
set { ipAddressId = value; }
}
private string internalIP;
private string externalIP;
public GlobalDnsRecord()
{
}
@ -133,5 +136,24 @@ namespace WebsitePanel.EnterpriseServer
get { return this.externalIP; }
set { this.externalIP = value; }
}
public int SrvPriority
{
get { return srvPriority; }
set { srvPriority = value; }
}
public int SrvWeight
{
get { return srvWeight; }
set { srvWeight = value; }
}
public int SrvPort
{
get { return srvPort; }
set { srvPort = value; }
}
}
}

View file

@ -675,7 +675,7 @@ namespace WebsitePanel.EnterpriseServer
}
public static void AddDnsRecord(int actorId, int serviceId, int serverId, int packageId, string recordType,
string recordName, string recordData, int mxPriority, int ipAddressId)
string recordName, string recordData, int mxPriority, int SrvPriority, int SrvWeight, int SrvPort, int ipAddressId)
{
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "AddDnsRecord",
@ -687,11 +687,14 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@RecordName", recordName),
new SqlParameter("@RecordData", recordData),
new SqlParameter("@MXPriority", mxPriority),
new SqlParameter("@SrvPriority", SrvPriority),
new SqlParameter("@SrvWeight", SrvWeight),
new SqlParameter("@SrvPort", SrvPort),
new SqlParameter("@IpAddressId", ipAddressId));
}
public static void UpdateDnsRecord(int actorId, int recordId, string recordType,
string recordName, string recordData, int mxPriority, int ipAddressId)
string recordName, string recordData, int mxPriority, int SrvPriority, int SrvWeight, int SrvPort, int ipAddressId)
{
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "UpdateDnsRecord",
@ -701,9 +704,13 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@RecordName", recordName),
new SqlParameter("@RecordData", recordData),
new SqlParameter("@MXPriority", mxPriority),
new SqlParameter("@SrvPriority", SrvPriority),
new SqlParameter("@SrvWeight", SrvWeight),
new SqlParameter("@SrvPort", SrvPort),
new SqlParameter("@IpAddressId", ipAddressId));
}
public static void DeleteDnsRecord(int actorId, int recordId)
{
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
@ -763,7 +770,7 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@domainName", domainName));
}
public static int CheckDomain(int packageId, string domainName)
public static int CheckDomain(int packageId, string domainName, bool isDomainPointer)
{
SqlParameter prmId = new SqlParameter("@Result", SqlDbType.Int);
prmId.Direction = ParameterDirection.Output;
@ -772,7 +779,8 @@ namespace WebsitePanel.EnterpriseServer
ObjectQualifier + "CheckDomain",
prmId,
new SqlParameter("@packageId", packageId),
new SqlParameter("@domainName", domainName));
new SqlParameter("@domainName", domainName),
new SqlParameter("@isDomainPointer", isDomainPointer));
return Convert.ToInt32(prmId.Value);
}

View file

@ -38,158 +38,157 @@ namespace WebsitePanel.EnterpriseServer
{
public class DnsServerController : IImportController, IBackupController
{
private static DNSServer GetDNSServer(int serviceId)
{
DNSServer dns = new DNSServer();
ServiceProviderProxy.Init(dns, serviceId);
return dns;
}
private static DNSServer GetDNSServer(int serviceId)
{
DNSServer dns = new DNSServer();
ServiceProviderProxy.Init(dns, serviceId);
return dns;
}
public static int AddZone(int packageId, int serviceId, string zoneName)
{
return AddZone(packageId, serviceId, zoneName, true);
}
public static int AddZone(int packageId, int serviceId, string zoneName)
{
return AddZone(packageId, serviceId, zoneName, true);
}
public static int AddZone(int packageId, int serviceId, string zoneName, bool addPackageItem)
{
// get DNS provider
DNSServer dns = GetDNSServer(serviceId);
public static int AddZone(int packageId, int serviceId, string zoneName, bool addPackageItem)
{
// get DNS provider
DNSServer dns = GetDNSServer(serviceId);
// check if zone already exists
if (dns.ZoneExists(zoneName))
return BusinessErrorCodes.ERROR_DNS_ZONE_EXISTS;
// check if zone already exists
if (dns.ZoneExists(zoneName))
return BusinessErrorCodes.ERROR_DNS_ZONE_EXISTS;
//
TaskManager.StartTask("DNS_ZONE", "ADD", zoneName);
//
int zoneItemId = default(int);
//
try
{
// get secondary DNS services
StringDictionary primSettings = ServerController.GetServiceSettings(serviceId);
string[] primaryIPAddresses = GetExternalIPAddressesFromString(primSettings["ListeningIPAddresses"]);
//
TaskManager.StartTask("DNS_ZONE", "ADD", zoneName);
//
int zoneItemId = default(int);
//
try
{
// get secondary DNS services
StringDictionary primSettings = ServerController.GetServiceSettings(serviceId);
string[] primaryIPAddresses = GetExternalIPAddressesFromString(primSettings["ListeningIPAddresses"]);
List<string> secondaryIPAddresses = new List<string>();
List<int> secondaryServiceIds = new List<int>();
string strSecondaryServices = primSettings["SecondaryDNSServices"];
if (!String.IsNullOrEmpty(strSecondaryServices))
{
string[] secondaryServices = strSecondaryServices.Split(',');
foreach (string strSecondaryId in secondaryServices)
{
int secondaryId = Utils.ParseInt(strSecondaryId, 0);
if (secondaryId == 0)
continue;
List<string> secondaryIPAddresses = new List<string>();
List<int> secondaryServiceIds = new List<int>();
string strSecondaryServices = primSettings["SecondaryDNSServices"];
if (!String.IsNullOrEmpty(strSecondaryServices))
{
string[] secondaryServices = strSecondaryServices.Split(',');
foreach (string strSecondaryId in secondaryServices)
{
int secondaryId = Utils.ParseInt(strSecondaryId, 0);
if (secondaryId == 0)
continue;
secondaryServiceIds.Add(secondaryId);
StringDictionary secondarySettings = ServerController.GetServiceSettings(secondaryId);
secondaryServiceIds.Add(secondaryId);
StringDictionary secondarySettings = ServerController.GetServiceSettings(secondaryId);
// add secondary IPs to the master array
secondaryIPAddresses.AddRange(
GetExternalIPAddressesFromString(secondarySettings["ListeningIPAddresses"]));
}
}
// add secondary IPs to the master array
secondaryIPAddresses.AddRange(
GetExternalIPAddressesFromString(secondarySettings["ListeningIPAddresses"]));
}
}
// add "Allow zone transfers"
string allowTransfers = primSettings["AllowZoneTransfers"];
if (!String.IsNullOrEmpty(allowTransfers))
{
string[] ips = Utils.ParseDelimitedString(allowTransfers, '\n', ' ', ',', ';');
foreach (string ip in ips)
{
if (!secondaryIPAddresses.Contains(ip))
secondaryIPAddresses.Add(ip);
}
}
// add "Allow zone transfers"
string allowTransfers = primSettings["AllowZoneTransfers"];
if (!String.IsNullOrEmpty(allowTransfers))
{
string[] ips = Utils.ParseDelimitedString(allowTransfers, '\n', ' ', ',', ';');
foreach (string ip in ips)
{
if (!secondaryIPAddresses.Contains(ip))
secondaryIPAddresses.Add(ip);
}
}
// add primary zone
dns.AddPrimaryZone(zoneName, secondaryIPAddresses.ToArray());
// add primary zone
dns.AddPrimaryZone(zoneName, secondaryIPAddresses.ToArray());
// get DNS zone records
List<GlobalDnsRecord> records = ServerController.GetDnsRecordsTotal(packageId);
// get DNS zone records
List<GlobalDnsRecord> records = ServerController.GetDnsRecordsTotal(packageId);
// get name servers
PackageSettings packageSettings = PackageController.GetPackageSettings(packageId, PackageSettings.NAME_SERVERS);
string[] nameServers = new string[] { };
if (!String.IsNullOrEmpty(packageSettings["NameServers"]))
nameServers = packageSettings["NameServers"].Split(';');
// get name servers
PackageSettings packageSettings = PackageController.GetPackageSettings(packageId, PackageSettings.NAME_SERVERS);
string[] nameServers = new string[] { };
if (!String.IsNullOrEmpty(packageSettings["NameServers"]))
nameServers = packageSettings["NameServers"].Split(';');
// build records list
List<DnsRecord> zoneRecords = new List<DnsRecord>();
// build records list
List<DnsRecord> zoneRecords = new List<DnsRecord>();
string primaryNameServer = "ns." + zoneName;
string primaryNameServer = "ns." + zoneName;
if (nameServers.Length > 0)
primaryNameServer = nameServers[0];
if (nameServers.Length > 0)
primaryNameServer = nameServers[0];
// update SOA record
// update SOA record
string hostmaster = primSettings["ResponsiblePerson"];
if (String.IsNullOrEmpty(hostmaster))
{
hostmaster = "hostmaster." + zoneName;
}
else
{
hostmaster = Utils.ReplaceStringVariable(hostmaster, "domain_name", zoneName);
}
string hostmaster = primSettings["ResponsiblePerson"];
if (String.IsNullOrEmpty(hostmaster))
{
hostmaster = "hostmaster." + zoneName;
}
else
{
hostmaster = Utils.ReplaceStringVariable(hostmaster, "domain_name", zoneName);
}
dns.UpdateSoaRecord(zoneName, "", primaryNameServer, hostmaster);
dns.UpdateSoaRecord(zoneName, "", primaryNameServer, hostmaster);
// add name servers
foreach (string nameServer in nameServers)
{
DnsRecord ns = new DnsRecord();
ns.RecordType = DnsRecordType.NS;
ns.RecordName = "";
ns.RecordData = nameServer;
// add name servers
foreach (string nameServer in nameServers)
{
DnsRecord ns = new DnsRecord();
ns.RecordType = DnsRecordType.NS;
ns.RecordName = "";
ns.RecordData = nameServer;
zoneRecords.Add(ns);
}
zoneRecords.Add(ns);
}
// add all other records
zoneRecords.AddRange(
BuildDnsResourceRecords(records, zoneName, ""));
// add all other records
zoneRecords.AddRange(BuildDnsResourceRecords(records, zoneName, ""));
// add zone records
dns.AddZoneRecords(zoneName, zoneRecords.ToArray());
// add zone records
dns.AddZoneRecords(zoneName, zoneRecords.ToArray());
// add secondary zones
foreach (int secondaryId in secondaryServiceIds)
{
try
{
// add secondary zone
DNSServer secDns = GetDNSServer(secondaryId);
secDns.AddSecondaryZone(zoneName, primaryIPAddresses);
RegisterZoneItems(packageId, secondaryId, zoneName, false);
}
catch (Exception ex)
{
TaskManager.WriteError(ex, "Error adding secondary zone (service ID = " + secondaryId + ")");
}
}
// add secondary zones
foreach (int secondaryId in secondaryServiceIds)
{
try
{
// add secondary zone
DNSServer secDns = GetDNSServer(secondaryId);
secDns.AddSecondaryZone(zoneName, primaryIPAddresses);
RegisterZoneItems(packageId, secondaryId, zoneName, false);
}
catch (Exception ex)
{
TaskManager.WriteError(ex, "Error adding secondary zone (service ID = " + secondaryId + ")");
}
}
if (!addPackageItem)
return 0;
// add service item
zoneItemId = RegisterZoneItems(packageId, serviceId, zoneName, true);
//
TaskManager.ItemId = zoneItemId;
}
catch (Exception ex)
{
TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
//
return zoneItemId;
}
if (!addPackageItem)
return 0;
// add service item
zoneItemId = RegisterZoneItems(packageId, serviceId, zoneName, true);
//
TaskManager.ItemId = zoneItemId;
}
catch (Exception ex)
{
TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
//
return zoneItemId;
}
private static int RegisterZoneItems(int spaceId, int serviceId, string zoneName, bool primaryZone)
@ -204,129 +203,136 @@ namespace WebsitePanel.EnterpriseServer
}
public static int DeleteZone(int zoneItemId)
{
// delete DNS zone if applicable
{
// delete DNS zone if applicable
DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(zoneItemId);
//
if (zoneItem != null)
{
TaskManager.StartTask("DNS_ZONE", "DELETE", zoneItem.Name);
//
try
{
//
TaskManager.ItemId = zoneItemId;
// delete DNS zone
DNSServer dns = new DNSServer();
ServiceProviderProxy.Init(dns, zoneItem.ServiceId);
//
if (zoneItem != null)
{
TaskManager.StartTask("DNS_ZONE", "DELETE", zoneItem.Name);
//
try
{
//
TaskManager.ItemId = zoneItemId;
// delete DNS zone
DNSServer dns = new DNSServer();
ServiceProviderProxy.Init(dns, zoneItem.ServiceId);
// delete secondary zones
StringDictionary primSettings = ServerController.GetServiceSettings(zoneItem.ServiceId);
string strSecondaryServices = primSettings["SecondaryDNSServices"];
if (!String.IsNullOrEmpty(strSecondaryServices))
{
string[] secondaryServices = strSecondaryServices.Split(',');
foreach (string strSecondaryId in secondaryServices)
{
try
{
int secondaryId = Utils.ParseInt(strSecondaryId, 0);
if (secondaryId == 0)
continue;
// delete secondary zones
StringDictionary primSettings = ServerController.GetServiceSettings(zoneItem.ServiceId);
string strSecondaryServices = primSettings["SecondaryDNSServices"];
if (!String.IsNullOrEmpty(strSecondaryServices))
{
string[] secondaryServices = strSecondaryServices.Split(',');
foreach (string strSecondaryId in secondaryServices)
{
try
{
int secondaryId = Utils.ParseInt(strSecondaryId, 0);
if (secondaryId == 0)
continue;
DNSServer secDns = new DNSServer();
ServiceProviderProxy.Init(secDns, secondaryId);
DNSServer secDns = new DNSServer();
ServiceProviderProxy.Init(secDns, secondaryId);
secDns.DeleteZone(zoneItem.Name);
}
catch (Exception ex1)
{
// problem when deleting secondary zone
TaskManager.WriteError(ex1, "Error deleting secondary DNS zone");
}
}
}
secDns.DeleteZone(zoneItem.Name);
}
catch (Exception ex1)
{
// problem when deleting secondary zone
TaskManager.WriteError(ex1, "Error deleting secondary DNS zone");
}
}
}
try
{
dns.DeleteZone(zoneItem.Name);
}
catch (Exception ex2)
{
TaskManager.WriteError(ex2, "Error deleting primary DNS zone");
}
try
{
dns.DeleteZone(zoneItem.Name);
}
catch (Exception ex2)
{
TaskManager.WriteError(ex2, "Error deleting primary DNS zone");
}
// delete service item
PackageController.DeletePackageItem(zoneItemId);
}
catch (Exception ex)
{
TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
}
//
return 0;
}
// delete service item
PackageController.DeletePackageItem(zoneItemId);
}
catch (Exception ex)
{
TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
}
//
return 0;
}
public static List<DnsRecord> BuildDnsResourceRecords(List<GlobalDnsRecord> records,
string domainName, string serviceIP)
{
List<DnsRecord> zoneRecords = new List<DnsRecord>();
public static List<DnsRecord> BuildDnsResourceRecords(List<GlobalDnsRecord> records, string domainName, string serviceIP)
{
List<DnsRecord> zoneRecords = new List<DnsRecord>();
foreach (GlobalDnsRecord record in records)
{
DnsRecord rr = new DnsRecord();
rr.RecordType = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), record.RecordType, true);
rr.RecordName = record.RecordName;
foreach (GlobalDnsRecord record in records)
{
DnsRecord rr = new DnsRecord();
rr.RecordType = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), record.RecordType, true);
rr.RecordName = record.RecordName;
if (record.RecordType == "A")
{
rr.RecordData = String.IsNullOrEmpty(record.RecordData) ? record.ExternalIP : record.RecordData;
rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "ip", record.ExternalIP);
if (record.RecordType == "A")
{
rr.RecordData = String.IsNullOrEmpty(record.RecordData) ? record.ExternalIP : record.RecordData;
rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "ip", record.ExternalIP);
if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP))
rr.RecordData = serviceIP;
}
else
{
rr.RecordData = record.RecordData;
}
if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP))
rr.RecordData = serviceIP;
}
else if (record.RecordType == "SRV")
{
rr.SrvPriority = record.SrvPriority;
rr.SrvWeight = record.SrvWeight;
rr.SrvPort = record.SrvPort;
rr.RecordText = record.RecordData;
rr.RecordData = record.RecordData;
}
else
{
rr.RecordData = record.RecordData;
}
// substitute variables
rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "domain_name", domainName);
// substitute variables
rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "domain_name", domainName);
// add MX priority
if (record.RecordType == "MX")
rr.MxPriority = record.MxPriority;
// add MX priority
if (record.RecordType == "MX")
rr.MxPriority = record.MxPriority;
if (!String.IsNullOrEmpty(rr.RecordData))
zoneRecords.Add(rr);
}
if (!String.IsNullOrEmpty(rr.RecordData))
zoneRecords.Add(rr);
}
return zoneRecords;
}
return zoneRecords;
}
public static string[] GetExternalIPAddressesFromString(string str)
{
List<string> ips = new List<string>();
public static string[] GetExternalIPAddressesFromString(string str)
{
List<string> ips = new List<string>();
if (str != null && str.Trim() != "")
{
string[] sips = str.Split(',');
foreach (string sip in sips)
{
IPAddressInfo ip = ServerController.GetIPAddress(Int32.Parse(sip));
if (ip != null)
ips.Add(ip.ExternalIP);
}
}
if (str != null && str.Trim() != "")
{
string[] sips = str.Split(',');
foreach (string sip in sips)
{
IPAddressInfo ip = ServerController.GetIPAddress(Int32.Parse(sip));
if (ip != null)
ips.Add(ip.ExternalIP);
}
}
return ips.ToArray();
}
return ips.ToArray();
}
#region IImportController Members
@ -350,7 +356,7 @@ namespace WebsitePanel.EnterpriseServer
}
public void ImportItem(int packageId, int itemTypeId, Type itemType,
ResourceGroupInfo group, string itemName)
ResourceGroupInfo group, string itemName)
{
// get service id
int serviceId = PackageController.GetPackageServiceId(packageId, group.GroupName);
@ -395,11 +401,11 @@ namespace WebsitePanel.EnterpriseServer
public int BackupItem(string tempFolder, XmlWriter writer, ServiceProviderItem item, ResourceGroupInfo group)
{
if (!(item is DnsZone))
return 0;
if (!(item is DnsZone))
return 0;
// DNS provider
DNSServer dns = GetDNSServer(item.ServiceId);
DNSServer dns = GetDNSServer(item.ServiceId);
// zone records serialized
XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord));
@ -424,31 +430,31 @@ namespace WebsitePanel.EnterpriseServer
public int RestoreItem(string tempFolder, XmlNode itemNode, int itemId, Type itemType,
string itemName, int packageId, int serviceId, ResourceGroupInfo group)
{
if (itemType != typeof(DnsZone))
return 0;
if (itemType != typeof(DnsZone))
return 0;
// DNS provider
DNSServer dns = GetDNSServer(serviceId);
// DNS provider
DNSServer dns = GetDNSServer(serviceId);
// check service item
if (!dns.ZoneExists(itemName))
{
// create primary and secondary zones
AddZone(packageId, serviceId, itemName, false);
// check service item
if (!dns.ZoneExists(itemName))
{
// create primary and secondary zones
AddZone(packageId, serviceId, itemName, false);
// restore records
XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord));
List<DnsRecord> records = new List<DnsRecord>();
foreach (XmlNode childNode in itemNode.ChildNodes)
{
if (childNode.Name == "DnsRecord")
{
records.Add((DnsRecord)serializer.Deserialize(new XmlNodeReader(childNode)));
}
}
// restore records
XmlSerializer serializer = new XmlSerializer(typeof(DnsRecord));
List<DnsRecord> records = new List<DnsRecord>();
foreach (XmlNode childNode in itemNode.ChildNodes)
{
if (childNode.Name == "DnsRecord")
{
records.Add((DnsRecord)serializer.Deserialize(new XmlNodeReader(childNode)));
}
}
dns.AddZoneRecords(itemName, records.ToArray());
}
dns.AddZoneRecords(itemName, records.ToArray());
}
// check if meta-item exists
int zoneId = 0;
@ -470,7 +476,7 @@ namespace WebsitePanel.EnterpriseServer
// restore domains
RestoreDomainByZone(itemName, packageId, zoneId);
return 0;
return 0;
}
#endregion

View file

@ -74,7 +74,7 @@ namespace WebsitePanel.EnterpriseServer
}
}
int res = ServerController.AddDnsZoneRecord(domainId, recordName, DnsRecordType.A, ip, 0);
int res = ServerController.AddDnsZoneRecord(domainId, recordName, DnsRecordType.A, ip, 0, 0, 0, 0);
if (res != 0)
{
CompleteTask(ret, CrmErrorCodes.CANNOT_CREATE_DNS_ZONE, null,

View file

@ -460,7 +460,7 @@ namespace WebsitePanel.EnterpriseServer
domain.PackageId = packageId;
domain.DomainName = domainName;
domain.HostingAllowed = false;
domainId = ServerController.AddDomain(domain, createInstantAlias);
domainId = ServerController.AddDomain(domain, createInstantAlias, true);
if (domainId < 0)
{
result.Result = domainId;

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation.
// Copyright (c) 2011, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -122,20 +122,20 @@ namespace WebsitePanel.EnterpriseServer
try
{
// TO-DO: Check connectivity
return 0;
return 0;
}
catch (WebException ex)
{
HttpWebResponse response = (HttpWebResponse)ex.Response;
if (response != null && response.StatusCode == HttpStatusCode.NotFound)
if (response != null && response.StatusCode == HttpStatusCode.NotFound)
return BusinessErrorCodes.ERROR_ADD_SERVER_NOT_FOUND;
else if (response != null && response.StatusCode == HttpStatusCode.BadRequest)
else if (response != null && response.StatusCode == HttpStatusCode.BadRequest)
return BusinessErrorCodes.ERROR_ADD_SERVER_BAD_REQUEST;
else if (response != null && response.StatusCode == HttpStatusCode.InternalServerError)
else if (response != null && response.StatusCode == HttpStatusCode.InternalServerError)
return BusinessErrorCodes.ERROR_ADD_SERVER_INTERNAL_SERVER_ERROR;
else if (response != null && response.StatusCode == HttpStatusCode.ServiceUnavailable)
else if (response != null && response.StatusCode == HttpStatusCode.ServiceUnavailable)
return BusinessErrorCodes.ERROR_ADD_SERVER_SERVICE_UNAVAILABLE;
else if (response != null && response.StatusCode == HttpStatusCode.Unauthorized)
else if (response != null && response.StatusCode == HttpStatusCode.Unauthorized)
return BusinessErrorCodes.ERROR_ADD_SERVER_UNAUTHORIZED;
if (ex.Message.Contains("The remote name could not be resolved") || ex.Message.Contains("Unable to connect"))
{
@ -636,12 +636,12 @@ namespace WebsitePanel.EnterpriseServer
| DemandAccount.IsActive);
if (accountCheck < 0) return accountCheck;
// load original service
ServiceInfo origService = GetServiceInfo(service.ServiceId);
// load original service
ServiceInfo origService = GetServiceInfo(service.ServiceId);
TaskManager.StartTask("SERVER", "UPDATE_SERVICE");
TaskManager.ItemId = origService.ServerId;
TaskManager.ItemName = GetServerByIdInternal(origService.ServerId).ServerName;
TaskManager.ItemId = origService.ServerId;
TaskManager.ItemName = GetServerByIdInternal(origService.ServerId).ServerName;
TaskManager.WriteParameter("New service name", service.ServiceName);
DataProvider.UpdateService(service.ServiceId, service.ServiceName,
@ -854,7 +854,7 @@ namespace WebsitePanel.EnterpriseServer
res = ad.IsInstalled(provider.ProviderType);
}
catch(Exception ex)
catch (Exception ex)
{
TaskManager.CompleteResultTask(res, ErrorCodes.CANNOT_CHECK_IF_PROVIDER_SOFTWARE_INSTALLED, ex);
@ -1400,18 +1400,18 @@ namespace WebsitePanel.EnterpriseServer
private static string GetIPAddressesQuotaByResourceGroup(string groupName)
{
if (String.Compare(groupName, ResourceGroups.VPS, true) == 0)
{
return Quotas.VPS_EXTERNAL_IP_ADDRESSES_NUMBER;
}
else if (String.Compare(groupName, ResourceGroups.VPSForPC, true) == 0)
{
return Quotas.VPSForPC_EXTERNAL_IP_ADDRESSES_NUMBER;
}
else
{
return Quotas.WEB_IP_ADDRESSES;
}
if (String.Compare(groupName, ResourceGroups.VPS, true) == 0)
{
return Quotas.VPS_EXTERNAL_IP_ADDRESSES_NUMBER;
}
else if (String.Compare(groupName, ResourceGroups.VPSForPC, true) == 0)
{
return Quotas.VPSForPC_EXTERNAL_IP_ADDRESSES_NUMBER;
}
else
{
return Quotas.WEB_IP_ADDRESSES;
}
}
#endregion
@ -1521,7 +1521,8 @@ namespace WebsitePanel.EnterpriseServer
TaskManager.WriteParameter("Data", record.RecordData);
DataProvider.AddDnsRecord(SecurityContext.User.UserId, record.ServiceId, record.ServerId, record.PackageId,
record.RecordType, record.RecordName, record.RecordData, record.MxPriority, record.IpAddressId);
record.RecordType, record.RecordName, record.RecordData, record.MxPriority,
record.SrvPriority, record.SrvWeight, record.SrvPort, record.IpAddressId);
TaskManager.CompleteTask();
@ -1540,7 +1541,8 @@ namespace WebsitePanel.EnterpriseServer
TaskManager.WriteParameter("Data", record.RecordData);
DataProvider.UpdateDnsRecord(SecurityContext.User.UserId, record.RecordId,
record.RecordType, record.RecordName, record.RecordData, record.MxPriority, record.IpAddressId);
record.RecordType, record.RecordName, record.RecordData, record.MxPriority,
record.SrvPriority, record.SrvWeight, record.SrvPort, record.IpAddressId);
TaskManager.CompleteTask();
@ -1571,7 +1573,7 @@ namespace WebsitePanel.EnterpriseServer
#region Domains
public static int CheckDomain(string domainName)
{
int checkDomainResult = DataProvider.CheckDomain(-10, domainName);
int checkDomainResult = DataProvider.CheckDomain(-10, domainName, false);
if (checkDomainResult == -1)
return BusinessErrorCodes.ERROR_DOMAIN_ALREADY_EXISTS;
@ -1677,8 +1679,7 @@ namespace WebsitePanel.EnterpriseServer
}
public static int AddDomainWithProvisioning(int packageId, string domainName, DomainType domainType,
bool createWebSite, int pointWebSiteId, int pointMailDomainId,
bool createDnsZone, bool createInstantAlias, bool allowSubDomains)
bool createWebSite, int pointWebSiteId, int pointMailDomainId, bool createDnsZone, bool createInstantAlias, bool allowSubDomains)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
@ -1748,10 +1749,10 @@ namespace WebsitePanel.EnterpriseServer
public static int AddDomain(DomainInfo domain)
{
return AddDomain(domain, false);
return AddDomain(domain, false, false);
}
public static int AddDomain(DomainInfo domain, bool createInstantAlias)
public static int AddDomain(DomainInfo domain, bool createInstantAlias, bool createZone)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
@ -1762,7 +1763,7 @@ namespace WebsitePanel.EnterpriseServer
if (packageCheck < 0) return packageCheck;
// add main domain
int domainId = AddDomainInternal(domain.PackageId, domain.DomainName, true,
int domainId = AddDomainInternal(domain.PackageId, domain.DomainName, createZone,
domain.IsSubDomain, false, domain.IsDomainPointer, false);
if (domainId < 0)
@ -1805,7 +1806,7 @@ namespace WebsitePanel.EnterpriseServer
}
// check if the domain already exists
int checkResult = DataProvider.CheckDomain(packageId, domainName);
int checkResult = DataProvider.CheckDomain(packageId, domainName, isDomainPointer);
if (checkResult < 0)
{
@ -1816,15 +1817,18 @@ namespace WebsitePanel.EnterpriseServer
else
return checkResult;
}
if (domainName.ToLower().StartsWith("www."))
return BusinessErrorCodes.ERROR_DOMAIN_STARTS_WWW;
/*
if (domainName.ToLower().StartsWith("www."))
return BusinessErrorCodes.ERROR_DOMAIN_STARTS_WWW;
*/
// place log record
TaskManager.StartTask("DOMAIN", "ADD", domainName);
TaskManager.PackageId = packageId;
TaskManager.TaskParameters["CreateZone"] = createDnsZone;
// create DNS zone
int zoneItemId = 0;
if (createDnsZone)
@ -1895,33 +1899,33 @@ namespace WebsitePanel.EnterpriseServer
}
}
public static int DetachDomain(int domainId)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin);
if (accountCheck < 0) return accountCheck;
public static int DetachDomain(int domainId)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin);
if (accountCheck < 0) return accountCheck;
// load domain
DomainInfo domain = GetDomain(domainId);
// load domain
DomainInfo domain = GetDomain(domainId);
// place log record
TaskManager.StartTask("DOMAIN", "DETACH", domain.DomainName);
TaskManager.ItemId = domain.DomainId;
// place log record
TaskManager.StartTask("DOMAIN", "DETACH", domain.DomainName);
TaskManager.ItemId = domain.DomainId;
try
{
// check if domain can be deleted
if (domain.WebSiteId > 0)
{
TaskManager.WriteError("Domain points to the existing web site");
return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE;
}
try
{
// check if domain can be deleted
if (domain.WebSiteId > 0)
{
TaskManager.WriteError("Domain points to the existing web site");
return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE;
}
if (domain.MailDomainId > 0)
{
TaskManager.WriteError("Domain points to the existing mail domain");
return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_MAIL_DOMAIN;
}
if (domain.MailDomainId > 0)
{
TaskManager.WriteError("Domain points to the existing mail domain");
return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_MAIL_DOMAIN;
}
if (DataProvider.ExchangeOrganizationDomainExists(domain.DomainId))
{
@ -1930,25 +1934,25 @@ namespace WebsitePanel.EnterpriseServer
}
// remove DNS zone meta-item if required
if (domain.ZoneItemId > 0)
{
PackageController.DeletePackageItem(domain.ZoneItemId);
}
if (domain.ZoneItemId > 0)
{
PackageController.DeletePackageItem(domain.ZoneItemId);
}
// delete domain
DataProvider.DeleteDomain(SecurityContext.User.UserId, domainId);
// delete domain
DataProvider.DeleteDomain(SecurityContext.User.UserId, domainId);
return 0;
}
catch (Exception ex)
{
throw TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
}
return 0;
}
catch (Exception ex)
{
throw TaskManager.WriteError(ex);
}
finally
{
TaskManager.CompleteTask();
}
}
public static int DeleteDomain(int domainId)
{
@ -1992,8 +1996,8 @@ namespace WebsitePanel.EnterpriseServer
return res;
}
// delete zone if required
DnsServerController.DeleteZone(domain.ZoneItemId);
// delete zone if required
DnsServerController.DeleteZone(domain.ZoneItemId);
// delete domain
DataProvider.DeleteDomain(SecurityContext.User.UserId, domainId);
@ -2096,7 +2100,7 @@ namespace WebsitePanel.EnterpriseServer
}
// add web site DNS records
int res = AddWebSiteZoneRecords(domainId);
int res = AddWebSiteZoneRecords("", domainId);
if (res < 0)
return res;
@ -2112,7 +2116,7 @@ namespace WebsitePanel.EnterpriseServer
}
}
private static int AddWebSiteZoneRecords(int domainId)
private static int AddWebSiteZoneRecords(string hostName, int domainId)
{
// load domain
DomainInfo domain = GetDomainItem(domainId);
@ -2126,7 +2130,7 @@ namespace WebsitePanel.EnterpriseServer
return res;
}
public static int CreateDomainInstantAlias(int domainId)
public static int CreateDomainInstantAlias(string hostName, int domainId)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo);
@ -2166,14 +2170,15 @@ namespace WebsitePanel.EnterpriseServer
if (webRes < 0)
return webRes;
}
// add mail domain pointer
if (domain.MailDomainId > 0 && instantAlias.MailDomainId == 0)
{
int mailRes = MailServerController.AddMailDomainPointer(domain.MailDomainId, instantAliasId);
if (mailRes < 0)
return mailRes;
}
/*
// add mail domain pointer
if (domain.MailDomainId > 0 && instantAlias.MailDomainId == 0)
{
int mailRes = MailServerController.AddMailDomainPointer(domain.MailDomainId, instantAliasId);
if (mailRes < 0)
return mailRes;
}
*/
return 0;
}
@ -2214,14 +2219,15 @@ namespace WebsitePanel.EnterpriseServer
if (webRes < 0)
return webRes;
}
// remove from mail domain pointers
if (instantAlias.MailDomainId > 0)
{
int mailRes = MailServerController.DeleteMailDomainPointer(instantAlias.MailDomainId, instantAlias.DomainId);
if (mailRes < 0)
return mailRes;
}
/*
// remove from mail domain pointers
if (instantAlias.MailDomainId > 0)
{
int mailRes = MailServerController.DeleteMailDomainPointer(instantAlias.MailDomainId, instantAlias.DomainId);
if (mailRes < 0)
return mailRes;
}
*/
// delete instant alias
int res = DeleteDomain(instantAlias.DomainId);
@ -2272,12 +2278,15 @@ namespace WebsitePanel.EnterpriseServer
dt.Columns.Add("RecordName", typeof(string));
dt.Columns.Add("RecordData", typeof(string));
dt.Columns.Add("MxPriority", typeof(int));
dt.Columns.Add("SrvPriority", typeof(int));
dt.Columns.Add("SrvWeight", typeof(int));
dt.Columns.Add("SrvPort", typeof(int));
// add rows
DnsRecord[] records = GetDnsZoneRecords(domainId);
foreach (DnsRecord record in records)
{
dt.Rows.Add(record.RecordType, record.RecordName, record.RecordData, record.MxPriority);
dt.Rows.Add(record.RecordType, record.RecordName, record.RecordData, record.MxPriority, record.SrvPriority, record.SrvWeight, record.SrvPort);
}
return ds;
@ -2299,7 +2308,7 @@ namespace WebsitePanel.EnterpriseServer
}
public static int AddDnsZoneRecord(int domainId, string recordName, DnsRecordType recordType,
string recordData, int mxPriority)
string recordData, int mxPriority, int srvPriority, int srvWeight, int srvPort)
{
// check account
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive);
@ -2315,7 +2324,7 @@ namespace WebsitePanel.EnterpriseServer
// get DNS service
DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId);
if(zoneItem == null)
if (zoneItem == null)
return 0;
// place log record
@ -2337,6 +2346,9 @@ namespace WebsitePanel.EnterpriseServer
record.RecordName = recordName;
record.RecordData = recordData;
record.MxPriority = mxPriority;
record.SrvPriority = srvPriority;
record.SrvWeight = srvWeight;
record.SrvPort = srvPort;
dns.AddZoneRecord(zoneItem.Name, record);
return 0;
@ -2353,7 +2365,7 @@ namespace WebsitePanel.EnterpriseServer
public static int UpdateDnsZoneRecord(int domainId,
string originalRecordName, string originalRecordData,
string recordName, DnsRecordType recordType, string recordData, int mxPriority)
string recordName, DnsRecordType recordType, string recordData, int mxPriority, int srvPriority, int srvWeight, int srvPortNumber)
{
// place log record
DomainInfo domain = GetDomain(domainId);
@ -2367,7 +2379,7 @@ namespace WebsitePanel.EnterpriseServer
DeleteDnsZoneRecord(domainId, originalRecordName, recordType, originalRecordData);
// add new record
AddDnsZoneRecord(domainId, recordName, recordType, recordData, mxPriority);
AddDnsZoneRecord(domainId, recordName, recordType, recordData, mxPriority, srvPriority, srvWeight, srvPortNumber);
return 0;
}

View file

@ -346,7 +346,7 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
}
}
ServerController.AddDnsZoneRecord(domain.DomainId, hostName, DnsRecordType.A, hostedSharePointSettings["RootWebApplicationIpAddress"], 0);
ServerController.AddDnsZoneRecord(domain.DomainId, hostName, DnsRecordType.A, hostedSharePointSettings["RootWebApplicationIpAddress"], 0, 0, 0, 0);
}
}

View file

@ -173,7 +173,7 @@ namespace WebsitePanel.EnterpriseServer
domain.PackageId = createdPackageId;
domain.DomainName = domainName;
domain.HostingAllowed = false;
domainId = ServerController.AddDomain(domain, !tempDomain);
domainId = ServerController.AddDomain(domain, false, !tempDomain);
if (domainId < 0)
{
// rollback wizard

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation.
// Copyright (c) 2011, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -568,11 +568,11 @@ namespace WebsitePanel.EnterpriseServer
return ServerController.DeleteDomain(domainId);
}
[WebMethod]
public int DetachDomain(int domainId)
{
return ServerController.DetachDomain(domainId);
}
[WebMethod]
public int DetachDomain(int domainId)
{
return ServerController.DetachDomain(domainId);
}
[WebMethod]
public int EnableDomainDns(int domainId)
@ -587,9 +587,9 @@ namespace WebsitePanel.EnterpriseServer
}
[WebMethod]
public int CreateDomainInstantAlias(int domainId)
public int CreateDomainInstantAlias(string hostName, int domainId)
{
return ServerController.CreateDomainInstantAlias(domainId);
return ServerController.CreateDomainInstantAlias(hostName, domainId);
}
[WebMethod]
@ -614,18 +614,18 @@ namespace WebsitePanel.EnterpriseServer
[WebMethod]
public int AddDnsZoneRecord(int domainId, string recordName, DnsRecordType recordType,
string recordData, int mxPriority)
string recordData, int mxPriority, int srvPriority, int srvWeight, int srvPortNumber)
{
return ServerController.AddDnsZoneRecord(domainId, recordName, recordType, recordData, mxPriority);
return ServerController.AddDnsZoneRecord(domainId, recordName, recordType, recordData, mxPriority, srvPriority, srvWeight, srvPortNumber);
}
[WebMethod]
public int UpdateDnsZoneRecord(int domainId,
string originalRecordName, string originalRecordData,
string recordName, DnsRecordType recordType, string recordData, int mxPriority)
string recordName, DnsRecordType recordType, string recordData, int mxPriority, int srvPriority, int srvWeight, int srvPortNumber)
{
return ServerController.UpdateDnsZoneRecord(domainId, originalRecordName, originalRecordData,
recordName, recordType, recordData, mxPriority);
recordName, recordType, recordData, mxPriority, srvPriority, srvWeight, srvPortNumber);
}
[WebMethod]

View file

@ -39,6 +39,10 @@ namespace WebsitePanel.Providers.DNS
private string recordData;
private int mxPriority;
private string recordText;
private int srvPriority;
private int srvWeight;
private int srvPort;
public string RecordName
{
@ -69,5 +73,25 @@ namespace WebsitePanel.Providers.DNS
get { return this.recordText; }
set { this.recordText = value; }
}
public int SrvPriority
{
get { return this.srvPriority; }
set { this.srvPriority = value; }
}
public int SrvWeight
{
get { return this.srvWeight; }
set { this.srvWeight = value; }
}
public int SrvPort
{
get { return this.srvPort; }
set { this.srvPort = value; }
}
}
}

View file

@ -40,6 +40,8 @@ namespace WebsitePanel.Providers.DNS
CNAME,
SOA,
TXT,
SRV,
Other
}
}

View file

@ -39,7 +39,8 @@
//
// This source code was auto-generated by wsdl, Version=2.0.50727.42.
//
namespace WebsitePanel.Providers.DNS {
namespace WebsitePanel.Providers.DNS
{
using System.Diagnostics;
using System.Web.Services;
using System.ComponentModel;
@ -52,8 +53,9 @@ namespace WebsitePanel.Providers.DNS {
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="DNSServerSoap", Namespace="http://smbsaas/websitepanel/server/")]
public partial class DNSServer : Microsoft.Web.Services3.WebServicesClientProtocol {
[System.Web.Services.WebServiceBindingAttribute(Name = "DNSServerSoap", Namespace = "http://smbsaas/websitepanel/server/")]
public partial class DNSServer : Microsoft.Web.Services3.WebServicesClientProtocol
{
public ServiceProviderSettingsSoapHeader ServiceProviderSettingsSoapHeaderValue;
@ -80,7 +82,8 @@ namespace WebsitePanel.Providers.DNS {
private System.Threading.SendOrPostCallback DeleteZoneRecordsOperationCompleted;
/// <remarks/>
public DNSServer() {
public DNSServer()
{
this.Url = "http://localhost/WebsitePanelServer11/DnsServer.asmx";
}
@ -119,41 +122,49 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ZoneExists", 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 bool ZoneExists(string zoneName) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ZoneExists", 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 bool ZoneExists(string zoneName)
{
object[] results = this.Invoke("ZoneExists", new object[] {
zoneName});
return ((bool)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginZoneExists(string zoneName, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginZoneExists(string zoneName, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("ZoneExists", new object[] {
zoneName}, callback, asyncState);
}
/// <remarks/>
public bool EndZoneExists(System.IAsyncResult asyncResult) {
public bool EndZoneExists(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((bool)(results[0]));
}
/// <remarks/>
public void ZoneExistsAsync(string zoneName) {
public void ZoneExistsAsync(string zoneName)
{
this.ZoneExistsAsync(zoneName, null);
}
/// <remarks/>
public void ZoneExistsAsync(string zoneName, object userState) {
if ((this.ZoneExistsOperationCompleted == null)) {
public void ZoneExistsAsync(string zoneName, object userState)
{
if ((this.ZoneExistsOperationCompleted == null))
{
this.ZoneExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnZoneExistsOperationCompleted);
}
this.InvokeAsync("ZoneExists", new object[] {
zoneName}, this.ZoneExistsOperationCompleted, userState);
}
private void OnZoneExistsOperationCompleted(object arg) {
if ((this.ZoneExistsCompleted != null)) {
private void OnZoneExistsOperationCompleted(object arg)
{
if ((this.ZoneExistsCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.ZoneExistsCompleted(this, new ZoneExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -161,38 +172,46 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetZones", 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 string[] GetZones() {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetZones", 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 string[] GetZones()
{
object[] results = this.Invoke("GetZones", new object[0]);
return ((string[])(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetZones(System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetZones(System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("GetZones", new object[0], callback, asyncState);
}
/// <remarks/>
public string[] EndGetZones(System.IAsyncResult asyncResult) {
public string[] EndGetZones(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((string[])(results[0]));
}
/// <remarks/>
public void GetZonesAsync() {
public void GetZonesAsync()
{
this.GetZonesAsync(null);
}
/// <remarks/>
public void GetZonesAsync(object userState) {
if ((this.GetZonesOperationCompleted == null)) {
public void GetZonesAsync(object userState)
{
if ((this.GetZonesOperationCompleted == null))
{
this.GetZonesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetZonesOperationCompleted);
}
this.InvokeAsync("GetZones", new object[0], this.GetZonesOperationCompleted, userState);
}
private void OnGetZonesOperationCompleted(object arg) {
if ((this.GetZonesCompleted != null)) {
private void OnGetZonesOperationCompleted(object arg)
{
if ((this.GetZonesCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GetZonesCompleted(this, new GetZonesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -200,33 +219,39 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddPrimaryZone", 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 void AddPrimaryZone(string zoneName, string[] secondaryServers) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddPrimaryZone", 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 void AddPrimaryZone(string zoneName, string[] secondaryServers)
{
this.Invoke("AddPrimaryZone", new object[] {
zoneName,
secondaryServers});
}
/// <remarks/>
public System.IAsyncResult BeginAddPrimaryZone(string zoneName, string[] secondaryServers, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginAddPrimaryZone(string zoneName, string[] secondaryServers, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("AddPrimaryZone", new object[] {
zoneName,
secondaryServers}, callback, asyncState);
}
/// <remarks/>
public void EndAddPrimaryZone(System.IAsyncResult asyncResult) {
public void EndAddPrimaryZone(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void AddPrimaryZoneAsync(string zoneName, string[] secondaryServers) {
public void AddPrimaryZoneAsync(string zoneName, string[] secondaryServers)
{
this.AddPrimaryZoneAsync(zoneName, secondaryServers, null);
}
/// <remarks/>
public void AddPrimaryZoneAsync(string zoneName, string[] secondaryServers, object userState) {
if ((this.AddPrimaryZoneOperationCompleted == null)) {
public void AddPrimaryZoneAsync(string zoneName, string[] secondaryServers, object userState)
{
if ((this.AddPrimaryZoneOperationCompleted == null))
{
this.AddPrimaryZoneOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddPrimaryZoneOperationCompleted);
}
this.InvokeAsync("AddPrimaryZone", new object[] {
@ -234,8 +259,10 @@ namespace WebsitePanel.Providers.DNS {
secondaryServers}, this.AddPrimaryZoneOperationCompleted, userState);
}
private void OnAddPrimaryZoneOperationCompleted(object arg) {
if ((this.AddPrimaryZoneCompleted != null)) {
private void OnAddPrimaryZoneOperationCompleted(object arg)
{
if ((this.AddPrimaryZoneCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.AddPrimaryZoneCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -243,33 +270,39 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSecondaryZone", 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 void AddSecondaryZone(string zoneName, string[] masterServers) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddSecondaryZone", 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 void AddSecondaryZone(string zoneName, string[] masterServers)
{
this.Invoke("AddSecondaryZone", new object[] {
zoneName,
masterServers});
}
/// <remarks/>
public System.IAsyncResult BeginAddSecondaryZone(string zoneName, string[] masterServers, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginAddSecondaryZone(string zoneName, string[] masterServers, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("AddSecondaryZone", new object[] {
zoneName,
masterServers}, callback, asyncState);
}
/// <remarks/>
public void EndAddSecondaryZone(System.IAsyncResult asyncResult) {
public void EndAddSecondaryZone(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void AddSecondaryZoneAsync(string zoneName, string[] masterServers) {
public void AddSecondaryZoneAsync(string zoneName, string[] masterServers)
{
this.AddSecondaryZoneAsync(zoneName, masterServers, null);
}
/// <remarks/>
public void AddSecondaryZoneAsync(string zoneName, string[] masterServers, object userState) {
if ((this.AddSecondaryZoneOperationCompleted == null)) {
public void AddSecondaryZoneAsync(string zoneName, string[] masterServers, object userState)
{
if ((this.AddSecondaryZoneOperationCompleted == null))
{
this.AddSecondaryZoneOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSecondaryZoneOperationCompleted);
}
this.InvokeAsync("AddSecondaryZone", new object[] {
@ -277,8 +310,10 @@ namespace WebsitePanel.Providers.DNS {
masterServers}, this.AddSecondaryZoneOperationCompleted, userState);
}
private void OnAddSecondaryZoneOperationCompleted(object arg) {
if ((this.AddSecondaryZoneCompleted != null)) {
private void OnAddSecondaryZoneOperationCompleted(object arg)
{
if ((this.AddSecondaryZoneCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.AddSecondaryZoneCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -286,39 +321,47 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteZone", 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 void DeleteZone(string zoneName) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteZone", 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 void DeleteZone(string zoneName)
{
this.Invoke("DeleteZone", new object[] {
zoneName});
}
/// <remarks/>
public System.IAsyncResult BeginDeleteZone(string zoneName, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginDeleteZone(string zoneName, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("DeleteZone", new object[] {
zoneName}, callback, asyncState);
}
/// <remarks/>
public void EndDeleteZone(System.IAsyncResult asyncResult) {
public void EndDeleteZone(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void DeleteZoneAsync(string zoneName) {
public void DeleteZoneAsync(string zoneName)
{
this.DeleteZoneAsync(zoneName, null);
}
/// <remarks/>
public void DeleteZoneAsync(string zoneName, object userState) {
if ((this.DeleteZoneOperationCompleted == null)) {
public void DeleteZoneAsync(string zoneName, object userState)
{
if ((this.DeleteZoneOperationCompleted == null))
{
this.DeleteZoneOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteZoneOperationCompleted);
}
this.InvokeAsync("DeleteZone", new object[] {
zoneName}, this.DeleteZoneOperationCompleted, userState);
}
private void OnDeleteZoneOperationCompleted(object arg) {
if ((this.DeleteZoneCompleted != null)) {
private void OnDeleteZoneOperationCompleted(object arg)
{
if ((this.DeleteZoneCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.DeleteZoneCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -326,8 +369,9 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateSoaRecord", 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 void UpdateSoaRecord(string zoneName, string host, string primaryNsServer, string primaryPerson) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateSoaRecord", 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 void UpdateSoaRecord(string zoneName, string host, string primaryNsServer, string primaryPerson)
{
this.Invoke("UpdateSoaRecord", new object[] {
zoneName,
host,
@ -336,7 +380,8 @@ namespace WebsitePanel.Providers.DNS {
}
/// <remarks/>
public System.IAsyncResult BeginUpdateSoaRecord(string zoneName, string host, string primaryNsServer, string primaryPerson, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginUpdateSoaRecord(string zoneName, string host, string primaryNsServer, string primaryPerson, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("UpdateSoaRecord", new object[] {
zoneName,
host,
@ -345,18 +390,22 @@ namespace WebsitePanel.Providers.DNS {
}
/// <remarks/>
public void EndUpdateSoaRecord(System.IAsyncResult asyncResult) {
public void EndUpdateSoaRecord(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void UpdateSoaRecordAsync(string zoneName, string host, string primaryNsServer, string primaryPerson) {
public void UpdateSoaRecordAsync(string zoneName, string host, string primaryNsServer, string primaryPerson)
{
this.UpdateSoaRecordAsync(zoneName, host, primaryNsServer, primaryPerson, null);
}
/// <remarks/>
public void UpdateSoaRecordAsync(string zoneName, string host, string primaryNsServer, string primaryPerson, object userState) {
if ((this.UpdateSoaRecordOperationCompleted == null)) {
public void UpdateSoaRecordAsync(string zoneName, string host, string primaryNsServer, string primaryPerson, object userState)
{
if ((this.UpdateSoaRecordOperationCompleted == null))
{
this.UpdateSoaRecordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateSoaRecordOperationCompleted);
}
this.InvokeAsync("UpdateSoaRecord", new object[] {
@ -366,8 +415,10 @@ namespace WebsitePanel.Providers.DNS {
primaryPerson}, this.UpdateSoaRecordOperationCompleted, userState);
}
private void OnUpdateSoaRecordOperationCompleted(object arg) {
if ((this.UpdateSoaRecordCompleted != null)) {
private void OnUpdateSoaRecordOperationCompleted(object arg)
{
if ((this.UpdateSoaRecordCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.UpdateSoaRecordCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -375,41 +426,49 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetZoneRecords", 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 DnsRecord[] GetZoneRecords(string zoneName) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetZoneRecords", 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 DnsRecord[] GetZoneRecords(string zoneName)
{
object[] results = this.Invoke("GetZoneRecords", new object[] {
zoneName});
return ((DnsRecord[])(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginGetZoneRecords(string zoneName, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginGetZoneRecords(string zoneName, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("GetZoneRecords", new object[] {
zoneName}, callback, asyncState);
}
/// <remarks/>
public DnsRecord[] EndGetZoneRecords(System.IAsyncResult asyncResult) {
public DnsRecord[] EndGetZoneRecords(System.IAsyncResult asyncResult)
{
object[] results = this.EndInvoke(asyncResult);
return ((DnsRecord[])(results[0]));
}
/// <remarks/>
public void GetZoneRecordsAsync(string zoneName) {
public void GetZoneRecordsAsync(string zoneName)
{
this.GetZoneRecordsAsync(zoneName, null);
}
/// <remarks/>
public void GetZoneRecordsAsync(string zoneName, object userState) {
if ((this.GetZoneRecordsOperationCompleted == null)) {
public void GetZoneRecordsAsync(string zoneName, object userState)
{
if ((this.GetZoneRecordsOperationCompleted == null))
{
this.GetZoneRecordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetZoneRecordsOperationCompleted);
}
this.InvokeAsync("GetZoneRecords", new object[] {
zoneName}, this.GetZoneRecordsOperationCompleted, userState);
}
private void OnGetZoneRecordsOperationCompleted(object arg) {
if ((this.GetZoneRecordsCompleted != null)) {
private void OnGetZoneRecordsOperationCompleted(object arg)
{
if ((this.GetZoneRecordsCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.GetZoneRecordsCompleted(this, new GetZoneRecordsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -417,33 +476,39 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddZoneRecord", 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 void AddZoneRecord(string zoneName, DnsRecord record) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddZoneRecord", 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 void AddZoneRecord(string zoneName, DnsRecord record)
{
this.Invoke("AddZoneRecord", new object[] {
zoneName,
record});
}
/// <remarks/>
public System.IAsyncResult BeginAddZoneRecord(string zoneName, DnsRecord record, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginAddZoneRecord(string zoneName, DnsRecord record, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("AddZoneRecord", new object[] {
zoneName,
record}, callback, asyncState);
}
/// <remarks/>
public void EndAddZoneRecord(System.IAsyncResult asyncResult) {
public void EndAddZoneRecord(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void AddZoneRecordAsync(string zoneName, DnsRecord record) {
public void AddZoneRecordAsync(string zoneName, DnsRecord record)
{
this.AddZoneRecordAsync(zoneName, record, null);
}
/// <remarks/>
public void AddZoneRecordAsync(string zoneName, DnsRecord record, object userState) {
if ((this.AddZoneRecordOperationCompleted == null)) {
public void AddZoneRecordAsync(string zoneName, DnsRecord record, object userState)
{
if ((this.AddZoneRecordOperationCompleted == null))
{
this.AddZoneRecordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddZoneRecordOperationCompleted);
}
this.InvokeAsync("AddZoneRecord", new object[] {
@ -451,8 +516,10 @@ namespace WebsitePanel.Providers.DNS {
record}, this.AddZoneRecordOperationCompleted, userState);
}
private void OnAddZoneRecordOperationCompleted(object arg) {
if ((this.AddZoneRecordCompleted != null)) {
private void OnAddZoneRecordOperationCompleted(object arg)
{
if ((this.AddZoneRecordCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.AddZoneRecordCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -460,33 +527,39 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteZoneRecord", 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 void DeleteZoneRecord(string zoneName, DnsRecord record) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteZoneRecord", 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 void DeleteZoneRecord(string zoneName, DnsRecord record)
{
this.Invoke("DeleteZoneRecord", new object[] {
zoneName,
record});
}
/// <remarks/>
public System.IAsyncResult BeginDeleteZoneRecord(string zoneName, DnsRecord record, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginDeleteZoneRecord(string zoneName, DnsRecord record, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("DeleteZoneRecord", new object[] {
zoneName,
record}, callback, asyncState);
}
/// <remarks/>
public void EndDeleteZoneRecord(System.IAsyncResult asyncResult) {
public void EndDeleteZoneRecord(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void DeleteZoneRecordAsync(string zoneName, DnsRecord record) {
public void DeleteZoneRecordAsync(string zoneName, DnsRecord record)
{
this.DeleteZoneRecordAsync(zoneName, record, null);
}
/// <remarks/>
public void DeleteZoneRecordAsync(string zoneName, DnsRecord record, object userState) {
if ((this.DeleteZoneRecordOperationCompleted == null)) {
public void DeleteZoneRecordAsync(string zoneName, DnsRecord record, object userState)
{
if ((this.DeleteZoneRecordOperationCompleted == null))
{
this.DeleteZoneRecordOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteZoneRecordOperationCompleted);
}
this.InvokeAsync("DeleteZoneRecord", new object[] {
@ -494,8 +567,10 @@ namespace WebsitePanel.Providers.DNS {
record}, this.DeleteZoneRecordOperationCompleted, userState);
}
private void OnDeleteZoneRecordOperationCompleted(object arg) {
if ((this.DeleteZoneRecordCompleted != null)) {
private void OnDeleteZoneRecordOperationCompleted(object arg)
{
if ((this.DeleteZoneRecordCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.DeleteZoneRecordCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -503,33 +578,39 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddZoneRecords", 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 void AddZoneRecords(string zoneName, DnsRecord[] records) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AddZoneRecords", 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 void AddZoneRecords(string zoneName, DnsRecord[] records)
{
this.Invoke("AddZoneRecords", new object[] {
zoneName,
records});
}
/// <remarks/>
public System.IAsyncResult BeginAddZoneRecords(string zoneName, DnsRecord[] records, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginAddZoneRecords(string zoneName, DnsRecord[] records, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("AddZoneRecords", new object[] {
zoneName,
records}, callback, asyncState);
}
/// <remarks/>
public void EndAddZoneRecords(System.IAsyncResult asyncResult) {
public void EndAddZoneRecords(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void AddZoneRecordsAsync(string zoneName, DnsRecord[] records) {
public void AddZoneRecordsAsync(string zoneName, DnsRecord[] records)
{
this.AddZoneRecordsAsync(zoneName, records, null);
}
/// <remarks/>
public void AddZoneRecordsAsync(string zoneName, DnsRecord[] records, object userState) {
if ((this.AddZoneRecordsOperationCompleted == null)) {
public void AddZoneRecordsAsync(string zoneName, DnsRecord[] records, object userState)
{
if ((this.AddZoneRecordsOperationCompleted == null))
{
this.AddZoneRecordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddZoneRecordsOperationCompleted);
}
this.InvokeAsync("AddZoneRecords", new object[] {
@ -537,8 +618,10 @@ namespace WebsitePanel.Providers.DNS {
records}, this.AddZoneRecordsOperationCompleted, userState);
}
private void OnAddZoneRecordsOperationCompleted(object arg) {
if ((this.AddZoneRecordsCompleted != null)) {
private void OnAddZoneRecordsOperationCompleted(object arg)
{
if ((this.AddZoneRecordsCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.AddZoneRecordsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
@ -546,33 +629,39 @@ namespace WebsitePanel.Providers.DNS {
/// <remarks/>
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteZoneRecords", 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 void DeleteZoneRecords(string zoneName, DnsRecord[] records) {
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteZoneRecords", 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 void DeleteZoneRecords(string zoneName, DnsRecord[] records)
{
this.Invoke("DeleteZoneRecords", new object[] {
zoneName,
records});
}
/// <remarks/>
public System.IAsyncResult BeginDeleteZoneRecords(string zoneName, DnsRecord[] records, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginDeleteZoneRecords(string zoneName, DnsRecord[] records, System.AsyncCallback callback, object asyncState)
{
return this.BeginInvoke("DeleteZoneRecords", new object[] {
zoneName,
records}, callback, asyncState);
}
/// <remarks/>
public void EndDeleteZoneRecords(System.IAsyncResult asyncResult) {
public void EndDeleteZoneRecords(System.IAsyncResult asyncResult)
{
this.EndInvoke(asyncResult);
}
/// <remarks/>
public void DeleteZoneRecordsAsync(string zoneName, DnsRecord[] records) {
public void DeleteZoneRecordsAsync(string zoneName, DnsRecord[] records)
{
this.DeleteZoneRecordsAsync(zoneName, records, null);
}
/// <remarks/>
public void DeleteZoneRecordsAsync(string zoneName, DnsRecord[] records, object userState) {
if ((this.DeleteZoneRecordsOperationCompleted == null)) {
public void DeleteZoneRecordsAsync(string zoneName, DnsRecord[] records, object userState)
{
if ((this.DeleteZoneRecordsOperationCompleted == null))
{
this.DeleteZoneRecordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteZoneRecordsOperationCompleted);
}
this.InvokeAsync("DeleteZoneRecords", new object[] {
@ -580,15 +669,18 @@ namespace WebsitePanel.Providers.DNS {
records}, this.DeleteZoneRecordsOperationCompleted, userState);
}
private void OnDeleteZoneRecordsOperationCompleted(object arg) {
if ((this.DeleteZoneRecordsCompleted != null)) {
private void OnDeleteZoneRecordsOperationCompleted(object arg)
{
if ((this.DeleteZoneRecordsCompleted != null))
{
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.DeleteZoneRecordsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
public new void CancelAsync(object userState) {
public new void CancelAsync(object userState)
{
base.CancelAsync(userState);
}
}
@ -601,18 +693,22 @@ namespace WebsitePanel.Providers.DNS {
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class ZoneExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
public partial class ZoneExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal ZoneExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public bool Result {
get {
public bool Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((bool)(this.results[0]));
}
@ -627,18 +723,22 @@ namespace WebsitePanel.Providers.DNS {
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GetZonesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
public partial class GetZonesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal GetZonesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public string[] Result {
get {
public string[] Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((string[])(this.results[0]));
}
@ -669,18 +769,22 @@ namespace WebsitePanel.Providers.DNS {
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class GetZoneRecordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
public partial class GetZoneRecordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs
{
private object[] results;
internal GetZoneRecordsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
base(exception, cancelled, userState)
{
this.results = results;
}
/// <remarks/>
public DnsRecord[] Result {
get {
public DnsRecord[] Result
{
get
{
this.RaiseExceptionIfNecessary();
return ((DnsRecord[])(this.results[0]));
}

View file

@ -1,15 +1,13 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DnsZoneRecords.ascx.cs" Inherits="WebsitePanel.Portal.DnsZoneRecords" %>
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport"
TagPrefix="wsp" %>
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
<script type="text/javascript">
function confirmation()
{
if (!confirm('Are you sure you want to delete this DNS Zone Record?')) return false; else ShowProgressDialog('Deleting DNS Zone Record...');
}
function confirmation() {
if (!confirm('Are you sure you want to delete this DNS Zone Record?')) return false; else ShowProgressDialog('Deleting DNS Zone Record...');
}
</script>
<asp:Panel ID="pnlRecords" runat="server">
<div class="FormBody">
@ -33,6 +31,9 @@ function confirmation()
<asp:Literal ID="litRecordName" runat="server" Text='<%# Eval("RecordName") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordType" runat="server" Text='<%# Eval("RecordType") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordData" runat="server" Text='<%# Eval("RecordData") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litSrvPriority" runat="server" Text='<%# Eval("SrvPriority") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litSrvWeight" runat="server" Text='<%# Eval("SrvWeight") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litSrvPort" runat="server" Text='<%# Eval("SrvPort") %>' Visible="false"></asp:Literal>
</ItemTemplate>
<ItemStyle CssClass="NormalBold" Wrap="False" />
</asp:TemplateField>
@ -41,7 +42,7 @@ function confirmation()
<asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" >
<ItemStyle Width="100%" />
<ItemTemplate>
<%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority")) %>
<%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority"), (int)Eval("SrvPort"))%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
@ -77,6 +78,7 @@ function confirmation()
<asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>SRV</asp:ListItem>
</asp:DropDownList><asp:Literal ID="litRecordType" runat="server"></asp:Literal>
</td>
</tr>
@ -106,10 +108,43 @@ function confirmation()
<asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowSRVPriority" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVPriority" runat="server" meta:resourcekey="lblSRVPriority" Text="Priority:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtSRVPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSrvPriority" runat="server" ControlToValidate="txtSRVPriority"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectSrvPriority" runat="server" ControlToValidate="txtSRVPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowSRVWeight" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVWeight" runat="server" meta:resourcekey="lblSRVWeight" Text="Weight:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtSRVWeight" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSrvWeight" runat="server" ControlToValidate="txtSRVWeight"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectSrvWeight" runat="server" ControlToValidate="txtSRVWeight"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowSRVPort" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVPort" runat="server" meta:resourcekey="lblSRVPort" Text="Port Number:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtSRVPort" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSrvPort" runat="server" ControlToValidate="txtSRVPort"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectSrvPort" runat="server" ControlToValidate="txtSRVPort"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
</table>
</div>
<div class="FormFooter">
<asp:Button ID="btnSave" runat="server" meta:resourcekey="btnSave" Text="Save" CssClass="Button1" OnClick="btnSave_Click" OnClientClick = "ShowProgressDialog('Saving DNS Zone Record ...');" ValidationGroup="DnsZoneRecord" />
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" Text="Cancel" CssClass="Button1" OnClick="btnCancel_Click" CausesValidation="False" /></td>
<asp:Button ID="btnCancel" runat="server" meta:resourcekey="btnCancel" Text="Cancel" CssClass="Button1" OnClick="btnCancel_Click" CausesValidation="False" />
</div>
</asp:Panel>

View file

@ -54,25 +54,35 @@ namespace WebsitePanel.Portal
// toggle panels
ShowPanels(false);
// domain name
DomainInfo domain = ES.Services.Servers.GetDomain(PanelRequest.DomainID);
litDomainName.Text = domain.DomainName;
// domain name
DomainInfo domain = ES.Services.Servers.GetDomain(PanelRequest.DomainID);
litDomainName.Text = domain.DomainName;
}
}
public string GetRecordFullData(string recordType, string recordData, int mxPriority)
public string GetRecordFullData(string recordType, string recordData, int mxPriority, int port)
{
return (String.Compare(recordType, "mx", true) == 0)
? String.Format("[{0}], {1}", mxPriority, recordData) : recordData;
switch (recordType)
{
case "MX":
return String.Format("[{0}], {1}", mxPriority, recordData);
case "SRV":
return String.Format("[{0}], {1}", port, recordData);
default:
return recordData;
}
}
private void GetRecordsDetails(int recordIndex)
{
GridViewRow row = gvRecords.Rows[recordIndex];
ViewState["SrvPort"] = ((Literal)row.Cells[0].FindControl("litSrvPort")).Text;
ViewState["SrvWeight"] = ((Literal)row.Cells[0].FindControl("litSrvWeight")).Text;
ViewState["SrvPriority"] = ((Literal)row.Cells[0].FindControl("litSrvPriority")).Text;
ViewState["MxPriority"] = ((Literal)row.Cells[0].FindControl("litMxPriority")).Text;
ViewState["RecordName"] = ((Literal)row.Cells[0].FindControl("litRecordName")).Text; ;
ViewState["RecordType"] = (DnsRecordType)Enum.Parse(typeof(DnsRecordType),
((Literal)row.Cells[0].FindControl("litRecordType")).Text, true);
ViewState["RecordType"] = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), ((Literal)row.Cells[0].FindControl("litRecordType")).Text, true);
ViewState["RecordData"] = ((Literal)row.Cells[0].FindControl("litRecordData")).Text;
}
@ -88,6 +98,9 @@ namespace WebsitePanel.Portal
txtRecordName.Text = ViewState["RecordName"].ToString();
txtRecordData.Text = ViewState["RecordData"].ToString();
txtMXPriority.Text = ViewState["MxPriority"].ToString();
txtSRVPriority.Text = ViewState["SrvPriority"].ToString();
txtSRVWeight.Text = ViewState["SrvWeight"].ToString();
txtSRVPort.Text = ViewState["SrvPort"].ToString();
}
catch (Exception ex)
{
@ -103,24 +116,39 @@ namespace WebsitePanel.Portal
private void ToggleRecordControls()
{
rowMXPriority.Visible = (ddlRecordType.SelectedValue == "MX");
if (ddlRecordType.SelectedValue == "A")
rowMXPriority.Visible = false;
rowSRVPriority.Visible = false;
rowSRVWeight.Visible = false;
rowSRVPort.Visible = false;
lblRecordData.Text = "Record Data:";
IPValidator.Enabled = false;
switch (ddlRecordType.SelectedValue)
{
lblRecordData.Text = "IP:";
IPValidator.Enabled = true;
}
else
{
lblRecordData.Text = "Record Data:";
IPValidator.Enabled = false;
case "A":
lblRecordData.Text = "IP:";
IPValidator.Enabled = true;
break;
case "MX":
rowMXPriority.Visible = true;
break;
case "SRV":
rowSRVPriority.Visible = true;
rowSRVWeight.Visible = true;
rowSRVPort.Visible = true;
lblRecordData.Text = "Host offering this service:";
break;
default:
break;
}
}
private void SaveRecord()
{
if (Page.IsValid)
{
bool newRecord = (bool) ViewState["NewRecord"];
bool newRecord = (bool)ViewState["NewRecord"];
if (newRecord)
{
@ -130,10 +158,13 @@ namespace WebsitePanel.Portal
int result = ES.Services.Servers.AddDnsZoneRecord(PanelRequest.DomainID,
txtRecordName.Text.Trim(),
(DnsRecordType)
Enum.Parse(typeof (DnsRecordType),
Enum.Parse(typeof(DnsRecordType),
ddlRecordType.SelectedValue, true),
txtRecordData.Text.Trim(),
Int32.Parse(txtMXPriority.Text.Trim()));
Int32.Parse(txtMXPriority.Text.Trim()),
Int32.Parse(txtSRVPriority.Text.Trim()),
Int32.Parse(txtSRVWeight.Text.Trim()),
Int32.Parse(txtSRVPort.Text.Trim()));
if (result < 0)
{
@ -156,9 +187,12 @@ namespace WebsitePanel.Portal
ViewState["RecordName"].ToString(),
ViewState["RecordData"].ToString(),
txtRecordName.Text.Trim(),
(DnsRecordType) ViewState["RecordType"],
(DnsRecordType)ViewState["RecordType"],
txtRecordData.Text.Trim(),
Int32.Parse(txtMXPriority.Text.Trim()));
Int32.Parse(txtMXPriority.Text.Trim()),
Int32.Parse(txtSRVPriority.Text.Trim()),
Int32.Parse(txtSRVWeight.Text.Trim()),
Int32.Parse(txtSRVPort.Text.Trim()));
if (result < 0)
{
@ -217,6 +251,10 @@ namespace WebsitePanel.Portal
txtRecordName.Text = "";
txtRecordData.Text = "";
txtMXPriority.Text = "1";
txtSRVPriority.Text = "0";
txtSRVWeight.Text = "0";
txtSRVPort.Text = "0";
ShowPanels(true);
}
@ -253,7 +291,7 @@ namespace WebsitePanel.Portal
{
if (e.Exception != null)
{
ShowErrorMessage("GDNS_GET_RECORD", e.Exception);
ShowErrorMessage("GDNS_GET_RECORD", e.Exception);
//this.DisableControls = true;
e.ExceptionHandled = true;
}

View file

@ -1,7 +1,6 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.3074
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -220,6 +219,141 @@ namespace WebsitePanel.Portal {
/// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectPriority;
/// <summary>
/// rowSRVPriority control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVPriority;
/// <summary>
/// lblSRVPriority 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 lblSRVPriority;
/// <summary>
/// txtSRVPriority 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 txtSRVPriority;
/// <summary>
/// valRequireSrvPriority 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.RequiredFieldValidator valRequireSrvPriority;
/// <summary>
/// valRequireCorrectSrvPriority 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.RegularExpressionValidator valRequireCorrectSrvPriority;
/// <summary>
/// rowSRVWeight control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVWeight;
/// <summary>
/// lblSRVWeight 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 lblSRVWeight;
/// <summary>
/// txtSRVWeight 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 txtSRVWeight;
/// <summary>
/// valRequireSrvWeight 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.RequiredFieldValidator valRequireSrvWeight;
/// <summary>
/// valRequireCorrectSrvWeight 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.RegularExpressionValidator valRequireCorrectSrvWeight;
/// <summary>
/// rowSRVPort control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVPort;
/// <summary>
/// lblSRVPort 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 lblSRVPort;
/// <summary>
/// txtSRVPort 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 txtSRVPort;
/// <summary>
/// valRequireSrvPort 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.RequiredFieldValidator valRequireSrvPort;
/// <summary>
/// valRequireCorrectSrvPort 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.RegularExpressionValidator valRequireCorrectSrvPort;
/// <summary>
/// btnSave control.
/// </summary>

View file

@ -304,7 +304,7 @@ namespace WebsitePanel.Portal
try
{
// create instant alias
int result = ES.Services.Servers.CreateDomainInstantAlias(PanelRequest.DomainID);
int result = ES.Services.Servers.CreateDomainInstantAlias("", PanelRequest.DomainID);
if (result < 0)
{
ShowResultMessage(result);

View file

@ -49,10 +49,13 @@
<ItemTemplate>
<asp:ImageButton ID="cmdEdit" runat="server" SkinID="EditSmall" CommandName="edit" AlternateText="Edit record">
</asp:ImageButton>
<asp:Literal ID="litMxPriority" runat="server" Text='<%# Eval("MxPriority") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordName" runat="server" Text='<%# Eval("RecordName") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordType" runat="server" Text='<%# Eval("RecordType") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordData" runat="server" Text='<%# Eval("RecordData") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litMxPriority" runat="server" Text='<%# Eval("MxPriority") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordName" runat="server" Text='<%# Eval("RecordName") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordType" runat="server" Text='<%# Eval("RecordType") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litRecordData" runat="server" Text='<%# Eval("RecordData") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litSrvPriority" runat="server" Text='<%# Eval("SrvPriority") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litSrvWeight" runat="server" Text='<%# Eval("SrvWeight") %>' Visible="false"></asp:Literal>
<asp:Literal ID="litSrvPort" runat="server" Text='<%# Eval("SrvPort") %>' Visible="false"></asp:Literal>
</ItemTemplate>
<ItemStyle CssClass="NormalBold" Wrap="False" />
</asp:TemplateField>
@ -61,7 +64,7 @@
<asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" >
<ItemStyle Width="100%" />
<ItemTemplate>
<%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority")) %>
<%# GetRecordFullData((string)Eval("RecordType"), (string)Eval("RecordData"), (int)Eval("MxPriority"), (int)Eval("SrvPort"))%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
@ -112,11 +115,12 @@
<td class="SubHead" width="150" nowrap><asp:Label ID="lblRecordType" runat="server" meta:resourcekey="lblRecordType" Text="Record Type:"></asp:Label></td>
<td class="NormalBold" width="100%">
<asp:DropDownList ID="ddlRecordType" runat="server" SelectedValue='<%# Bind("RecordType") %>' CssClass="NormalTextBox" AutoPostBack="True" OnSelectedIndexChanged="ddlRecordType_SelectedIndexChanged">
<asp:ListItem>A</asp:ListItem>
<asp:ListItem>MX</asp:ListItem>
<asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>A</asp:ListItem>
<asp:ListItem>MX</asp:ListItem>
<asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>SRV</asp:ListItem>
</asp:DropDownList><asp:Literal ID="litRecordType" runat="server"></asp:Literal>
</td>
</tr>
@ -126,27 +130,60 @@
<asp:TextBox ID="txtRecordName" runat="server" Width="100px" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr id="rowData" runat="server">
<td class="SubHead"><asp:Label ID="lblRecordData" runat="server" meta:resourcekey="lblRecordData" Text="Record Data:"></asp:Label></td>
<td class="NormalBold" nowrap>
<asp:TextBox ID="txtRecordData" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireData" runat="server" ControlToValidate="txtRecordData"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
</td>
</tr>
<tr id="rowData" runat="server">
<td class="SubHead"><asp:Label ID="lblRecordData" runat="server" meta:resourcekey="lblRecordData" Text="Record Data:"></asp:Label></td>
<td class="NormalBold" nowrap>
<asp:TextBox ID="txtRecordData" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireData" runat="server" ControlToValidate="txtRecordData"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:regularexpressionvalidator id="IPValidator" runat="server" ValidationExpression="^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$"
Display="Dynamic" ErrorMessage="Please enter a valid IP" ValidationGroup="DnsZoneRecord" ControlToValidate="txtRecordData" CssClass="NormalBold"></asp:regularexpressionvalidator>
</td>
</tr>
<tr>
<asp:regularexpressionvalidator id="IPValidator1" runat="server" ValidationExpression="^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$"
Display="Dynamic" ErrorMessage="Please enter a valid IP" ValidationGroup="DnsZoneRecord" ControlToValidate="txtRecordData" CssClass="NormalBold"></asp:regularexpressionvalidator>
</tr>
<tr id="rowMXPriority" runat="server">
<td class="SubHead"><asp:Label ID="lblMXPriority" runat="server" meta:resourcekey="lblMXPriority" Text="MX Priority:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireMxPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowMXPriority" runat="server">
<td class="SubHead"><asp:Label ID="lblMXPriority" runat="server" meta:resourcekey="lblMXPriority" Text="MX Priority:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireMxPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowSRVPriority" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVPriority" runat="server" meta:resourcekey="lblSRVPriority" Text="Priority:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtSRVPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSrvPriority" runat="server" ControlToValidate="txtSRVPriority"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectSrvPriority" runat="server" ControlToValidate="txtSRVPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowSRVWeight" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVWeight" runat="server" meta:resourcekey="lblSRVWeight" Text="Weight:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtSRVWeight" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSrvWeight" runat="server" ControlToValidate="txtSRVWeight"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectSrvWeight" runat="server" ControlToValidate="txtSRVWeight"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
<tr id="rowSRVPort" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVPort" runat="server" meta:resourcekey="lblSRVPort" Text="Port Number:"></asp:Label></td>
<td class="NormalBold">
<asp:TextBox ID="txtSRVPort" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireSrvPort" runat="server" ControlToValidate="txtSRVPort"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectSrvPort" runat="server" ControlToValidate="txtSRVPort"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr>
</table>
</ContentTemplate>

View file

@ -59,44 +59,53 @@ namespace WebsitePanel.Portal.ExchangeServer
}
}
public string GetRecordFullData(string recordType, string recordData, int mxPriority)
public string GetRecordFullData(string recordType, string recordData, int mxPriority, int port)
{
return (String.Compare(recordType, "mx", true) == 0)
? String.Format("[{0}], {1}", mxPriority, recordData) : recordData;
}
switch (recordType)
{
case "MX":
return String.Format("[{0}], {1}", mxPriority, recordData);
case "SRV":
return String.Format("[{0}], {1}", port, recordData);
default:
return recordData;
}
}
private void GetRecordsDetails(int recordIndex)
{
GridViewRow row = gvRecords.Rows[recordIndex];
ViewState["MxPriority"] = ((Literal)row.Cells[0].FindControl("litMxPriority")).Text;
ViewState["RecordName"] = ((Literal)row.Cells[0].FindControl("litRecordName")).Text; ;
ViewState["RecordType"] = (DnsRecordType)Enum.Parse(typeof(DnsRecordType),
((Literal)row.Cells[0].FindControl("litRecordType")).Text, true);
ViewState["RecordData"] = ((Literal)row.Cells[0].FindControl("litRecordData")).Text;
}
GridViewRow row = gvRecords.Rows[recordIndex];
ViewState["SrvPort"] = ((Literal)row.Cells[0].FindControl("litSrvPort")).Text;
ViewState["SrvWeight"] = ((Literal)row.Cells[0].FindControl("litSrvWeight")).Text;
ViewState["SrvPriority"] = ((Literal)row.Cells[0].FindControl("litSrvPriority")).Text;
ViewState["MxPriority"] = ((Literal)row.Cells[0].FindControl("litMxPriority")).Text;
ViewState["RecordName"] = ((Literal)row.Cells[0].FindControl("litRecordName")).Text; ;
ViewState["RecordType"] = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), ((Literal)row.Cells[0].FindControl("litRecordType")).Text, true);
ViewState["RecordData"] = ((Literal)row.Cells[0].FindControl("litRecordData")).Text;
}
private void BindDnsRecord(int recordIndex)
{
try
{
litRecordType.Visible = true;
ddlRecordType.Visible = false;
try
{
ViewState["NewRecord"] = false;
GetRecordsDetails(recordIndex);
GetRecordsDetails(recordIndex);
ddlRecordType.SelectedValue = ViewState["RecordType"].ToString();
litRecordType.Text = ViewState["RecordType"].ToString();
txtRecordName.Text = ViewState["RecordName"].ToString();
txtRecordData.Text = ViewState["RecordData"].ToString();
txtMXPriority.Text = ViewState["MxPriority"].ToString();
ToggleRecordControls();
}
catch (Exception ex)
{
messageBox.ShowErrorMessage("GDNS_GET_RECORD", ex);
return;
}
}
ddlRecordType.SelectedValue = ViewState["RecordType"].ToString();
litRecordType.Text = ViewState["RecordType"].ToString();
txtRecordName.Text = ViewState["RecordName"].ToString();
txtRecordData.Text = ViewState["RecordData"].ToString();
txtMXPriority.Text = ViewState["MxPriority"].ToString();
txtSRVPriority.Text = ViewState["SrvPriority"].ToString();
txtSRVWeight.Text = ViewState["SrvWeight"].ToString();
txtSRVPort.Text = ViewState["SrvPort"].ToString();
}
catch (Exception ex)
{
ShowErrorMessage("GDNS_GET_RECORD", ex);
return;
}
}
protected void ddlRecordType_SelectedIndexChanged(object sender, EventArgs e)
{
@ -105,19 +114,32 @@ namespace WebsitePanel.Portal.ExchangeServer
private void ToggleRecordControls()
{
rowMXPriority.Visible = (ddlRecordType.SelectedValue == "MX");
rowMXPriority.Visible = false;
rowSRVPriority.Visible = false;
rowSRVWeight.Visible = false;
rowSRVPort.Visible = false;
lblRecordData.Text = "Record Data:";
IPValidator.Enabled = false;
if (ddlRecordType.SelectedValue == "A")
switch (ddlRecordType.SelectedValue)
{
lblRecordData.Text = "IP:";
IPValidator1.Enabled = true;
case "A":
lblRecordData.Text = "IP:";
IPValidator.Enabled = true;
break;
case "MX":
rowMXPriority.Visible = true;
break;
case "SRV":
rowSRVPriority.Visible = true;
rowSRVWeight.Visible = true;
rowSRVPort.Visible = true;
lblRecordData.Text = "Host offering this service:";
break;
default:
break;
}
else
{
lblRecordData.Text = "Record Data:";
IPValidator1.Enabled = false;
}
}
}
private void SaveRecord()
{
@ -131,11 +153,16 @@ namespace WebsitePanel.Portal.ExchangeServer
// add record
try
{
int result = ES.Services.Servers.AddDnsZoneRecord(PanelRequest.DomainID,
txtRecordName.Text.Trim(),
(DnsRecordType)Enum.Parse(typeof(DnsRecordType), ddlRecordType.SelectedValue, true),
txtRecordData.Text.Trim(),
Utils.ParseInt(txtMXPriority.Text.Trim(), 0));
int result = ES.Services.Servers.AddDnsZoneRecord(PanelRequest.DomainID,
txtRecordName.Text.Trim(),
(DnsRecordType)
Enum.Parse(typeof(DnsRecordType),
ddlRecordType.SelectedValue, true),
txtRecordData.Text.Trim(),
Int32.Parse(txtMXPriority.Text.Trim()),
Int32.Parse(txtSRVPriority.Text.Trim()),
Int32.Parse(txtSRVWeight.Text.Trim()),
Int32.Parse(txtSRVPort.Text.Trim()));
if (result < 0)
{
@ -154,13 +181,16 @@ namespace WebsitePanel.Portal.ExchangeServer
// update record
try
{
int result = ES.Services.Servers.UpdateDnsZoneRecord(PanelRequest.DomainID,
ViewState["RecordName"].ToString(),
ViewState["RecordData"].ToString(),
txtRecordName.Text.Trim(),
(DnsRecordType)ViewState["RecordType"],
txtRecordData.Text.Trim(),
Utils.ParseInt(txtMXPriority.Text.Trim(), 0));
int result = ES.Services.Servers.UpdateDnsZoneRecord(PanelRequest.DomainID,
ViewState["RecordName"].ToString(),
ViewState["RecordData"].ToString(),
txtRecordName.Text.Trim(),
(DnsRecordType)ViewState["RecordType"],
txtRecordData.Text.Trim(),
Int32.Parse(txtMXPriority.Text.Trim()),
Int32.Parse(txtSRVPriority.Text.Trim()),
Int32.Parse(txtSRVWeight.Text.Trim()),
Int32.Parse(txtSRVPort.Text.Trim()));
if (result < 0)
{
@ -220,18 +250,21 @@ namespace WebsitePanel.Portal.ExchangeServer
private void ResetPopup()
{
EditRecordModal.Hide();
ViewState["ExistingRecord"] = null;
EditRecordModal.Hide();
ViewState["ExistingRecord"] = null;
// erase fields
litRecordType.Visible = false;
ddlRecordType.Visible = true;
ddlRecordType.SelectedIndex = 0;
txtRecordName.Text = "";
txtRecordData.Text = "";
txtMXPriority.Text = "1";
ToggleRecordControls();
}
// erase fields
litRecordType.Visible = false;
ddlRecordType.Visible = true;
ddlRecordType.SelectedIndex = 0;
txtRecordName.Text = "";
txtRecordData.Text = "";
txtMXPriority.Text = "1";
txtSRVPriority.Text = "0";
txtSRVWeight.Text = "0";
txtSRVPort.Text = "0";
ToggleRecordControls();
}
protected void gvRecords_RowEditing(object sender, GridViewEditEventArgs e)
{

View file

@ -1,7 +1,6 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1433
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -229,6 +228,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireData;
/// <summary>
/// IPValidator 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.RegularExpressionValidator IPValidator;
/// <summary>
/// IPValidator1 control.
/// </summary>
@ -283,6 +291,141 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectPriority;
/// <summary>
/// rowSRVPriority control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVPriority;
/// <summary>
/// lblSRVPriority 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 lblSRVPriority;
/// <summary>
/// txtSRVPriority 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 txtSRVPriority;
/// <summary>
/// valRequireSrvPriority 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.RequiredFieldValidator valRequireSrvPriority;
/// <summary>
/// valRequireCorrectSrvPriority 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.RegularExpressionValidator valRequireCorrectSrvPriority;
/// <summary>
/// rowSRVWeight control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVWeight;
/// <summary>
/// lblSRVWeight 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 lblSRVWeight;
/// <summary>
/// txtSRVWeight 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 txtSRVWeight;
/// <summary>
/// valRequireSrvWeight 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.RequiredFieldValidator valRequireSrvWeight;
/// <summary>
/// valRequireCorrectSrvWeight 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.RegularExpressionValidator valRequireCorrectSrvWeight;
/// <summary>
/// rowSRVPort control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVPort;
/// <summary>
/// lblSRVPort 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 lblSRVPort;
/// <summary>
/// txtSRVPort 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 txtSRVPort;
/// <summary>
/// valRequireSrvPort 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.RequiredFieldValidator valRequireSrvPort;
/// <summary>
/// valRequireCorrectSrvPort 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.RegularExpressionValidator valRequireCorrectSrvPort;
/// <summary>
/// btnSave control.
/// </summary>

View file

@ -39,6 +39,7 @@
<asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>SRV</asp:ListItem>
</asp:DropDownList>
</td>
</tr>
@ -60,6 +61,28 @@
<asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr id="rowSRVPriority" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVPriority" runat="server" meta:resourcekey="lblSRVPriority" Text="SRV Priority:"></asp:Label></td>
<td class="Normal">
<asp:TextBox ID="txtSRVPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr id="rowSRVWeight" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVWeight" runat="server" meta:resourcekey="lblSRVWeight" Text="Weight:"></asp:Label></td>
<td class="Normal">
<asp:TextBox ID="txtSRVWeight" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr id="rowSRVPort" runat="server">
<td class="SubHead"><asp:Label ID="lblSRVPort" runat="server" meta:resourcekey="lblSRVPort" Text="Port Number:"></asp:Label></td>
<td class="Normal">
<asp:TextBox ID="txtSRVPort" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2">
<asp:Button ID="btnSave" runat="server" meta:resourcekey="btnSave" Text="Save" CssClass="Button1" OnClick="btnSave_Click" ValidationGroup="DnsRecord" />

View file

@ -1,4 +1,4 @@
// Copyright (c) 2012, Outercurve Foundation.
// Copyright (c) 2011, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -86,6 +86,7 @@ namespace WebsitePanel.Portal
return;
}
}
}
private void BindDnsRecords()
@ -104,6 +105,8 @@ namespace WebsitePanel.Portal
gvRecords.DataSource = ds;
gvRecords.DataBind();
}
ToggleRecordControls();
}
private void BindDnsRecord(int recordId)
@ -119,6 +122,9 @@ namespace WebsitePanel.Portal
txtRecordName.Text = record.RecordName;
txtRecordData.Text = record.RecordData;
txtMXPriority.Text = record.MxPriority.ToString();
txtSRVPriority.Text = record.SrvPriority.ToString();
txtSRVWeight.Text = record.SrvWeight.ToString();
txtSRVPort.Text = record.SrvPort.ToString();
ipAddress.AddressId = record.IpAddressId;
}
@ -138,9 +144,32 @@ namespace WebsitePanel.Portal
private void ToggleRecordControls()
{
ipAddress.Visible = (ddlRecordType.SelectedValue == "A");
//rowData.Visible = (ddlRecordType.SelectedValue != "A");
rowMXPriority.Visible = (ddlRecordType.SelectedValue == "MX");
rowMXPriority.Visible = false;
rowSRVPriority.Visible = false;
rowSRVWeight.Visible = false;
rowSRVPort.Visible = false;
lblRecordData.Text = "Record Data:";
ipAddress.Visible = false;
switch (ddlRecordType.SelectedValue)
{
case "A":
lblRecordData.Text = "IP:";
ipAddress.Visible = true;
break;
case "MX":
rowMXPriority.Visible = true;
break;
case "SRV":
rowSRVPriority.Visible = true;
rowSRVWeight.Visible = true;
rowSRVPort.Visible = true;
lblRecordData.Text = "Host offering this service:";
break;
default:
break;
}
}
private void SaveRecord()
@ -151,6 +180,9 @@ namespace WebsitePanel.Portal
record.RecordName = txtRecordName.Text.Trim();
record.RecordData = txtRecordData.Text.Trim();
record.MxPriority = Utils.ParseInt(txtMXPriority.Text, 0);
record.SrvPriority = Utils.ParseInt(txtSRVPriority.Text, 0);
record.SrvWeight = Utils.ParseInt(txtSRVWeight.Text, 0);
record.SrvPort = Utils.ParseInt(txtSRVPort.Text, 0);
record.IpAddressId = ipAddress.AddressId;
if (ServiceIdParam != null)
@ -230,6 +262,11 @@ namespace WebsitePanel.Portal
txtRecordName.Text = "";
txtRecordData.Text = "";
txtMXPriority.Text = "0";
txtSRVPriority.Text = "0";
txtSRVWeight.Text = "0";
txtSRVPort.Text = "0";
ToggleRecordControls();
ShowPanels(true);
}

View file

@ -1,7 +1,6 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.42
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
@ -10,23 +9,241 @@
namespace WebsitePanel.Portal {
public partial class GlobalDnsRecordsControl {
protected System.Web.UI.WebControls.Panel pnlRecords;
protected System.Web.UI.WebControls.Button btnAdd;
protected System.Web.UI.WebControls.GridView gvRecords;
protected System.Web.UI.WebControls.Panel pnlEdit;
protected System.Web.UI.WebControls.Label lblRecordType;
protected System.Web.UI.WebControls.DropDownList ddlRecordType;
protected System.Web.UI.WebControls.Label lblRecordName;
protected System.Web.UI.WebControls.TextBox txtRecordName;
protected System.Web.UI.HtmlControls.HtmlTableRow rowData;
protected System.Web.UI.WebControls.Label lblRecordData;
protected System.Web.UI.WebControls.TextBox txtRecordData;
protected WebsitePanel.Portal.SelectIPAddress ipAddress;
protected System.Web.UI.HtmlControls.HtmlTableRow rowMXPriority;
protected System.Web.UI.WebControls.Label lblMXPriority;
protected System.Web.UI.WebControls.TextBox txtMXPriority;
protected System.Web.UI.WebControls.Button btnSave;
protected System.Web.UI.WebControls.Button btnCancel;
/// <summary>
/// pnlRecords 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.Panel pnlRecords;
/// <summary>
/// btnAdd 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.Button btnAdd;
/// <summary>
/// gvRecords 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.GridView gvRecords;
/// <summary>
/// pnlEdit 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.Panel pnlEdit;
/// <summary>
/// lblRecordType 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 lblRecordType;
/// <summary>
/// ddlRecordType 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.DropDownList ddlRecordType;
/// <summary>
/// lblRecordName 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 lblRecordName;
/// <summary>
/// txtRecordName 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 txtRecordName;
/// <summary>
/// rowData control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowData;
/// <summary>
/// lblRecordData 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 lblRecordData;
/// <summary>
/// txtRecordData 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 txtRecordData;
/// <summary>
/// ipAddress control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::WebsitePanel.Portal.SelectIPAddress ipAddress;
/// <summary>
/// rowMXPriority control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowMXPriority;
/// <summary>
/// lblMXPriority 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 lblMXPriority;
/// <summary>
/// txtMXPriority 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 txtMXPriority;
/// <summary>
/// rowSRVPriority control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVPriority;
/// <summary>
/// lblSRVPriority 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 lblSRVPriority;
/// <summary>
/// txtSRVPriority 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 txtSRVPriority;
/// <summary>
/// rowSRVWeight control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVWeight;
/// <summary>
/// lblSRVWeight 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 lblSRVWeight;
/// <summary>
/// txtSRVWeight 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 txtSRVWeight;
/// <summary>
/// rowSRVPort control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow rowSRVPort;
/// <summary>
/// lblSRVPort 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 lblSRVPort;
/// <summary>
/// txtSRVPort 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 txtSRVPort;
/// <summary>
/// btnSave 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.Button btnSave;
/// <summary>
/// btnCancel 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.Button btnCancel;
}
}

View file

@ -1,4 +1,4 @@
// Copyright (c) 2011, Outercurve Foundation.
// Copyright (c) 2012, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
@ -273,7 +273,7 @@ namespace WebsitePanel.Portal
private void AddDnsRecord(int domainId, string recordName, string recordData)
{
int result = ES.Services.Servers.AddDnsZoneRecord(domainId, recordName, DnsRecordType.A, recordData, 0);
int result = ES.Services.Servers.AddDnsZoneRecord(domainId, recordName, DnsRecordType.A, recordData, 0, 0, 0, 0);
if (result < 0)
{
ShowResultMessage(result);