Fixed: When onboarding a tenant with resources all globaldnsrecords are
interpreted and created, even when service offering is not subscribed or not used yet. Service globaldnsrecords are ignored when onboarding a tenant. Virtual Server and Server globaldnsrecords are applied when onboarding a user Service globaldns records are now applied when service is applied/activated DNS record definitions removed for those services where no globaldnsrecords are user TaskManager unhandled exception handled
This commit is contained in:
parent
2907c27592
commit
75ca39ea5f
13 changed files with 458 additions and 109 deletions
|
@ -6039,3 +6039,133 @@ WHERE
|
||||||
DomainID = @DomainID
|
DomainID = @DomainID
|
||||||
RETURN
|
RETURN
|
||||||
GO
|
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 Latin1_General_CI_AS,
|
||||||
|
RecordName nvarchar(50) COLLATE Latin1_General_CI_AS
|
||||||
|
)
|
||||||
|
|
||||||
|
-- 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 VIRTUAL 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 SERVER DNS records
|
||||||
|
INSERT INTO @Records (RecordID, RecordType, RecordName)
|
||||||
|
SELECT
|
||||||
|
GR.RecordID,
|
||||||
|
GR.RecordType,
|
||||||
|
GR.RecordName
|
||||||
|
FROM GlobalDNSRecords AS GR
|
||||||
|
WHERE GR.ServerID IN (SELECT
|
||||||
|
SRV.ServerID
|
||||||
|
FROM VirtualServices AS VS
|
||||||
|
INNER JOIN Services AS S ON VS.ServiceID = S.ServiceID
|
||||||
|
INNER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
|
||||||
|
WHERE VS.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
|
||||||
|
|
|
@ -206,6 +206,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return zoneItemId;
|
return zoneItemId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static int DeleteZone(int zoneItemId)
|
public static int DeleteZone(int zoneItemId)
|
||||||
{
|
{
|
||||||
// delete DNS zone if applicable
|
// delete DNS zone if applicable
|
||||||
|
@ -288,11 +289,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
if (record.RecordType == "A" || record.RecordType == "AAAA")
|
if (record.RecordType == "A" || record.RecordType == "AAAA")
|
||||||
{
|
{
|
||||||
// If the service IP address and the DNS records external address are empty / null SimpleDNS will fail to properly create the zone record
|
// If the service IP address and the DNS records external address are empty / null SimpleDNS will fail to properly create the zone record
|
||||||
if (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP))
|
if (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP) && String.IsNullOrEmpty(record.RecordData))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
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", string.IsNullOrEmpty(serviceIP) ? record.ExternalIP : serviceIP);
|
rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "ip", string.IsNullOrEmpty(serviceIP) ? record.ExternalIP : serviceIP);
|
||||||
|
rr.RecordData = Utils.ReplaceStringVariable(rr.RecordData, "domain_name", string.IsNullOrEmpty(domainName) ? string.Empty : domainName);
|
||||||
|
|
||||||
if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP))
|
if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP))
|
||||||
rr.RecordData = serviceIP;
|
rr.RecordData = serviceIP;
|
||||||
|
|
|
@ -455,6 +455,22 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (OrganizationDomainName d in domains)
|
||||||
|
{
|
||||||
|
DomainInfo domain = ServerController.GetDomain(d.DomainId);
|
||||||
|
|
||||||
|
//Add the service records
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.BlackBerry, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.OCS, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 4) Add the address book policy (Exchange 2010 SP2
|
// 4) Add the address book policy (Exchange 2010 SP2
|
||||||
//
|
//
|
||||||
|
@ -1416,6 +1432,15 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Add the service records
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1534,6 +1559,17 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Add the service records
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.RemoveServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -208,6 +208,18 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
|
DomainInfo domain = ServerController.GetDomain(org.DefaultDomain);
|
||||||
|
|
||||||
|
//Add the service records
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Lync, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PackageController.UpdatePackageItem(org);
|
PackageController.UpdatePackageItem(org);
|
||||||
|
|
||||||
bReloadConfiguration = true;
|
bReloadConfiguration = true;
|
||||||
|
|
|
@ -40,6 +40,7 @@ using WebsitePanel.Providers.HostedSolution;
|
||||||
using WebsitePanel.Providers.ResultObjects;
|
using WebsitePanel.Providers.ResultObjects;
|
||||||
using WebsitePanel.Providers.SharePoint;
|
using WebsitePanel.Providers.SharePoint;
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
|
using WebsitePanel.Providers.DNS;
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
|
@ -336,6 +337,17 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return domainId;
|
return domainId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DomainInfo domain = ServerController.GetDomain(domainId);
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.HostedOrganizations, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.HostedCRM, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PackageContext cntx = PackageController.GetPackageContext(packageId);
|
PackageContext cntx = PackageController.GetPackageContext(packageId);
|
||||||
|
|
||||||
if (cntx.Quotas[Quotas.HOSTED_SHAREPOINT_STORAGE_SIZE] != null)
|
if (cntx.Quotas[Quotas.HOSTED_SHAREPOINT_STORAGE_SIZE] != null)
|
||||||
|
@ -367,60 +379,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
PackageController.AddPackageItem(orgDomain);
|
PackageController.AddPackageItem(orgDomain);
|
||||||
|
|
||||||
|
|
||||||
if (cntx.Quotas[Quotas.EXCHANGE2007_MAILBOXES] != null)
|
|
||||||
{
|
|
||||||
// 5) Create default mailbox plans
|
|
||||||
// load user info
|
|
||||||
UserInfo user = PackageController.GetPackageOwner(org.PackageId);
|
|
||||||
|
|
||||||
// get settings
|
|
||||||
UserSettings userSettings = UserController.GetUserSettings(user.UserId, "ExchangeMailboxPlansPolicy");
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(userSettings[UserSettings.DEFAULT_MAILBOXPLANS]))
|
|
||||||
{
|
|
||||||
|
|
||||||
List<ExchangeMailboxPlan> list = new List<ExchangeMailboxPlan>();
|
|
||||||
|
|
||||||
XmlSerializer serializer = new XmlSerializer(list.GetType());
|
|
||||||
|
|
||||||
StringReader reader = new StringReader(userSettings[UserSettings.DEFAULT_MAILBOXPLANS]);
|
|
||||||
|
|
||||||
list = (List<ExchangeMailboxPlan>)serializer.Deserialize(reader);
|
|
||||||
|
|
||||||
foreach (ExchangeMailboxPlan p in list)
|
|
||||||
{
|
|
||||||
ExchangeServerController.AddExchangeMailboxPlan(itemId, p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cntx.Quotas[Quotas.LYNC_USERS] != null)
|
|
||||||
{
|
|
||||||
// 5) Create default mailbox plans
|
|
||||||
// load user info
|
|
||||||
UserInfo user = PackageController.GetPackageOwner(org.PackageId);
|
|
||||||
|
|
||||||
// get settings
|
|
||||||
UserSettings userSettings = UserController.GetUserSettings(user.UserId, "LyncUserPlansPolicy");
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(userSettings[UserSettings.DEFAULT_LYNCUSERPLANS]))
|
|
||||||
{
|
|
||||||
|
|
||||||
List<LyncUserPlan> list = new List<LyncUserPlan>();
|
|
||||||
|
|
||||||
XmlSerializer serializer = new XmlSerializer(list.GetType());
|
|
||||||
|
|
||||||
StringReader reader = new StringReader(userSettings[UserSettings.DEFAULT_LYNCUSERPLANS]);
|
|
||||||
|
|
||||||
list = (List<LyncUserPlan>)serializer.Deserialize(reader);
|
|
||||||
|
|
||||||
foreach (LyncUserPlan p in list)
|
|
||||||
{
|
|
||||||
LyncController.AddLyncUserPlan(itemId, p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -1202,7 +1202,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return pointers;
|
return pointers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int AddMailDomainPointer(int itemId, int domainId)
|
public static int AddMailDomainPointer( int itemId, int domainId)
|
||||||
{
|
{
|
||||||
// check account
|
// check account
|
||||||
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo);
|
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo);
|
||||||
|
@ -1231,6 +1231,16 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
ServiceProviderProxy.Init(mail, mailDomain.ServiceId);
|
ServiceProviderProxy.Init(mail, mailDomain.ServiceId);
|
||||||
mail.AddDomainAlias(mailDomain.Name, domain.DomainName);
|
mail.AddDomainAlias(mailDomain.Name, domain.DomainName);
|
||||||
|
|
||||||
|
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// update domain
|
// update domain
|
||||||
domain.MailDomainId = itemId;
|
domain.MailDomainId = itemId;
|
||||||
ServerController.UpdateDomain(domain);
|
ServerController.UpdateDomain(domain);
|
||||||
|
|
|
@ -468,6 +468,16 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
domain = ServerController.GetDomain(domainId);
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Os, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Dns, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (createInstantAlias)
|
if (createInstantAlias)
|
||||||
ServerController.CreateDomainInstantAlias("", domainId);
|
ServerController.CreateDomainInstantAlias("", domainId);
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ using WebsitePanel.Providers.DNS;
|
||||||
using WebsitePanel.Server;
|
using WebsitePanel.Server;
|
||||||
using WebsitePanel.Providers.ResultObjects;
|
using WebsitePanel.Providers.ResultObjects;
|
||||||
using WebsitePanel.Providers.Web;
|
using WebsitePanel.Providers.Web;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
namespace WebsitePanel.EnterpriseServer
|
namespace WebsitePanel.EnterpriseServer
|
||||||
{
|
{
|
||||||
|
@ -1732,6 +1733,16 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
if (domainId < 0)
|
if (domainId < 0)
|
||||||
return domainId;
|
return domainId;
|
||||||
|
|
||||||
|
DomainInfo domain = ServerController.GetDomain(domainId);
|
||||||
|
if (domain != null)
|
||||||
|
{
|
||||||
|
if (domain.ZoneItemId != 0)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Os, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Dns, domain, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// add instant alias
|
// add instant alias
|
||||||
createInstantAlias &= (domainType != DomainType.DomainPointer);
|
createInstantAlias &= (domainType != DomainType.DomainPointer);
|
||||||
if (createInstantAlias)
|
if (createInstantAlias)
|
||||||
|
@ -1900,6 +1911,86 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
domain.WebSiteId, domain.MailDomainId, domain.IsSubDomain, domain.IsInstantAlias, domain.IsDomainPointer);
|
domain.WebSiteId, domain.MailDomainId, domain.IsSubDomain, domain.IsInstantAlias, domain.IsDomainPointer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void AddServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP)
|
||||||
|
{
|
||||||
|
int serviceId = PackageController.GetPackageServiceId(packageId, groupName);
|
||||||
|
if (serviceId > 0)
|
||||||
|
{
|
||||||
|
List<DnsRecord> tmpZoneRecords = new List<DnsRecord>();
|
||||||
|
List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(serviceId);
|
||||||
|
|
||||||
|
DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId);
|
||||||
|
tmpZoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DNSServer dns = new DNSServer();
|
||||||
|
ServiceProviderProxy.Init(dns, zone.ServiceId);
|
||||||
|
|
||||||
|
DnsRecord[] domainRecords = dns.GetZoneRecords(domain.DomainName);
|
||||||
|
|
||||||
|
List<DnsRecord> zoneRecords = new List<DnsRecord>();
|
||||||
|
foreach (DnsRecord t in tmpZoneRecords)
|
||||||
|
{
|
||||||
|
if (!RecordDoesExist(t, domainRecords))
|
||||||
|
zoneRecords.Add(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// add new resource records
|
||||||
|
dns.AddZoneRecords(zone.Name, zoneRecords.ToArray());
|
||||||
|
}
|
||||||
|
catch (Exception ex1)
|
||||||
|
{
|
||||||
|
TaskManager.WriteError(ex1, "Error updating DNS records");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void RemoveServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP)
|
||||||
|
{
|
||||||
|
int serviceId = PackageController.GetPackageServiceId(packageId, groupName);
|
||||||
|
if (serviceId > 0)
|
||||||
|
{
|
||||||
|
List<DnsRecord> zoneRecords = new List<DnsRecord>();
|
||||||
|
List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(serviceId);
|
||||||
|
|
||||||
|
DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId);
|
||||||
|
zoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DNSServer dns = new DNSServer();
|
||||||
|
ServiceProviderProxy.Init(dns, zone.ServiceId);
|
||||||
|
|
||||||
|
// add new resource records
|
||||||
|
dns.DeleteZoneRecords(zone.Name, zoneRecords.ToArray());
|
||||||
|
}
|
||||||
|
catch (Exception ex1)
|
||||||
|
{
|
||||||
|
TaskManager.WriteError(ex1, "Error updating DNS records");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static bool RecordDoesExist(DnsRecord record, DnsRecord[] domainRecords)
|
||||||
|
{
|
||||||
|
foreach (DnsRecord d in domainRecords)
|
||||||
|
{
|
||||||
|
if ((record.RecordName.ToLower() == d.RecordName.ToLower()) &
|
||||||
|
(record.RecordType == d.RecordType))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static int UpdateDomain(DomainInfo domain)
|
public static int UpdateDomain(DomainInfo domain)
|
||||||
{
|
{
|
||||||
// check account
|
// check account
|
||||||
|
@ -2159,6 +2250,110 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
// update domain
|
// update domain
|
||||||
domain.ZoneItemId = zoneItemId;
|
domain.ZoneItemId = zoneItemId;
|
||||||
UpdateDomain(domain);
|
UpdateDomain(domain);
|
||||||
|
|
||||||
|
domain = GetDomain(domainId);
|
||||||
|
|
||||||
|
|
||||||
|
PackageContext cntx = PackageController.GetPackageContext(domain.PackageId);
|
||||||
|
if (cntx != null)
|
||||||
|
{
|
||||||
|
// fill dictionaries
|
||||||
|
foreach (HostingPlanGroupInfo group in cntx.GroupsArray)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
bool bFound = false;
|
||||||
|
switch (group.GroupName)
|
||||||
|
{
|
||||||
|
case ResourceGroups.Dns:
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Dns, domain, "");
|
||||||
|
break;
|
||||||
|
case ResourceGroups.Os:
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Os, domain, "");
|
||||||
|
break;
|
||||||
|
case ResourceGroups.HostedOrganizations:
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.HostedOrganizations, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.HostedCRM, domain, "");
|
||||||
|
break;
|
||||||
|
case ResourceGroups.Mail:
|
||||||
|
List<DomainInfo> myDomains = ServerController.GetMyDomains(domain.PackageId);
|
||||||
|
foreach (DomainInfo mailDomain in myDomains)
|
||||||
|
{
|
||||||
|
if ((mailDomain.MailDomainId != 0) && (domain.DomainName.ToLower() == mailDomain.DomainName.ToLower()))
|
||||||
|
{
|
||||||
|
bFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bFound) ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, "");
|
||||||
|
break;
|
||||||
|
case ResourceGroups.Exchange:
|
||||||
|
List<Organization> orgs = OrganizationController.GetOrganizations(domain.PackageId, false);
|
||||||
|
foreach (Organization o in orgs)
|
||||||
|
{
|
||||||
|
List<OrganizationDomainName> names = OrganizationController.GetOrganizationDomains(o.Id);
|
||||||
|
foreach (OrganizationDomainName name in names)
|
||||||
|
{
|
||||||
|
if (domain.DomainName.ToLower() == name.DomainName.ToLower())
|
||||||
|
{
|
||||||
|
bFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bFound) break;
|
||||||
|
}
|
||||||
|
if (bFound)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Exchange, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.BlackBerry, domain, "");
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.OCS, domain, "");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ResourceGroups.Lync:
|
||||||
|
List<Organization> orgsLync = OrganizationController.GetOrganizations(domain.PackageId, false);
|
||||||
|
foreach (Organization o in orgsLync)
|
||||||
|
{
|
||||||
|
if ((o.DefaultDomain.ToLower() == domain.DomainName.ToLower()) &
|
||||||
|
(o.LyncTenantId != null))
|
||||||
|
{
|
||||||
|
bFound = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (bFound)
|
||||||
|
{
|
||||||
|
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Lync, domain, "");
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ResourceGroups.Web:
|
||||||
|
List<WebSite> sites = WebServerController.GetWebSites(domain.PackageId, false);
|
||||||
|
foreach (WebSite w in sites)
|
||||||
|
{
|
||||||
|
if (w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1)
|
||||||
|
{
|
||||||
|
WebServerController.AddWebSitePointer(w.Id, w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), ""), domain.DomainId, false, true, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<DomainInfo> pointers = WebServerController.GetWebSitePointers(w.Id);
|
||||||
|
foreach (DomainInfo pointer in pointers)
|
||||||
|
{
|
||||||
|
if (pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1)
|
||||||
|
{
|
||||||
|
WebServerController.AddWebSitePointer(w.Id, pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), ""), domain.DomainId, false, true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// add web site DNS records
|
// add web site DNS records
|
||||||
|
|
|
@ -331,27 +331,13 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
|
||||||
string hostName = tmpStr[0];
|
string hostName = tmpStr[0];
|
||||||
string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1));
|
string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1));
|
||||||
|
|
||||||
DomainInfo domain = ServerController.GetDomain(domainName);
|
List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(serviceId);
|
||||||
if (domain != null)
|
List<DnsRecord> resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, "");
|
||||||
{
|
DNSServer dns = new DNSServer();
|
||||||
string website = siteName;
|
|
||||||
|
|
||||||
DnsRecord[] records = ServerController.GetDnsZoneRecords(domain.DomainId);
|
ServiceProviderProxy.Init(dns, dnsServiceId);
|
||||||
foreach (DnsRecord record in records)
|
// add new resource records
|
||||||
{
|
dns.AddZoneRecords(domainName, resourceRecords.ToArray());
|
||||||
var type = record.RecordType;
|
|
||||||
if ((type == DnsRecordType.A || type == DnsRecordType.AAAA) && String.IsNullOrEmpty(record.RecordName))
|
|
||||||
{
|
|
||||||
ServerController.DeleteDnsZoneRecord(domain.DomainId, String.Empty, type, record.RecordData);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ServerController.AddDnsZoneRecord(domain.DomainId, hostName, DnsRecordType.A, hostedSharePointSettings["RootWebApplicationIpAddress"], 0, 0, 0, 0);
|
|
||||||
var ip = hostedSharePointSettings["RootWebApplicationIpAddress"];
|
|
||||||
var type2 = ip.Contains(":") ? DnsRecordType.AAAA : DnsRecordType.A;
|
|
||||||
ServerController.AddDnsZoneRecord(domain.DomainId, String.Empty, type2, ip, 0, 0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TaskManager.ItemId = itemId;
|
TaskManager.ItemId = itemId;
|
||||||
|
@ -412,27 +398,13 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
|
||||||
string hostName = tmpStr[0];
|
string hostName = tmpStr[0];
|
||||||
string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1));
|
string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1));
|
||||||
|
|
||||||
DomainInfo domain = ServerController.GetDomain(domainName);
|
List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(origItem.ServiceId);
|
||||||
if (domain != null)
|
List<DnsRecord> resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, "");
|
||||||
{
|
DNSServer dns = new DNSServer();
|
||||||
var ip = hostedSharePointSettings["RootWebApplicationIpAddress"];
|
|
||||||
var type = ip.Contains(":") ? DnsRecordType.AAAA : DnsRecordType.A;
|
ServiceProviderProxy.Init(dns, dnsServiceId);
|
||||||
ServerController.DeleteDnsZoneRecord(domain.DomainId, String.Empty, type, ip);
|
// add new resource records
|
||||||
ServerController.DeleteDnsZoneRecord(domain.DomainId, "www", type, ip);
|
dns.DeleteZoneRecords(domainName, resourceRecords.ToArray());
|
||||||
if (!String.IsNullOrEmpty(domain.WebSiteName))
|
|
||||||
{
|
|
||||||
DnsRecord[] records = ServerController.GetDnsZoneRecords(domain.DomainId);
|
|
||||||
foreach (DnsRecord record in records)
|
|
||||||
{
|
|
||||||
type = record.RecordType;
|
|
||||||
if ((type == DnsRecordType.A || type == DnsRecordType.AAAA) && record.RecordName.Equals("www", StringComparison.CurrentCultureIgnoreCase))
|
|
||||||
{
|
|
||||||
ServerController.AddDnsZoneRecord(domain.DomainId, String.Empty, DnsRecordType.A, record.RecordData, 0, 0, 0, 0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -398,12 +398,18 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
public static Dictionary<int, BackgroundTask> GetScheduledTasks()
|
public static Dictionary<int, BackgroundTask> GetScheduledTasks()
|
||||||
{
|
{
|
||||||
Dictionary<int, BackgroundTask> scheduledTasks = new Dictionary<int, BackgroundTask>();
|
Dictionary<int, BackgroundTask> scheduledTasks = new Dictionary<int, BackgroundTask>();
|
||||||
foreach (BackgroundTask task in tasks.Values)
|
try
|
||||||
|
{
|
||||||
|
foreach (BackgroundTask task in tasks.Values)
|
||||||
|
{
|
||||||
|
if (task.ScheduleId > 0
|
||||||
|
&& !task.Completed
|
||||||
|
&& !scheduledTasks.ContainsKey(task.ScheduleId))
|
||||||
|
scheduledTasks.Add(task.ScheduleId, task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
{
|
{
|
||||||
if (task.ScheduleId > 0
|
|
||||||
&& !task.Completed
|
|
||||||
&& !scheduledTasks.ContainsKey(task.ScheduleId))
|
|
||||||
scheduledTasks.Add(task.ScheduleId, task);
|
|
||||||
}
|
}
|
||||||
return scheduledTasks;
|
return scheduledTasks;
|
||||||
}
|
}
|
||||||
|
|
|
@ -723,7 +723,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
foreach (DomainInfo pointer in pointers)
|
foreach (DomainInfo pointer in pointers)
|
||||||
{
|
{
|
||||||
ZoneInfo = ServerController.GetDomain(domain.ZoneName);
|
ZoneInfo = ServerController.GetDomain(pointer.ZoneName);
|
||||||
|
|
||||||
AddWebSitePointer(siteItemId,
|
AddWebSitePointer(siteItemId,
|
||||||
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
||||||
|
@ -851,7 +851,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
foreach (DomainInfo pointer in pointers)
|
foreach (DomainInfo pointer in pointers)
|
||||||
{
|
{
|
||||||
ZoneInfo = ServerController.GetDomain(domain.ZoneName);
|
ZoneInfo = ServerController.GetDomain(pointer.ZoneName);
|
||||||
|
|
||||||
AddWebSitePointer(siteItemId,
|
AddWebSitePointer(siteItemId,
|
||||||
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
|
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
|
||||||
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
|
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
|
||||||
-->
|
-->
|
||||||
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
|
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<appSettings>
|
<appSettings>
|
||||||
<!-- A1D4KDHUE83NKHddF -->
|
<!-- A1D4KDHUE83NKHddF -->
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
||||||
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
||||||
-->
|
-->
|
||||||
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
||||||
<!-- A1D4KDHUE83NKHddF -->
|
<!-- A1D4KDHUE83NKHddF -->
|
||||||
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
||||||
<!-- Web Applications -->
|
<!-- Web Applications -->
|
||||||
|
|
|
@ -66,6 +66,7 @@ namespace WebsitePanel.Portal
|
||||||
BindService();
|
BindService();
|
||||||
BindServiceProperties();
|
BindServiceProperties();
|
||||||
BindServiceQuota();
|
BindServiceQuota();
|
||||||
|
ToggleGlobalDNS();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -151,6 +152,23 @@ namespace WebsitePanel.Portal
|
||||||
ctrl.BindSettings(ConvertArrayToDictionary(settings));
|
ctrl.BindSettings(ConvertArrayToDictionary(settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void ToggleGlobalDNS()
|
||||||
|
{
|
||||||
|
DnsRecrodsPanel.Visible = DnsRecrodsHeader.Visible = ((resourceGroup.GroupName == ResourceGroups.BlackBerry) |
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.OCS)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.HostedCRM)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.Os)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.HostedOrganizations) |
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.HostedSharePoint) |
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.Mail)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.Lync)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.Exchange)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.Web)|
|
||||||
|
(resourceGroup.GroupName == ResourceGroups.Dns));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void SaveServiceProperties()
|
private void SaveServiceProperties()
|
||||||
{
|
{
|
||||||
// find control
|
// find control
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue