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
|
@ -6038,4 +6038,134 @@ SET
|
|||
WHERE
|
||||
DomainID = @DomainID
|
||||
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
|
||||
|
|
|
@ -194,7 +194,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return zoneItemId;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static int RegisterZoneItems(int spaceId, int serviceId, string zoneName, bool primaryZone)
|
||||
{
|
||||
// zone item
|
||||
|
@ -206,6 +206,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return zoneItemId;
|
||||
}
|
||||
|
||||
|
||||
public static int DeleteZone(int zoneItemId)
|
||||
{
|
||||
// delete DNS zone if applicable
|
||||
|
@ -288,11 +289,12 @@ namespace WebsitePanel.EnterpriseServer
|
|||
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 (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP))
|
||||
if (String.IsNullOrEmpty(serviceIP) && String.IsNullOrEmpty(record.ExternalIP) && String.IsNullOrEmpty(record.RecordData))
|
||||
continue;
|
||||
|
||||
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, "domain_name", string.IsNullOrEmpty(domainName) ? string.Empty : domainName);
|
||||
|
||||
if (String.IsNullOrEmpty(rr.RecordData) && !String.IsNullOrEmpty(serviceIP))
|
||||
rr.RecordData = serviceIP;
|
||||
|
|
|
@ -455,6 +455,22 @@ namespace WebsitePanel.EnterpriseServer
|
|||
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
|
||||
//
|
||||
|
@ -1414,7 +1430,16 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (domains == null || Array.BinarySearch(domains, domain.DomainName) < 0)
|
||||
hubTransportRole.AddAuthoritativeDomain(domain.DomainName);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Add the service records
|
||||
if (domain != null)
|
||||
{
|
||||
if (domain.ZoneItemId != 0)
|
||||
{
|
||||
ServerController.AddServiceDNSRecords(org.PackageId, ResourceGroups.Exchange, domain, "");
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
|
@ -208,6 +208,18 @@ namespace WebsitePanel.EnterpriseServer.Code.HostedSolution
|
|||
}
|
||||
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);
|
||||
|
||||
bReloadConfiguration = true;
|
||||
|
|
|
@ -40,6 +40,7 @@ using WebsitePanel.Providers.HostedSolution;
|
|||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.SharePoint;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.Providers.DNS;
|
||||
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
|
@ -335,6 +336,17 @@ namespace WebsitePanel.EnterpriseServer
|
|||
RollbackOrganization(packageId, organizationId);
|
||||
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);
|
||||
|
||||
|
@ -367,60 +379,6 @@ namespace WebsitePanel.EnterpriseServer
|
|||
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)
|
||||
|
|
|
@ -1202,7 +1202,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return pointers;
|
||||
}
|
||||
|
||||
public static int AddMailDomainPointer(int itemId, int domainId)
|
||||
public static int AddMailDomainPointer( int itemId, int domainId)
|
||||
{
|
||||
// check account
|
||||
int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo);
|
||||
|
@ -1231,6 +1231,16 @@ namespace WebsitePanel.EnterpriseServer
|
|||
ServiceProviderProxy.Init(mail, mailDomain.ServiceId);
|
||||
mail.AddDomainAlias(mailDomain.Name, domain.DomainName);
|
||||
|
||||
|
||||
if (domain != null)
|
||||
{
|
||||
if (domain.ZoneItemId != 0)
|
||||
{
|
||||
ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, "");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// update domain
|
||||
domain.MailDomainId = itemId;
|
||||
ServerController.UpdateDomain(domain);
|
||||
|
|
|
@ -468,6 +468,16 @@ namespace WebsitePanel.EnterpriseServer
|
|||
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)
|
||||
ServerController.CreateDomainInstantAlias("", domainId);
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@ using WebsitePanel.Providers.DNS;
|
|||
using WebsitePanel.Server;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.Web;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
||||
namespace WebsitePanel.EnterpriseServer
|
||||
{
|
||||
|
@ -1732,6 +1733,16 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (domainId < 0)
|
||||
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
|
||||
createInstantAlias &= (domainType != DomainType.DomainPointer);
|
||||
if (createInstantAlias)
|
||||
|
@ -1900,6 +1911,86 @@ namespace WebsitePanel.EnterpriseServer
|
|||
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)
|
||||
{
|
||||
// check account
|
||||
|
@ -2159,6 +2250,110 @@ namespace WebsitePanel.EnterpriseServer
|
|||
// update domain
|
||||
domain.ZoneItemId = zoneItemId;
|
||||
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
|
||||
|
|
|
@ -331,27 +331,13 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
|
|||
string hostName = tmpStr[0];
|
||||
string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1));
|
||||
|
||||
DomainInfo domain = ServerController.GetDomain(domainName);
|
||||
if (domain != null)
|
||||
{
|
||||
string website = siteName;
|
||||
List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(serviceId);
|
||||
List<DnsRecord> resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, "");
|
||||
DNSServer dns = new DNSServer();
|
||||
|
||||
DnsRecord[] records = ServerController.GetDnsZoneRecords(domain.DomainId);
|
||||
foreach (DnsRecord record in records)
|
||||
{
|
||||
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);
|
||||
}
|
||||
ServiceProviderProxy.Init(dns, dnsServiceId);
|
||||
// add new resource records
|
||||
dns.AddZoneRecords(domainName, resourceRecords.ToArray());
|
||||
}
|
||||
|
||||
TaskManager.ItemId = itemId;
|
||||
|
@ -412,27 +398,13 @@ namespace WebsitePanel.EnterpriseServer.Code.SharePoint
|
|||
string hostName = tmpStr[0];
|
||||
string domainName = siteName.Substring(hostName.Length + 1, siteName.Length - (hostName.Length + 1));
|
||||
|
||||
DomainInfo domain = ServerController.GetDomain(domainName);
|
||||
if (domain != null)
|
||||
{
|
||||
var ip = hostedSharePointSettings["RootWebApplicationIpAddress"];
|
||||
var type = ip.Contains(":") ? DnsRecordType.AAAA : DnsRecordType.A;
|
||||
ServerController.DeleteDnsZoneRecord(domain.DomainId, String.Empty, type, ip);
|
||||
ServerController.DeleteDnsZoneRecord(domain.DomainId, "www", type, ip);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
List<GlobalDnsRecord> dnsRecords = ServerController.GetDnsRecordsByService(origItem.ServiceId);
|
||||
List<DnsRecord> resourceRecords = DnsServerController.BuildDnsResourceRecords(dnsRecords, hostName, domainName, "");
|
||||
DNSServer dns = new DNSServer();
|
||||
|
||||
ServiceProviderProxy.Init(dns, dnsServiceId);
|
||||
// add new resource records
|
||||
dns.DeleteZoneRecords(domainName, resourceRecords.ToArray());
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -398,12 +398,18 @@ namespace WebsitePanel.EnterpriseServer
|
|||
public static Dictionary<int, BackgroundTask> GetScheduledTasks()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -723,7 +723,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
foreach (DomainInfo pointer in pointers)
|
||||
{
|
||||
ZoneInfo = ServerController.GetDomain(domain.ZoneName);
|
||||
ZoneInfo = ServerController.GetDomain(pointer.ZoneName);
|
||||
|
||||
AddWebSitePointer(siteItemId,
|
||||
(pointer.DomainName.Replace("." + pointer.ZoneName, "") == pointer.ZoneName) ? "" : pointer.DomainName.Replace("." + pointer.ZoneName, "")
|
||||
|
@ -851,7 +851,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
foreach (DomainInfo pointer in pointers)
|
||||
{
|
||||
ZoneInfo = ServerController.GetDomain(domain.ZoneName);
|
||||
ZoneInfo = ServerController.GetDomain(pointer.ZoneName);
|
||||
|
||||
AddWebSitePointer(siteItemId,
|
||||
(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=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>
|
||||
<appSettings>
|
||||
<!-- A1D4KDHUE83NKHddF -->
|
||||
|
@ -17,7 +17,7 @@
|
|||
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
||||
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
||||
-->
|
||||
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
|
||||
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
|
||||
<!-- A1D4KDHUE83NKHddF -->
|
||||
<add key="WebsitePanel.EncryptionEnabled" value="true" />
|
||||
<!-- Web Applications -->
|
||||
|
|
|
@ -66,6 +66,7 @@ namespace WebsitePanel.Portal
|
|||
BindService();
|
||||
BindServiceProperties();
|
||||
BindServiceQuota();
|
||||
ToggleGlobalDNS();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -151,6 +152,23 @@ namespace WebsitePanel.Portal
|
|||
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()
|
||||
{
|
||||
// find control
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue