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 ServiceItems AS Z ON D.ZoneItemID = Z.ItemID
LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID LEFT OUTER JOIN Services AS S ON Z.ServiceID = S.ServiceID
LEFT OUTER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID 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) ((@Recursive = 0 AND D.PackageID = @PackageID)
OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, D.PackageID) = 1)) OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, D.PackageID) = 1))
AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID)) AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
@ -3306,6 +3306,7 @@ CREATE PROCEDURE CheckDomain
( (
@PackageID int, @PackageID int,
@DomainName nvarchar(100), @DomainName nvarchar(100),
@IsDomainPointer bit,
@Result int OUTPUT @Result int OUTPUT
) )
AS AS
@ -3322,7 +3323,7 @@ SET @Result = 0 -- OK
-- check if the domain already exists -- check if the domain already exists
IF EXISTS( IF EXISTS(
SELECT DomainID FROM Domains SELECT DomainID FROM Domains
WHERE DomainName = @DomainName WHERE DomainName = @DomainName AND IsDomainPointer = @IsDomainPointer
) )
BEGIN BEGIN
SET @Result = -1 SET @Result = -1
@ -15772,6 +15773,9 @@ CREATE TABLE [dbo].[GlobalDnsRecords](
[ServerID] [int] NULL, [ServerID] [int] NULL,
[PackageID] [int] NULL, [PackageID] [int] NULL,
[IPAddressID] [int] NULL, [IPAddressID] [int] NULL,
[SrvPriority] [int] NULL,
[SrvWeight] [int] NULL,
[SrvPort] [int] NULL,
CONSTRAINT [PK_GlobalDnsRecords] PRIMARY KEY CLUSTERED CONSTRAINT [PK_GlobalDnsRecords] PRIMARY KEY CLUSTERED
( (
[RecordID] ASC [RecordID] ASC
@ -23347,6 +23351,9 @@ CREATE PROCEDURE UpdateDnsRecord
@RecordName nvarchar(50), @RecordName nvarchar(50),
@RecordData nvarchar(500), @RecordData nvarchar(500),
@MXPriority int, @MXPriority int,
@SrvPriority int,
@SrvWeight int,
@SrvPort int,
@IPAddressID int @IPAddressID int
) )
AS AS
@ -23377,6 +23384,9 @@ SET
RecordName = @RecordName, RecordName = @RecordName,
RecordData = @RecordData, RecordData = @RecordData,
MXPriority = @MXPriority, MXPriority = @MXPriority,
SrvPriority = @SrvPriority,
SrvWeight = @SrvWeight,
SrvPort = @SrvPort,
IPAddressID = @IPAddressID IPAddressID = @IPAddressID
WHERE WHERE
RecordID = @RecordID RecordID = @RecordID
@ -23484,6 +23494,9 @@ SELECT
NR.RecordName, NR.RecordName,
NR.RecordData, NR.RecordData,
NR.MXPriority, NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID NR.IPAddressID
FROM FROM
GlobalDnsRecords AS NR GlobalDnsRecords AS NR
@ -23669,6 +23682,9 @@ CREATE PROCEDURE AddDnsRecord
@RecordName nvarchar(50), @RecordName nvarchar(50),
@RecordData nvarchar(500), @RecordData nvarchar(500),
@MXPriority int, @MXPriority int,
@SrvPriority int,
@SrvWeight int,
@SrvPort int,
@IPAddressID int @IPAddressID int
) )
AS AS
@ -23693,8 +23709,12 @@ IF EXISTS
UPDATE GlobalDnsRecords UPDATE GlobalDnsRecords
SET SET
RecordData = RecordData, RecordData = @RecordData,
MXPriority = MXPriority, MXPriority = @MXPriority,
SrvPriority = @SrvPriority,
SrvWeight = @SrvWeight,
SrvPort = @SrvPort,
IPAddressID = @IPAddressID IPAddressID = @IPAddressID
WHERE WHERE
ServiceID = @ServiceID AND ServerID = @ServerID AND PackageID = @PackageID ServiceID = @ServiceID AND ServerID = @ServerID AND PackageID = @PackageID
@ -23708,6 +23728,9 @@ ELSE
RecordName, RecordName,
RecordData, RecordData,
MXPriority, MXPriority,
SrvPriority,
SrvWeight,
SrvPort,
IPAddressID IPAddressID
) )
VALUES VALUES
@ -23719,6 +23742,9 @@ ELSE
@RecordName, @RecordName,
@RecordData, @RecordData,
@MXPriority, @MXPriority,
@SrvPriority,
@SrvWeight,
@SrvPort,
@IPAddressID @IPAddressID
) )
@ -35697,7 +35723,7 @@ BEGIN
GR.RecordName GR.RecordName
FROM GlobalDNSRecords AS GR FROM GlobalDNSRecords AS GR
WHERE GR.PackageID = @TmpPackageID 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 SET @ParentPackageID = NULL
@ -35725,7 +35751,7 @@ SELECT
GR.RecordName GR.RecordName
FROM GlobalDNSRecords AS GR FROM GlobalDNSRecords AS GR
WHERE GR.ServerID = @ServerID 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 -- select SERVICES DNS records
@ -35739,7 +35765,7 @@ SELECT
GR.RecordName GR.RecordName
FROM GlobalDNSRecords AS GR FROM GlobalDNSRecords AS GR
WHERE GR.ServiceID IN (SELECT ServiceID FROM PackageServices WHERE PackageID = @PackageID) 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 SELECT
@ -35751,12 +35777,16 @@ SELECT
NR.RecordName, NR.RecordName,
NR.RecordData, NR.RecordData,
NR.MXPriority, NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID, NR.IPAddressID,
ISNULL(IP.ExternalIP, '') AS ExternalIP, ISNULL(IP.ExternalIP, '') AS ExternalIP,
ISNULL(IP.InternalIP, '') AS InternalIP, ISNULL(IP.InternalIP, '') AS InternalIP,
CASE CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) 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 = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData ELSE NR.RecordData
END AS FullRecordData, END AS FullRecordData,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress
@ -35855,10 +35885,14 @@ SELECT
CASE CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) 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 = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData ELSE NR.RecordData
END AS FullRecordData, END AS FullRecordData,
NR.RecordData, NR.RecordData,
NR.MXPriority, NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID, NR.IPAddressID,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress, dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP, IP.ExternalIP,
@ -35958,9 +35992,13 @@ SELECT
CASE CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) 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 = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData ELSE NR.RecordData
END AS FullRecordData, END AS FullRecordData,
NR.MXPriority, NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID, NR.IPAddressID,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress, dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress,
IP.ExternalIP, IP.ExternalIP,
@ -36005,6 +36043,7 @@ RETURN
GO GO
@ -36062,10 +36101,14 @@ SELECT
NR.RecordName, NR.RecordName,
NR.RecordData, NR.RecordData,
NR.MXPriority, NR.MXPriority,
NR.SrvPriority,
NR.SrvWeight,
NR.SrvPort,
NR.IPAddressID, NR.IPAddressID,
CASE CASE
WHEN NR.RecordType = 'A' AND NR.RecordData = '' THEN dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) 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 = 'MX' THEN CONVERT(varchar(3), NR.MXPriority) + ', ' + NR.RecordData
WHEN NR.RecordType = 'SRV' THEN CONVERT(varchar(3), NR.SrvPort) + ', ' + NR.RecordData
ELSE NR.RecordData ELSE NR.RecordData
END AS FullRecordData, END AS FullRecordData,
dbo.GetFullIPAddress(IP.ExternalIP, IP.InternalIP) AS IPAddress, 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'') INSERT [dbo].[ServiceDefaultProperties] ([ProviderID], [PropertyName], [PropertyValue]) VALUES (63, N'AdminPassword', N'')
END END
GO 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 public class GlobalDnsRecord
{ {
private int recordId; 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 public int RecordId
{ {
@ -43,63 +59,54 @@ namespace WebsitePanel.EnterpriseServer
set { recordId = value; } set { recordId = value; }
} }
private int recordOrder;
public int RecordOrder public int RecordOrder
{ {
get { return recordOrder; } get { return recordOrder; }
set { recordOrder = value; } set { recordOrder = value; }
} }
private int groupId;
public int GroupId public int GroupId
{ {
get { return groupId; } get { return groupId; }
set { groupId = value; } set { groupId = value; }
} }
private int serviceId;
public int ServiceId public int ServiceId
{ {
get { return serviceId; } get { return serviceId; }
set { serviceId = value; } set { serviceId = value; }
} }
private int serverId;
public int ServerId public int ServerId
{ {
get { return serverId; } get { return serverId; }
set { serverId = value; } set { serverId = value; }
} }
private int packageId;
public int PackageId public int PackageId
{ {
get { return packageId; } get { return packageId; }
set { packageId = value; } set { packageId = value; }
} }
private string recordType;
public string RecordType public string RecordType
{ {
get { return recordType; } get { return recordType; }
set { recordType = value; } set { recordType = value; }
} }
private string recordName;
public string RecordName public string RecordName
{ {
get { return recordName; } get { return recordName; }
set { recordName = value; } set { recordName = value; }
} }
private string recordData;
public string RecordData public string RecordData
{ {
get { return recordData; } get { return recordData; }
set { recordData = value; } set { recordData = value; }
} }
private int mxPriority;
public int MxPriority public int MxPriority
{ {
@ -107,7 +114,6 @@ namespace WebsitePanel.EnterpriseServer
set { mxPriority = value; } set { mxPriority = value; }
} }
private int ipAddressId;
public int IpAddressId public int IpAddressId
{ {
@ -115,9 +121,6 @@ namespace WebsitePanel.EnterpriseServer
set { ipAddressId = value; } set { ipAddressId = value; }
} }
private string internalIP;
private string externalIP;
public GlobalDnsRecord() public GlobalDnsRecord()
{ {
} }
@ -133,5 +136,24 @@ namespace WebsitePanel.EnterpriseServer
get { return this.externalIP; } get { return this.externalIP; }
set { this.externalIP = value; } 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, 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, SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "AddDnsRecord", ObjectQualifier + "AddDnsRecord",
@ -687,11 +687,14 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@RecordName", recordName), new SqlParameter("@RecordName", recordName),
new SqlParameter("@RecordData", recordData), new SqlParameter("@RecordData", recordData),
new SqlParameter("@MXPriority", mxPriority), new SqlParameter("@MXPriority", mxPriority),
new SqlParameter("@SrvPriority", SrvPriority),
new SqlParameter("@SrvWeight", SrvWeight),
new SqlParameter("@SrvPort", SrvPort),
new SqlParameter("@IpAddressId", ipAddressId)); new SqlParameter("@IpAddressId", ipAddressId));
} }
public static void UpdateDnsRecord(int actorId, int recordId, string recordType, 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, SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
ObjectQualifier + "UpdateDnsRecord", ObjectQualifier + "UpdateDnsRecord",
@ -701,9 +704,13 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@RecordName", recordName), new SqlParameter("@RecordName", recordName),
new SqlParameter("@RecordData", recordData), new SqlParameter("@RecordData", recordData),
new SqlParameter("@MXPriority", mxPriority), new SqlParameter("@MXPriority", mxPriority),
new SqlParameter("@SrvPriority", SrvPriority),
new SqlParameter("@SrvWeight", SrvWeight),
new SqlParameter("@SrvPort", SrvPort),
new SqlParameter("@IpAddressId", ipAddressId)); new SqlParameter("@IpAddressId", ipAddressId));
} }
public static void DeleteDnsRecord(int actorId, int recordId) public static void DeleteDnsRecord(int actorId, int recordId)
{ {
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure, SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
@ -763,7 +770,7 @@ namespace WebsitePanel.EnterpriseServer
new SqlParameter("@domainName", domainName)); 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); SqlParameter prmId = new SqlParameter("@Result", SqlDbType.Int);
prmId.Direction = ParameterDirection.Output; prmId.Direction = ParameterDirection.Output;
@ -772,7 +779,8 @@ namespace WebsitePanel.EnterpriseServer
ObjectQualifier + "CheckDomain", ObjectQualifier + "CheckDomain",
prmId, prmId,
new SqlParameter("@packageId", packageId), new SqlParameter("@packageId", packageId),
new SqlParameter("@domainName", domainName)); new SqlParameter("@domainName", domainName),
new SqlParameter("@isDomainPointer", isDomainPointer));
return Convert.ToInt32(prmId.Value); return Convert.ToInt32(prmId.Value);
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -39,6 +39,10 @@ namespace WebsitePanel.Providers.DNS
private string recordData; private string recordData;
private int mxPriority; private int mxPriority;
private string recordText; private string recordText;
private int srvPriority;
private int srvWeight;
private int srvPort;
public string RecordName public string RecordName
{ {
@ -69,5 +73,25 @@ namespace WebsitePanel.Providers.DNS
get { return this.recordText; } get { return this.recordText; }
set { this.recordText = value; } 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, CNAME,
SOA, SOA,
TXT, TXT,
SRV,
Other Other
} }
} }

View file

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

View file

@ -1,15 +1,13 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DnsZoneRecords.ascx.cs" Inherits="WebsitePanel.Portal.DnsZoneRecords" %> <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DnsZoneRecords.ascx.cs" Inherits="WebsitePanel.Portal.DnsZoneRecords" %>
<%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" <%@ Register Src="UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
TagPrefix="wsp" %>
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" /> <wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server" />
<script type="text/javascript"> <script type="text/javascript">
function confirmation() function confirmation() {
{ if (!confirm('Are you sure you want to delete this DNS Zone Record?')) return false; else ShowProgressDialog('Deleting DNS Zone Record...');
if (!confirm('Are you sure you want to delete this DNS Zone Record?')) return false; else ShowProgressDialog('Deleting DNS Zone Record...'); }
}
</script> </script>
<asp:Panel ID="pnlRecords" runat="server"> <asp:Panel ID="pnlRecords" runat="server">
<div class="FormBody"> <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="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="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="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> </ItemTemplate>
<ItemStyle CssClass="NormalBold" Wrap="False" /> <ItemStyle CssClass="NormalBold" Wrap="False" />
</asp:TemplateField> </asp:TemplateField>
@ -41,7 +42,7 @@ function confirmation()
<asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" > <asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" >
<ItemStyle Width="100%" /> <ItemStyle Width="100%" />
<ItemTemplate> <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> </ItemTemplate>
</asp:TemplateField> </asp:TemplateField>
<asp:TemplateField> <asp:TemplateField>
@ -77,6 +78,7 @@ function confirmation()
<asp:ListItem>NS</asp:ListItem> <asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem> <asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem> <asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>SRV</asp:ListItem>
</asp:DropDownList><asp:Literal ID="litRecordType" runat="server"></asp:Literal> </asp:DropDownList><asp:Literal ID="litRecordType" runat="server"></asp:Literal>
</td> </td>
</tr> </tr>
@ -106,10 +108,43 @@ function confirmation()
<asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority" <asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td> ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr> </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> </table>
</div> </div>
<div class="FormFooter"> <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="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> </div>
</asp:Panel> </asp:Panel>

View file

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

View file

@ -1,7 +1,6 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // 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 // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -220,6 +219,141 @@ namespace WebsitePanel.Portal {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectPriority; 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> /// <summary>
/// btnSave control. /// btnSave control.
/// </summary> /// </summary>

View file

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

View file

@ -49,10 +49,13 @@
<ItemTemplate> <ItemTemplate>
<asp:ImageButton ID="cmdEdit" runat="server" SkinID="EditSmall" CommandName="edit" AlternateText="Edit record"> <asp:ImageButton ID="cmdEdit" runat="server" SkinID="EditSmall" CommandName="edit" AlternateText="Edit record">
</asp:ImageButton> </asp:ImageButton>
<asp:Literal ID="litMxPriority" runat="server" Text='<%# Eval("MxPriority") %>' 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="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="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="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> </ItemTemplate>
<ItemStyle CssClass="NormalBold" Wrap="False" /> <ItemStyle CssClass="NormalBold" Wrap="False" />
</asp:TemplateField> </asp:TemplateField>
@ -61,7 +64,7 @@
<asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" > <asp:TemplateField SortExpression="RecordData" HeaderText="gvRecordsData" >
<ItemStyle Width="100%" /> <ItemStyle Width="100%" />
<ItemTemplate> <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> </ItemTemplate>
</asp:TemplateField> </asp:TemplateField>
<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="SubHead" width="150" nowrap><asp:Label ID="lblRecordType" runat="server" meta:resourcekey="lblRecordType" Text="Record Type:"></asp:Label></td>
<td class="NormalBold" width="100%"> <td class="NormalBold" width="100%">
<asp:DropDownList ID="ddlRecordType" runat="server" SelectedValue='<%# Bind("RecordType") %>' CssClass="NormalTextBox" AutoPostBack="True" OnSelectedIndexChanged="ddlRecordType_SelectedIndexChanged"> <asp:DropDownList ID="ddlRecordType" runat="server" SelectedValue='<%# Bind("RecordType") %>' CssClass="NormalTextBox" AutoPostBack="True" OnSelectedIndexChanged="ddlRecordType_SelectedIndexChanged">
<asp:ListItem>A</asp:ListItem> <asp:ListItem>A</asp:ListItem>
<asp:ListItem>MX</asp:ListItem> <asp:ListItem>MX</asp:ListItem>
<asp:ListItem>NS</asp:ListItem> <asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem> <asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem> <asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>SRV</asp:ListItem>
</asp:DropDownList><asp:Literal ID="litRecordType" runat="server"></asp:Literal> </asp:DropDownList><asp:Literal ID="litRecordType" runat="server"></asp:Literal>
</td> </td>
</tr> </tr>
@ -126,27 +130,60 @@
<asp:TextBox ID="txtRecordName" runat="server" Width="100px" CssClass="NormalTextBox"></asp:TextBox> <asp:TextBox ID="txtRecordName" runat="server" Width="100px" CssClass="NormalTextBox"></asp:TextBox>
</td> </td>
</tr> </tr>
<tr id="rowData" runat="server"> <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="SubHead"><asp:Label ID="lblRecordData" runat="server" meta:resourcekey="lblRecordData" Text="Record Data:"></asp:Label></td>
<td class="NormalBold" nowrap> <td class="NormalBold" nowrap>
<asp:TextBox ID="txtRecordData" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox> <asp:TextBox ID="txtRecordData" runat="server" Width="200px" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireData" runat="server" ControlToValidate="txtRecordData" <asp:RequiredFieldValidator ID="valRequireData" runat="server" ControlToValidate="txtRecordData"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator> ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
</td> <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])$"
</tr> Display="Dynamic" ErrorMessage="Please enter a valid IP" ValidationGroup="DnsZoneRecord" ControlToValidate="txtRecordData" CssClass="NormalBold"></asp:regularexpressionvalidator>
</td>
</tr>
<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])$" <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> Display="Dynamic" ErrorMessage="Please enter a valid IP" ValidationGroup="DnsZoneRecord" ControlToValidate="txtRecordData" CssClass="NormalBold"></asp:regularexpressionvalidator>
</tr> </tr>
<tr id="rowMXPriority" runat="server"> <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="SubHead"><asp:Label ID="lblMXPriority" runat="server" meta:resourcekey="lblMXPriority" Text="MX Priority:"></asp:Label></td>
<td class="NormalBold"> <td class="NormalBold">
<asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox> <asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
<asp:RequiredFieldValidator ID="valRequireMxPriority" runat="server" ControlToValidate="txtMXPriority" <asp:RequiredFieldValidator ID="valRequireMxPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator> ErrorMessage="*" ValidationGroup="DnsZoneRecord" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority" <asp:RegularExpressionValidator ID="valRequireCorrectPriority" runat="server" ControlToValidate="txtMXPriority"
ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td> ErrorMessage="*" ValidationExpression="\d{1,3}"></asp:RegularExpressionValidator></td>
</tr> </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> </table>
</ContentTemplate> </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) switch (recordType)
? String.Format("[{0}], {1}", mxPriority, recordData) : recordData; {
} 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) private void GetRecordsDetails(int recordIndex)
{ {
GridViewRow row = gvRecords.Rows[recordIndex]; GridViewRow row = gvRecords.Rows[recordIndex];
ViewState["MxPriority"] = ((Literal)row.Cells[0].FindControl("litMxPriority")).Text; ViewState["SrvPort"] = ((Literal)row.Cells[0].FindControl("litSrvPort")).Text;
ViewState["RecordName"] = ((Literal)row.Cells[0].FindControl("litRecordName")).Text; ; ViewState["SrvWeight"] = ((Literal)row.Cells[0].FindControl("litSrvWeight")).Text;
ViewState["RecordType"] = (DnsRecordType)Enum.Parse(typeof(DnsRecordType), ViewState["SrvPriority"] = ((Literal)row.Cells[0].FindControl("litSrvPriority")).Text;
((Literal)row.Cells[0].FindControl("litRecordType")).Text, true); ViewState["MxPriority"] = ((Literal)row.Cells[0].FindControl("litMxPriority")).Text;
ViewState["RecordData"] = ((Literal)row.Cells[0].FindControl("litRecordData")).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) private void BindDnsRecord(int recordIndex)
{ {
try try
{ {
litRecordType.Visible = true; ViewState["NewRecord"] = false;
ddlRecordType.Visible = false; GetRecordsDetails(recordIndex);
GetRecordsDetails(recordIndex); ddlRecordType.SelectedValue = ViewState["RecordType"].ToString();
litRecordType.Text = ViewState["RecordType"].ToString();
ddlRecordType.SelectedValue = ViewState["RecordType"].ToString(); txtRecordName.Text = ViewState["RecordName"].ToString();
litRecordType.Text = ViewState["RecordType"].ToString(); txtRecordData.Text = ViewState["RecordData"].ToString();
txtRecordName.Text = ViewState["RecordName"].ToString(); txtMXPriority.Text = ViewState["MxPriority"].ToString();
txtRecordData.Text = ViewState["RecordData"].ToString(); txtSRVPriority.Text = ViewState["SrvPriority"].ToString();
txtMXPriority.Text = ViewState["MxPriority"].ToString(); txtSRVWeight.Text = ViewState["SrvWeight"].ToString();
ToggleRecordControls(); txtSRVPort.Text = ViewState["SrvPort"].ToString();
} }
catch (Exception ex) catch (Exception ex)
{ {
messageBox.ShowErrorMessage("GDNS_GET_RECORD", ex); ShowErrorMessage("GDNS_GET_RECORD", ex);
return; return;
} }
} }
protected void ddlRecordType_SelectedIndexChanged(object sender, EventArgs e) protected void ddlRecordType_SelectedIndexChanged(object sender, EventArgs e)
{ {
@ -105,19 +114,32 @@ namespace WebsitePanel.Portal.ExchangeServer
private void ToggleRecordControls() 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:"; case "A":
IPValidator1.Enabled = true; 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() private void SaveRecord()
{ {
@ -131,11 +153,16 @@ namespace WebsitePanel.Portal.ExchangeServer
// add record // add record
try try
{ {
int result = ES.Services.Servers.AddDnsZoneRecord(PanelRequest.DomainID, int result = ES.Services.Servers.AddDnsZoneRecord(PanelRequest.DomainID,
txtRecordName.Text.Trim(), txtRecordName.Text.Trim(),
(DnsRecordType)Enum.Parse(typeof(DnsRecordType), ddlRecordType.SelectedValue, true), (DnsRecordType)
txtRecordData.Text.Trim(), Enum.Parse(typeof(DnsRecordType),
Utils.ParseInt(txtMXPriority.Text.Trim(), 0)); 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) if (result < 0)
{ {
@ -154,13 +181,16 @@ namespace WebsitePanel.Portal.ExchangeServer
// update record // update record
try try
{ {
int result = ES.Services.Servers.UpdateDnsZoneRecord(PanelRequest.DomainID, int result = ES.Services.Servers.UpdateDnsZoneRecord(PanelRequest.DomainID,
ViewState["RecordName"].ToString(), ViewState["RecordName"].ToString(),
ViewState["RecordData"].ToString(), ViewState["RecordData"].ToString(),
txtRecordName.Text.Trim(), txtRecordName.Text.Trim(),
(DnsRecordType)ViewState["RecordType"], (DnsRecordType)ViewState["RecordType"],
txtRecordData.Text.Trim(), txtRecordData.Text.Trim(),
Utils.ParseInt(txtMXPriority.Text.Trim(), 0)); Int32.Parse(txtMXPriority.Text.Trim()),
Int32.Parse(txtSRVPriority.Text.Trim()),
Int32.Parse(txtSRVWeight.Text.Trim()),
Int32.Parse(txtSRVPort.Text.Trim()));
if (result < 0) if (result < 0)
{ {
@ -220,18 +250,21 @@ namespace WebsitePanel.Portal.ExchangeServer
private void ResetPopup() private void ResetPopup()
{ {
EditRecordModal.Hide(); EditRecordModal.Hide();
ViewState["ExistingRecord"] = null; ViewState["ExistingRecord"] = null;
// erase fields // erase fields
litRecordType.Visible = false; litRecordType.Visible = false;
ddlRecordType.Visible = true; ddlRecordType.Visible = true;
ddlRecordType.SelectedIndex = 0; ddlRecordType.SelectedIndex = 0;
txtRecordName.Text = ""; txtRecordName.Text = "";
txtRecordData.Text = ""; txtRecordData.Text = "";
txtMXPriority.Text = "1"; txtMXPriority.Text = "1";
ToggleRecordControls(); txtSRVPriority.Text = "0";
} txtSRVWeight.Text = "0";
txtSRVPort.Text = "0";
ToggleRecordControls();
}
protected void gvRecords_RowEditing(object sender, GridViewEditEventArgs e) protected void gvRecords_RowEditing(object sender, GridViewEditEventArgs e)
{ {

View file

@ -1,7 +1,6 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // 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 // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -229,6 +228,15 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RequiredFieldValidator valRequireData; 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> /// <summary>
/// IPValidator1 control. /// IPValidator1 control.
/// </summary> /// </summary>
@ -283,6 +291,141 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks> /// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectPriority; 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> /// <summary>
/// btnSave control. /// btnSave control.
/// </summary> /// </summary>

View file

@ -39,6 +39,7 @@
<asp:ListItem>NS</asp:ListItem> <asp:ListItem>NS</asp:ListItem>
<asp:ListItem>TXT</asp:ListItem> <asp:ListItem>TXT</asp:ListItem>
<asp:ListItem>CNAME</asp:ListItem> <asp:ListItem>CNAME</asp:ListItem>
<asp:ListItem>SRV</asp:ListItem>
</asp:DropDownList> </asp:DropDownList>
</td> </td>
</tr> </tr>
@ -60,6 +61,28 @@
<asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox> <asp:TextBox ID="txtMXPriority" runat="server" Width="30" CssClass="NormalTextBox"></asp:TextBox>
</td> </td>
</tr> </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> <tr>
<td colspan="2"> <td colspan="2">
<asp:Button ID="btnSave" runat="server" meta:resourcekey="btnSave" Text="Save" CssClass="Button1" OnClick="btnSave_Click" ValidationGroup="DnsRecord" /> <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. // All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without modification, // Redistribution and use in source and binary forms, with or without modification,
@ -86,6 +86,7 @@ namespace WebsitePanel.Portal
return; return;
} }
} }
} }
private void BindDnsRecords() private void BindDnsRecords()
@ -104,6 +105,8 @@ namespace WebsitePanel.Portal
gvRecords.DataSource = ds; gvRecords.DataSource = ds;
gvRecords.DataBind(); gvRecords.DataBind();
} }
ToggleRecordControls();
} }
private void BindDnsRecord(int recordId) private void BindDnsRecord(int recordId)
@ -119,6 +122,9 @@ namespace WebsitePanel.Portal
txtRecordName.Text = record.RecordName; txtRecordName.Text = record.RecordName;
txtRecordData.Text = record.RecordData; txtRecordData.Text = record.RecordData;
txtMXPriority.Text = record.MxPriority.ToString(); txtMXPriority.Text = record.MxPriority.ToString();
txtSRVPriority.Text = record.SrvPriority.ToString();
txtSRVWeight.Text = record.SrvWeight.ToString();
txtSRVPort.Text = record.SrvPort.ToString();
ipAddress.AddressId = record.IpAddressId; ipAddress.AddressId = record.IpAddressId;
} }
@ -138,9 +144,32 @@ namespace WebsitePanel.Portal
private void ToggleRecordControls() private void ToggleRecordControls()
{ {
ipAddress.Visible = (ddlRecordType.SelectedValue == "A");
//rowData.Visible = (ddlRecordType.SelectedValue != "A"); rowMXPriority.Visible = false;
rowMXPriority.Visible = (ddlRecordType.SelectedValue == "MX"); 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() private void SaveRecord()
@ -151,6 +180,9 @@ namespace WebsitePanel.Portal
record.RecordName = txtRecordName.Text.Trim(); record.RecordName = txtRecordName.Text.Trim();
record.RecordData = txtRecordData.Text.Trim(); record.RecordData = txtRecordData.Text.Trim();
record.MxPriority = Utils.ParseInt(txtMXPriority.Text, 0); 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; record.IpAddressId = ipAddress.AddressId;
if (ServiceIdParam != null) if (ServiceIdParam != null)
@ -230,6 +262,11 @@ namespace WebsitePanel.Portal
txtRecordName.Text = ""; txtRecordName.Text = "";
txtRecordData.Text = ""; txtRecordData.Text = "";
txtMXPriority.Text = "0"; txtMXPriority.Text = "0";
txtSRVPriority.Text = "0";
txtSRVWeight.Text = "0";
txtSRVPort.Text = "0";
ToggleRecordControls();
ShowPanels(true); ShowPanels(true);
} }

View file

@ -1,7 +1,6 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // 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 // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@ -10,23 +9,241 @@
namespace WebsitePanel.Portal { namespace WebsitePanel.Portal {
public partial class GlobalDnsRecordsControl { public partial class GlobalDnsRecordsControl {
protected System.Web.UI.WebControls.Panel pnlRecords;
protected System.Web.UI.WebControls.Button btnAdd; /// <summary>
protected System.Web.UI.WebControls.GridView gvRecords; /// pnlRecords control.
protected System.Web.UI.WebControls.Panel pnlEdit; /// </summary>
protected System.Web.UI.WebControls.Label lblRecordType; /// <remarks>
protected System.Web.UI.WebControls.DropDownList ddlRecordType; /// Auto-generated field.
protected System.Web.UI.WebControls.Label lblRecordName; /// To modify move field declaration from designer file to code-behind file.
protected System.Web.UI.WebControls.TextBox txtRecordName; /// </remarks>
protected System.Web.UI.HtmlControls.HtmlTableRow rowData; protected global::System.Web.UI.WebControls.Panel pnlRecords;
protected System.Web.UI.WebControls.Label lblRecordData;
protected System.Web.UI.WebControls.TextBox txtRecordData; /// <summary>
protected WebsitePanel.Portal.SelectIPAddress ipAddress; /// btnAdd control.
protected System.Web.UI.HtmlControls.HtmlTableRow rowMXPriority; /// </summary>
protected System.Web.UI.WebControls.Label lblMXPriority; /// <remarks>
protected System.Web.UI.WebControls.TextBox txtMXPriority; /// Auto-generated field.
protected System.Web.UI.WebControls.Button btnSave; /// To modify move field declaration from designer file to code-behind file.
protected System.Web.UI.WebControls.Button btnCancel; /// </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. // All rights reserved.
// //
// Redistribution and use in source and binary forms, with or without modification, // 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) 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) if (result < 0)
{ {
ShowResultMessage(result); ShowResultMessage(result);