From f34ff4f2c5366909b51179f4bcfe5ee82846fc3c Mon Sep 17 00:00:00 2001
From: McMak
Date: Tue, 19 May 2015 14:15:06 +0300
Subject: [PATCH 01/16] Installer: old to new update #1
---
.../Sources/Setup.WIXInstaller/Product.wxs | 6 +-
.../WebsitePanel.Setup/Internal/Adapter.cs | 17 +-
.../Internal/XmlDocumentMerge.cs | 146 +-
WebsitePanel/Database/wix_install_db.sql | 8 +-
WebsitePanel/Database/wix_update_db.sql | 2388 +++++++++++++----
5 files changed, 2056 insertions(+), 509 deletions(-)
diff --git a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
index 6d4f921b..ebf7abe3 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
+++ b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
@@ -596,13 +596,13 @@
-
+
-
+
-
+
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
index ea1913ec..1c873917 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
@@ -3928,6 +3928,13 @@ namespace WebsitePanel.Setup.Internal
{
try
{
+ XmlDocumentMerge.KeyAttributes = new List { "name", "id", "key", "pageID", "localName", "xmlns", "privatePath", "moduleDefinitionID", "ref", "verb;path", "controlRenderingCompatibilityVersion;clientIDMode" };
+ XmlDocumentMerge.FrozenAttributes = new List
+ {
+ new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/microsoft.web.services3/security/securityTokenManager/add", Attributes = new List() {"localName"} },
+ new XmlDocumentMerge.FrozenAttrTag(true) { Path="compilation", Attributes = new List() {"targetFramework"} },
+ new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/startup/supportedRuntime", Attributes = new List() {"version", "sku" } }
+ };
Log.WriteStart("RestoreXmlConfigs");
var Backup = BackupRestore.Find(Ctx.InstallerFolder, Global.DefaultProductName, Ctx.ComponentName);
switch(Ctx.ComponentCode)
@@ -3940,21 +3947,13 @@ namespace WebsitePanel.Setup.Internal
case Global.EntServer.ComponentCode:
{
Backup.XmlFiles.Add("Web.config");
+ Backup.XmlFiles.Add(@"bin\WebsitePanel.SchedulerService.exe.config");
}
break;
case Global.WebPortal.ComponentCode:
{
Backup.XmlFiles.Add("Web.config");
- Backup.XmlFiles.Add(@"App_Data\Countries.config");
- Backup.XmlFiles.Add(@"App_Data\CountryStates.config");
- Backup.XmlFiles.Add(@"App_Data\Ecommerce_Modules.config");
- Backup.XmlFiles.Add(@"App_Data\Ecommerce_Pages.config");
- Backup.XmlFiles.Add(@"App_Data\ESModule_ControlsHierarchy.config");
- Backup.XmlFiles.Add(@"App_Data\ModulesData.config");
Backup.XmlFiles.Add(@"App_Data\SiteSettings.config");
- Backup.XmlFiles.Add(@"App_Data\SupportedLocales.config");
- Backup.XmlFiles.Add(@"App_Data\SupportedThemes.config");
- Backup.XmlFiles.Add(@"App_Data\WebsitePanel_Modules.config");
Backup.XmlFiles.Add(@"App_Data\WebsitePanel_Pages.config");
}
break;
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/XmlDocumentMerge.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/XmlDocumentMerge.cs
index 4c4511c4..50a10dce 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/XmlDocumentMerge.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/XmlDocumentMerge.cs
@@ -8,14 +8,46 @@ namespace WebsitePanel.Setup.Internal
{
public static class XmlDocumentMerge
{
+ public class AttrTag
+ {
+ public AttrTag()
+ : this(null)
+ {
+
+ }
+ public AttrTag(params string[] Attributes)
+ {
+ this.Attributes = Attributes;
+ Priority = Attributes == null ? 0 : (ulong)Attributes.LongLength;
+ }
+ public ulong Priority { get; private set; }
+ public string[] Attributes;
+ }
+ public class FrozenAttrTag
+ {
+ public FrozenAttrTag()
+ : this(false)
+ {
+
+ }
+ public FrozenAttrTag(bool Relative)
+ {
+ IsRelative = Relative;
+ }
+ public string Path { get; set; }
+ public IList Attributes { get; set; }
+ public bool IsRelative { get; private set; }
+ }
const string SuccessFormat = "Success: {0}.";
const string ErrorFormat = "Error: {0}.";
const string MergeCompleted = "XmlDocumentMerge completed";
static XmlDocumentMerge()
{
- KeyAttributes = new List { "name", "id", "key" };
+ KeyAttributes = new List();
+ FrozenAttributes = new List();
}
- public static List KeyAttributes { get; set; }
+ public static IList KeyAttributes { get; set; }
+ public static IList FrozenAttributes { get; set; }
public static string Process(string Src, string Dst, string SaveTo = "")
{
var Result = string.Empty;
@@ -83,57 +115,97 @@ namespace WebsitePanel.Setup.Internal
}
private static string NodeView(XPathNavigator Navi)
{
- foreach (var Attr in KeyAttributes)
+ foreach (var Item in GetProcessingChain(KeyAttributes))
{
- var Value = Navi.GetAttribute(Attr, string.Empty);
- if (!string.IsNullOrWhiteSpace(Value))
- return string.Format("{0}[@{1}='{2}']", Navi.Name, Attr, Value);
+ string Result = string.Empty;
+ foreach (var Attr in Item.Attributes)
+ {
+ var Value = Navi.GetAttribute(Attr, string.Empty);
+ if (string.IsNullOrWhiteSpace(Value))
+ {
+ Result = string.Empty;
+ continue;
+ }
+ else
+ {
+ if (string.IsNullOrWhiteSpace(Result))
+ Result = string.Format("@{0}='{1}'", Attr, Value);
+ else
+ Result = string.Format("{0} and @{1}='{2}'", Result, Attr, Value);
+ }
+ }
+ if (!string.IsNullOrWhiteSpace(Result))
+ return string.Format("{0}[{1}]", Navi.Name, Result);
}
return Navi.Name;
}
private static void Merge(XPathNavigator DstNavi, XmlDocument SrcDoc, string Parent)
{
- if (DstNavi.NodeType == XPathNodeType.Element)
+ var Current = NodePath(Parent, NodeView(DstNavi));
+ if (!string.IsNullOrWhiteSpace(Current))
{
- var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, NodeView(DstNavi)));
- if (SrcElem != null)
+ if (DstNavi.NodeType == XPathNodeType.Element)
{
- if (DstNavi.MoveToFirstAttribute())
+ var SrcElem = SrcDoc.SelectSingleNode(Current);
+ if (SrcElem != null)
{
- do
+ var Frozen = GetFrozenAttributes(Current, FrozenAttributes);
+ if (DstNavi.MoveToFirstAttribute())
{
- var SrcElemAttr = SrcElem.Attributes[DstNavi.LocalName];
- if (SrcElemAttr != null)
- DstNavi.SetValue(SrcElemAttr.Value);
+ do
+ {
+ var SrcElemAttr = SrcElem.Attributes[DstNavi.LocalName];
+ if (SrcElemAttr != null && CanProcess(DstNavi.LocalName, Frozen))
+ DstNavi.SetValue(SrcElemAttr.Value);
+ }
+ while (DstNavi.MoveToNextAttribute());
+ DstNavi.MoveToParent();
}
- while (DstNavi.MoveToNextAttribute());
- DstNavi.MoveToParent();
}
}
- }
- else if (DstNavi.NodeType == XPathNodeType.Text)
- {
- var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, NodeView(DstNavi)));
- if (SrcElem != null)
- DstNavi.SetValue(SrcElem.InnerText);
- }
- var Here = NodeView(DstNavi);
- if (DstNavi.MoveToFirstChild())
- {
- do
+ else if (DstNavi.NodeType == XPathNodeType.Text)
{
- Merge(DstNavi, SrcDoc, NodePath(Parent, Here));
+ var SrcElem = SrcDoc.SelectSingleNode(Current);
+ if (SrcElem != null)
+ DstNavi.SetValue(SrcElem.InnerText);
+ }
+ if (DstNavi.MoveToFirstChild())
+ {
+ do
+ {
+ Merge(DstNavi, SrcDoc, Current);
+ }
+ while (DstNavi.MoveToNext());
+ DstNavi.MoveToParent();
+ }
+ else if (DstNavi.NodeType == XPathNodeType.Element)
+ {
+ var SrcElem = SrcDoc.SelectSingleNode(Current);
+ if (SrcElem != null && !string.IsNullOrWhiteSpace(SrcElem.InnerXml))
+ foreach (XmlNode Child in SrcElem.ChildNodes)
+ DstNavi.AppendChild(Child.CloneNode(true).CreateNavigator());
}
- while (DstNavi.MoveToNext());
- DstNavi.MoveToParent();
- }
- else if (DstNavi.NodeType == XPathNodeType.Element)
- {
- var SrcElem = SrcDoc.SelectSingleNode(NodePath(Parent, Here));
- if (SrcElem != null && !string.IsNullOrWhiteSpace(SrcElem.InnerXml))
- foreach (XmlNode Child in SrcElem.ChildNodes)
- DstNavi.AppendChild(Child.CloneNode(true).CreateNavigator());
}
}
+ private static IList GetProcessingChain(IEnumerable Attributes)
+ {
+ var Delimiter = ";";
+ var Chain = new List();
+ foreach (var Attribute in Attributes)
+ Chain.Add(new AttrTag(Attribute.Split(new string[] { Delimiter }, StringSplitOptions.RemoveEmptyEntries)));
+ Chain.Sort(delegate(AttrTag a, AttrTag b) { return a.Priority == b.Priority ? 0 : a.Priority > b.Priority ? -1 : 1; });
+ return Chain;
+ }
+ private static FrozenAttrTag GetFrozenAttributes(string Path, IEnumerable Frozens)
+ {
+ foreach (var Frozen in Frozens)
+ if (Frozen.IsRelative ? Path.IndexOf(Frozen.Path, 1) == -1 : Path.StartsWith(Frozen.Path))
+ return Frozen;
+ return null;
+ }
+ private static bool CanProcess(string Name, FrozenAttrTag Frozen)
+ {
+ return Frozen == null ? true : !Frozen.Attributes.Contains(Name);
+ }
}
}
diff --git a/WebsitePanel/Database/wix_install_db.sql b/WebsitePanel/Database/wix_install_db.sql
index a058e413..01122d13 100644
--- a/WebsitePanel/Database/wix_install_db.sql
+++ b/WebsitePanel/Database/wix_install_db.sql
@@ -44364,7 +44364,7 @@ Hello #user.FirstName#,
-Please, find below details of your control panel account.
+Please, find below details of your control panel account. The one time password was generated for you. You should change the password after login.
Control Panel URL
@@ -44373,7 +44373,7 @@ Please, find below details of your control panel account.
Control Panel URL |
Username |
- Password |
+ One Time Password |
@@ -44411,11 +44411,11 @@ INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [Property
Hello #user.FirstName#,
-Please, find below details of your control panel account.
+Please, find below details of your control panel account. The one time password was generated for you. You should change the password after login.
Control Panel URL: http://panel.AcmeHosting.com
Username: #user.Username#
-Password: #user.Password#
+One Time Password: #user.Password#
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
diff --git a/WebsitePanel/Database/wix_update_db.sql b/WebsitePanel/Database/wix_update_db.sql
index 4131b41b..deb9d711 100644
--- a/WebsitePanel/Database/wix_update_db.sql
+++ b/WebsitePanel/Database/wix_update_db.sql
@@ -73,7 +73,7 @@ GO
-ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
(
@MailboxPlanId int OUTPUT,
@ItemID int,
@@ -181,7 +181,7 @@ GO
-ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
(
@MailboxPlanId int,
@MailboxPlan nvarchar(300),
@@ -229,19 +229,19 @@ UPDATE ExchangeMailboxPlans SET
MailboxPlanType = @MailboxPlanType,
AllowLitigationHold = @AllowLitigationHold,
RecoverableItemsWarningPct = @RecoverableItemsWarningPct,
- RecoverableItemsSpace = @RecoverableItemsSpace,
+ RecoverableItemsSpace = @RecoverableItemsSpace,
LitigationHoldUrl = @LitigationHoldUrl,
LitigationHoldMsg = @LitigationHoldMsg
WHERE MailboxPlanId = @MailboxPlanId
RETURN
-
+
GO
-ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
(
@MailboxPlanId int
)
@@ -281,7 +281,7 @@ GO
-ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
+ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
(
@ItemID int
)
@@ -296,7 +296,7 @@ SELECT
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders,
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains,
(SELECT MIN(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace,
- (SELECT MIN(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace
+ (SELECT MIN(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace
END
ELSE
BEGIN
@@ -307,7 +307,7 @@ SELECT
(SELECT COUNT(*) FROM ExchangeAccounts WHERE AccountType = 4 AND ItemID = @ItemID) AS CreatedPublicFolders,
(SELECT COUNT(*) FROM ExchangeOrganizationDomains WHERE ItemID = @ItemID) AS CreatedDomains,
(SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedDiskSpace,
- (SELECT SUM(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace
+ (SELECT SUM(B.RecoverableItemsSpace) FROM ExchangeAccounts AS A INNER JOIN ExchangeMailboxPlans AS B ON A.MailboxPlanId = B.MailboxPlanId WHERE A.ItemID=@ItemID) AS UsedLitigationHoldSpace
END
@@ -384,7 +384,7 @@ EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
-- Execute a SELECT statement that uses the OPENXML rowset provider.
DELETE FROM ServiceProperties
-WHERE ServiceID = @ServiceID
+WHERE ServiceID = @ServiceID
AND PropertyName COLLATE Latin1_General_CI_AS IN
(
SELECT PropertyName
@@ -402,7 +402,7 @@ SELECT
@ServiceID,
PropertyName,
PropertyValue
-FROM OPENXML(@idoc, '/properties/property',1) WITH
+FROM OPENXML(@idoc, '/properties/property',1) WITH
(
PropertyName nvarchar(50) '@name',
PropertyValue nvarchar(1000) '@value'
@@ -412,7 +412,7 @@ FROM OPENXML(@idoc, '/properties/property',1) WITH
exec sp_xml_removedocument @idoc
COMMIT TRAN
-RETURN
+RETURN
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Hosted MS CRM 2011')
@@ -462,8 +462,8 @@ END
GO
-------------------------------- Scheduler Service------------------------------------------------------
-IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_NAME = 'Schedule'
+IF EXISTS( SELECT * FROM INFORMATION_SCHEMA.COLUMNS
+ WHERE TABLE_NAME = 'Schedule'
AND COLUMN_NAME = 'LastFinish')
ALTER TABLE Schedule
DROP COLUMN LastFinish
@@ -583,7 +583,7 @@ SELECT
FROM Schedule AS S
INNER JOIN PackagesTree(@PackageID, @Recursive) AS PT ON S.PackageID = PT.PackageID
ORDER BY S.Enabled DESC, S.NextRun
-
+
-- select schedules
SELECT
@@ -653,9 +653,17 @@ RAISERROR('You are not allowed to access this package', 16, 1)
DECLARE @condition nvarchar(400)
SET @condition = ' 1 = 1 '
-IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
-AND @FilterValue <> '' AND @FilterValue IS NOT NULL
-SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ScheduleName LIKE ''' + @FilterValue + '''
+ OR Username LIKE ''' + @FilterValue + '''
+ OR FullName LIKE ''' + @FilterValue + '''
+ OR Email LIKE ''' + @FilterValue + ''')'
+END
IF @SortColumn IS NULL OR @SortColumn = ''
SET @SortColumn = 'S.ScheduleName ASC'
@@ -711,7 +719,7 @@ SELECT
-- packages
P.PackageID,
P.PackageName,
-
+
-- user
P.UserID,
U.Username,
@@ -783,7 +791,7 @@ SET
WeekMonthDay = @WeekMonthDay
WHERE
ScheduleID = @ScheduleID
-
+
DECLARE @idoc int
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @XmlParameters
@@ -802,7 +810,7 @@ SELECT
@ScheduleID,
ParameterID,
ParameterValue
-FROM OPENXML(@idoc, '/parameters/parameter',1) WITH
+FROM OPENXML(@idoc, '/parameters/parameter',1) WITH
(
ParameterID nvarchar(50) '@id',
ParameterValue nvarchar(3000) '@value'
@@ -1008,7 +1016,7 @@ SELECT TOP 1
FROM BackgroundTasks AS T
INNER JOIN BackgroundTaskStack AS TS
ON TS.TaskId = T.ID
-WHERE T.TaskID = @TaskID
+WHERE T.TaskID = @TaskID
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetBackgroundTasks')
@@ -1031,7 +1039,7 @@ AS
inner join Users C on P.id = C.OwnerID
)
-SELECT
+SELECT
T.ID,
T.Guid,
T.TaskID,
@@ -1381,7 +1389,7 @@ DROP PROCEDURE GetProcessBackgroundTasks
GO
CREATE PROCEDURE [dbo].[GetProcessBackgroundTasks]
-(
+(
@Status INT
)
AS
@@ -1507,7 +1515,7 @@ SELECT
FROM
ExchangeDisclaimers
WHERE
- ItemID = @ItemID
+ ItemID = @ItemID
ORDER BY DisclaimerName
RETURN'
END
@@ -1533,7 +1541,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateExchangeDisclaimer')
BEGIN
-EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateExchangeDisclaimer]
+EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateExchangeDisclaimer]
(
@ExchangeDisclaimerId int,
@DisclaimerName nvarchar(300),
@@ -1555,7 +1563,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'AddExchangeDisclaimer')
BEGIN
-EXEC sp_executesql N'CREATE PROCEDURE [dbo].[AddExchangeDisclaimer]
+EXEC sp_executesql N'CREATE PROCEDURE [dbo].[AddExchangeDisclaimer]
(
@ExchangeDisclaimerId int OUTPUT,
@ItemID int,
@@ -1588,7 +1596,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeDisclaimer')
BEGIN
-EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetExchangeDisclaimer]
+EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetExchangeDisclaimer]
(
@ExchangeDisclaimerId int
)
@@ -1621,7 +1629,7 @@ Go
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'SetExchangeAccountDisclaimerId')
BEGIN
-EXEC sp_executesql N' CREATE PROCEDURE [dbo].[SetExchangeAccountDisclaimerId]
+EXEC sp_executesql N' CREATE PROCEDURE [dbo].[SetExchangeAccountDisclaimerId]
(
@AccountID int,
@ExchangeDisclaimerId int
@@ -1637,7 +1645,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetExchangeAccountDisclaimerId')
BEGIN
-EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetExchangeAccountDisclaimerId]
+EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetExchangeAccountDisclaimerId]
(
@AccountID int
)
@@ -1653,10 +1661,10 @@ END
GO
--- add Disclaimers Quota
+-- add Disclaimers Quota
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE ([QuotaName] = N'Exchange2007.DisclaimersAllowed'))
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (422, 12, 26, N'Exchange2007.DisclaimersAllowed', N'Disclaimers Allowed', 1, 0, NULL, NULL)
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (422, 12, 26, N'Exchange2007.DisclaimersAllowed', N'Disclaimers Allowed', 1, 0, NULL, NULL)
END
GO
@@ -1665,13 +1673,13 @@ GO
--BEGIN
--INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (423, 13, 5, N'HostedSolution.SecurityGroupManagement', N'Allow Security Group Management', 1, 0, NULL, NULL)
--END
---GO
+--GO
-- Lync Enterprise Voice
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='LyncUserPlans' AND COLS.name='TelephonyVoicePolicy')
BEGIN
-ALTER TABLE [dbo].[LyncUserPlans] ADD
+ALTER TABLE [dbo].[LyncUserPlans] ADD
[RemoteUserAccess] [bit] NOT NULL DEFAULT 0,
[PublicIMConnectivity] [bit] NOT NULL DEFAULT 0,
@@ -1690,7 +1698,7 @@ ALTER TABLE [dbo].[LyncUserPlans] ADD
END
Go
---
+--
DROP PROCEDURE GetLyncUserPlan;
@@ -1722,7 +1730,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'UpdateLyncUserPlan')
BEGIN
-EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateLyncUserPlan]
+EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateLyncUserPlan]
(
@LyncUserPlanId int,
@LyncUserPlanName nvarchar(300),
@@ -1744,9 +1752,9 @@ EXEC sp_executesql N' CREATE PROCEDURE [dbo].[UpdateLyncUserPlan]
@Telephony int,
@ServerURI nvarchar(300),
-
+
@ArchivePolicy nvarchar(300),
-
+
@TelephonyDialPlanPolicy nvarchar(300),
@TelephonyVoicePolicy nvarchar(300)
)
@@ -1772,7 +1780,7 @@ UPDATE LyncUserPlans SET
Telephony = @Telephony,
ServerURI = @ServerURI,
-
+
ArchivePolicy = @ArchivePolicy,
TelephonyDialPlanPolicy = @TelephonyDialPlanPolicy,
TelephonyVoicePolicy = @TelephonyVoicePolicy
@@ -1788,7 +1796,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'AddLyncUserPlan')
BEGIN
-EXEC sp_executesql N'CREATE PROCEDURE [dbo].[AddLyncUserPlan]
+EXEC sp_executesql N'CREATE PROCEDURE [dbo].[AddLyncUserPlan]
(
@LyncUserPlanId int OUTPUT,
@ItemID int,
@@ -1811,7 +1819,7 @@ EXEC sp_executesql N'CREATE PROCEDURE [dbo].[AddLyncUserPlan]
@Telephony int,
@ServerURI nvarchar(300),
-
+
@ArchivePolicy nvarchar(300),
@TelephonyDialPlanPolicy nvarchar(300),
@TelephonyVoicePolicy nvarchar(300)
@@ -1856,7 +1864,7 @@ INSERT INTO LyncUserPlans
Telephony,
ServerURI,
-
+
ArchivePolicy,
TelephonyDialPlanPolicy,
TelephonyVoicePolicy
@@ -1884,7 +1892,7 @@ VALUES
@Telephony,
@ServerURI,
-
+
@ArchivePolicy,
@TelephonyDialPlanPolicy,
@TelephonyVoicePolicy
@@ -1893,7 +1901,7 @@ VALUES
SET @LyncUserPlanId = SCOPE_IDENTITY()
-RETURN'
+RETURN'
END
GO
@@ -1902,7 +1910,7 @@ GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type_desc = N'SQL_STORED_PROCEDURE' AND name = N'GetLyncUserPlan')
BEGIN
-EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetLyncUserPlan]
+EXEC sp_executesql N'CREATE PROCEDURE [dbo].[GetLyncUserPlan]
(
@LyncUserPlanId int
)
@@ -1929,7 +1937,7 @@ SELECT
Telephony,
ServerURI,
-
+
ArchivePolicy,
TelephonyDialPlanPolicy,
TelephonyVoicePolicy
@@ -1946,7 +1954,7 @@ GO
-ALTER PROCEDURE [dbo].[GetLyncUserPlan]
+ALTER PROCEDURE [dbo].[GetLyncUserPlan]
(
@LyncUserPlanId int
)
@@ -1973,7 +1981,7 @@ SELECT
Telephony,
ServerURI,
-
+
ArchivePolicy,
TelephonyDialPlanPolicy,
TelephonyVoicePolicy
@@ -2068,13 +2076,13 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 320 -- OCS Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
@@ -2088,12 +2096,12 @@ AS
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
- WHERE pt.ParentPackageID = @PackageID
+ WHERE pt.ParentPackageID = @PackageID
AND ea.AccountType IN (1)
AND ea.MailboxPlanId IS NOT NULL)
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
- SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
- INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
+ SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
+ INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
@@ -2255,11 +2263,11 @@ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
AND @FilterValue <> '' AND @FilterValue IS NOT NULL
BEGIN
IF @FilterColumn = 'PrimaryEmailAddress' AND @AccountTypes <> '2'
- BEGIN
+ BEGIN
SET @condition = @condition + ' AND EA.AccountID IN (SELECT EAEA.AccountID FROM ExchangeAccountEmailAddresses EAEA WHERE EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
END
ELSE
- BEGIN
+ BEGIN
SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
END
END
@@ -2278,7 +2286,7 @@ SELECT
EA.PrimaryEmailAddress,
EA.MailEnabledPublicFolder,
EA.MailboxPlanId,
- P.MailboxPlan,
+ P.MailboxPlan,
EA.SubscriberNumber,
EA.UserPrincipalName
FROM
@@ -2418,7 +2426,7 @@ GO
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Remote Desktop Services Windows 2012')
BEGIN
-INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery])
+INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery])
VALUES(1501, 45, N'RemoteDesktopServices2012', N'Remote Desktop Services Windows 2012', N'WebsitePanel.Providers.RemoteDesktopServices.Windows2012,WebsitePanel.Providers.RemoteDesktopServices.Windows2012', N'RDS', 1)
END
GO
@@ -2450,7 +2458,7 @@ BEGIN
-- delete
DELETE FROM PackageIPAddresses
FROM PackageIPAddresses AS PIP
- INNER JOIN OPENXML(@idoc, '/items/item', 1) WITH
+ INNER JOIN OPENXML(@idoc, '/items/item', 1) WITH
(
AddressID int '@id'
) as PV ON PIP.AddressID = PV.AddressID
@@ -2458,17 +2466,17 @@ BEGIN
-- insert
INSERT INTO dbo.PackageIPAddresses
- (
+ (
PackageID,
OrgID,
- AddressID
+ AddressID
)
- SELECT
+ SELECT
@PackageID,
@OrgID,
AddressID
- FROM OPENXML(@idoc, '/items/item', 1) WITH
+ FROM OPENXML(@idoc, '/items/item', 1) WITH
(
AddressID int '@id'
) as PV
@@ -2504,9 +2512,18 @@ AND (@PoolID = 0 OR @PoolID <> 0 AND IP.PoolID = @PoolID)
AND (@OrgID = 0 OR @OrgID <> 0 AND PA.OrgID = @OrgID)
'
-IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
-AND @FilterValue <> '' AND @FilterValue IS NOT NULL
-SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ExternalIP LIKE ''' + @FilterValue + '''
+ OR InternalIP LIKE ''' + @FilterValue + '''
+ OR DefaultGateway LIKE ''' + @FilterValue + '''
+ OR ItemName LIKE ''' + @FilterValue + '''
+ OR Username LIKE ''' + @FilterValue + ''')'
+END
IF @SortColumn IS NULL OR @SortColumn = ''
SET @SortColumn = 'IP.ExternalIP ASC'
@@ -2650,13 +2667,13 @@ GO
BEGIN
UPDATE [dbo].[CRMUsers]
- SET
- CALType = 0 WHERE CALType IS NULL
+ SET
+ CALType = 0 WHERE CALType IS NULL
END
GO
-ALTER PROCEDURE [dbo].[InsertCRMUser]
+ALTER PROCEDURE [dbo].[InsertCRMUser]
(
@ItemID int,
@CrmUserID uniqueidentifier,
@@ -2675,14 +2692,14 @@ INSERT INTO
BusinessUnitID,
CALType
)
-VALUES
+VALUES
(
- @ItemID,
+ @ItemID,
@CrmUserID,
@BusinessUnitID,
@CALType
)
-
+
END
GO
@@ -2701,15 +2718,15 @@ BEGIN
UPDATE [dbo].[CRMUsers]
- SET
+ SET
CALType = @CALType
WHERE AccountID = @ItemID
-
+
END
GO
-ALTER PROCEDURE [dbo].[GetCRMUsersCount]
+ALTER PROCEDURE [dbo].[GetCRMUsersCount]
(
@ItemID int,
@Name nvarchar(400),
@@ -2729,15 +2746,15 @@ BEGIN
SET @Email = '%'
END
-SELECT
- COUNT(ea.AccountID)
-FROM
- ExchangeAccounts ea
-INNER JOIN
- CRMUsers cu
-ON
+SELECT
+ COUNT(ea.AccountID)
+FROM
+ ExchangeAccounts ea
+INNER JOIN
+ CRMUsers cu
+ON
ea.AccountID = cu.AccountID
-WHERE
+WHERE
ea.ItemID = @ItemID AND ea.DisplayName LIKE @Name AND ea.PrimaryEmailAddress LIKE @Email
AND ((cu.CALType = @CALType) OR (@CALType = -1))
END
@@ -2783,17 +2800,17 @@ CREATE PROCEDURE [dbo].[GetPackageIPAddressesCount]
AS
BEGIN
-SELECT
+SELECT
COUNT(PA.PackageAddressID)
-FROM
+FROM
dbo.PackageIPAddresses PA
-INNER JOIN
+INNER JOIN
dbo.IPAddresses AS IP ON PA.AddressID = IP.AddressID
-INNER JOIN
+INNER JOIN
dbo.Packages P ON PA.PackageID = P.PackageID
-INNER JOIN
+INNER JOIN
dbo.Users U ON U.UserID = P.UserID
-LEFT JOIN
+LEFT JOIN
ServiceItems SI ON PA.ItemId = SI.ItemID
WHERE
(@PoolID = 0 OR @PoolID <> 0 AND IP.PoolID = @PoolID)
@@ -2901,13 +2918,13 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 320 -- OCS Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
@@ -2921,12 +2938,12 @@ AS
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
- WHERE pt.ParentPackageID = @PackageID
+ WHERE pt.ParentPackageID = @PackageID
AND ea.AccountType IN (1)
AND ea.MailboxPlanId IS NOT NULL)
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
- SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
- INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
+ SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
+ INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
@@ -3213,17 +3230,17 @@ GO
IF EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.SecurityGroupManagement' AND [QuotaID] = 423)
BEGIN
- UPDATE [dbo].[Quotas]
- SET [QuotaDescription] = N'Security Groups',
+ UPDATE [dbo].[Quotas]
+ SET [QuotaDescription] = N'Security Groups',
[QuotaName] = N'HostedSolution.SecurityGroups',
[QuotaTypeID] = 2
WHERE [QuotaID] = 423
- UPDATE [dbo].[HostingPlanQuotas]
+ UPDATE [dbo].[HostingPlanQuotas]
SET [QuotaValue] = -1
WHERE [QuotaID] = 423
- UPDATE [dbo].[PackageQuotas]
+ UPDATE [dbo].[PackageQuotas]
SET [QuotaValue] = -1
WHERE [QuotaID] = 423
END
@@ -3231,7 +3248,7 @@ ELSE
BEGIN
--add Security Groups Quota
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedSolution.SecurityGroups')
- INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (423, 13, 5, N'HostedSolution.SecurityGroups', N'Security Groups', 2, 0, NULL, NULL)
+ INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota]) VALUES (423, 13, 5, N'HostedSolution.SecurityGroups', N'Security Groups', 2, 0, NULL, NULL)
END
GO
@@ -3326,13 +3343,13 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 320 -- OCS Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
@@ -3346,12 +3363,12 @@ AS
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
- WHERE pt.ParentPackageID = @PackageID
+ WHERE pt.ParentPackageID = @PackageID
AND ea.AccountType IN (1)
AND ea.MailboxPlanId IS NOT NULL)
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
- SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
- INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
+ SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
+ INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
@@ -3414,7 +3431,7 @@ GO
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Hosted MS CRM 2013')
BEGIN
-INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery])
+INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery])
VALUES(1202, 24, N'CRM', N'Hosted MS CRM 2013', N'WebsitePanel.Providers.HostedSolution.CRMProvider2013, WebsitePanel.Providers.HostedSolution.Crm2013', N'CRM2011', NULL)
END
GO
@@ -3423,35 +3440,35 @@ GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.Organization')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
VALUES (463, 24, 1, N'HostedCRM2013.Organization', N'CRM Organization', 1, 0, NULL, NULL)
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.MaxDatabaseSize')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID])
VALUES (464, 24, 5, N'HostedCRM2013.MaxDatabaseSize', N'Max Database Size, MB',3, 0 , NULL)
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.EssentialUsers')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
VALUES (465, 24, 2, N'HostedCRM2013.EssentialUsers', N'Essential licenses per organization', 3, 0, NULL, NULL)
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.BasicUsers')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID])
VALUES (466, 24, 3, N'HostedCRM2013.BasicUsers', N'Basic licenses per organization',3, 0 , NULL)
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'HostedCRM2013.ProfessionalUsers')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID],[QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID])
VALUES (467, 24, 4, N'HostedCRM2013.ProfessionalUsers', N'Professional licenses per organization',3, 0 , NULL)
END
GO
@@ -3479,14 +3496,14 @@ GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Exchange2013.ArchivingStorage')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
VALUES (425, 12, 29, N'Exchange2013.ArchivingStorage', N'Archiving storage, MB', 2, 0, NULL, NULL)
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Exchange2013.ArchivingMailboxes')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
VALUES (426, 12, 28, N'Exchange2013.ArchivingMailboxes', N'Archiving Mailboxes per Organization', 2, 0, NULL, NULL)
END
GO
@@ -3523,7 +3540,7 @@ END
GO
-ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
(
@MailboxPlanId int OUTPUT,
@ItemID int,
@@ -3635,7 +3652,7 @@ RETURN
GO
-ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
(
@MailboxPlanId int,
@MailboxPlan nvarchar(300),
@@ -3687,7 +3704,7 @@ UPDATE ExchangeMailboxPlans SET
MailboxPlanType = @MailboxPlanType,
AllowLitigationHold = @AllowLitigationHold,
RecoverableItemsWarningPct = @RecoverableItemsWarningPct,
- RecoverableItemsSpace = @RecoverableItemsSpace,
+ RecoverableItemsSpace = @RecoverableItemsSpace,
LitigationHoldUrl = @LitigationHoldUrl,
LitigationHoldMsg = @LitigationHoldMsg,
Archiving = @Archiving,
@@ -3697,7 +3714,7 @@ UPDATE ExchangeMailboxPlans SET
WHERE MailboxPlanId = @MailboxPlanId
RETURN
-
+
GO
@@ -3735,7 +3752,7 @@ SELECT
FROM
ExchangeMailboxPlans
WHERE
- ItemID = @ItemID
+ ItemID = @ItemID
AND ((Archiving=@Archiving) OR ((@Archiving=0) AND (Archiving IS NULL)))
ORDER BY MailboxPlan
RETURN
@@ -3743,7 +3760,7 @@ RETURN
GO
-ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
(
@MailboxPlanId int
)
@@ -3802,7 +3819,7 @@ END
GO
-- Password column removed
-ALTER PROCEDURE [dbo].[GetExchangeAccount]
+ALTER PROCEDURE [dbo].[GetExchangeAccount]
(
@ItemID int,
@AccountID int
@@ -3822,12 +3839,12 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.ItemID = @ItemID AND
@@ -3837,7 +3854,7 @@ GO
-- Password column removed
-ALTER PROCEDURE [dbo].[GetExchangeAccountByAccountName]
+ALTER PROCEDURE [dbo].[GetExchangeAccountByAccountName]
(
@ItemID int,
@AccountName nvarchar(300)
@@ -3857,12 +3874,12 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.ItemID = @ItemID AND
@@ -3875,7 +3892,7 @@ GO
-- Password column removed
-ALTER PROCEDURE [dbo].[GetExchangeAccountByMailboxPlanId]
+ALTER PROCEDURE [dbo].[GetExchangeAccountByMailboxPlanId]
(
@ItemID int,
@MailboxPlanId int
@@ -3898,17 +3915,17 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.ItemID = @ItemID AND
E.MailboxPlanId IS NULL AND
- E.AccountType IN (1,5)
+ E.AccountType IN (1,5)
RETURN
END
@@ -3929,16 +3946,16 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.MailboxPlanId = @MailboxPlanId AND
- E.AccountType IN (1,5)
+ E.AccountType IN (1,5)
END
ELSE
BEGIN
@@ -3956,17 +3973,17 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.ItemID = @ItemID AND
E.MailboxPlanId = @MailboxPlanId AND
- E.AccountType IN (1,5)
+ E.AccountType IN (1,5)
RETURN
END
GO
@@ -4007,18 +4024,18 @@ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
AND @FilterValue <> '' AND @FilterValue IS NOT NULL
BEGIN
IF @FilterColumn = 'PrimaryEmailAddress' AND @AccountTypes <> '2'
- BEGIN
+ BEGIN
SET @condition = @condition + ' AND EA.AccountID IN (SELECT EAEA.AccountID FROM ExchangeAccountEmailAddresses EAEA WHERE EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
END
ELSE
- BEGIN
+ BEGIN
SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
END
END
if @Archiving = 1
BEGIN
- SET @condition = @condition + ' AND (EA.ArchivingMailboxPlanId > 0) '
+ SET @condition = @condition + ' AND (EA.ArchivingMailboxPlanId > 0) '
END
IF @SortColumn IS NULL OR @SortColumn = ''
@@ -4058,12 +4075,12 @@ print @sql
exec sp_executesql @sql, N'@ItemID int, @StartRow int, @MaximumRows int',
@ItemID, @StartRow, @MaximumRows
-RETURN
+RETURN
GO
-ALTER PROCEDURE [dbo].[SetExchangeAccountMailboxplan]
+ALTER PROCEDURE [dbo].[SetExchangeAccountMailboxplan]
(
@AccountID int,
@MailboxPlanId int,
@@ -4084,7 +4101,7 @@ RETURN
GO
-- Password column removed
-ALTER PROCEDURE [dbo].[UpdateExchangeAccount]
+ALTER PROCEDURE [dbo].[UpdateExchangeAccount]
(
@AccountID int,
@AccountName nvarchar(300),
@@ -4101,9 +4118,9 @@ ALTER PROCEDURE [dbo].[UpdateExchangeAccount]
)
AS
-BEGIN TRAN
+BEGIN TRAN
-IF (@MailboxPlanId = -1)
+IF (@MailboxPlanId = -1)
BEGIN
SET @MailboxPlanId = NULL
END
@@ -4113,7 +4130,7 @@ UPDATE ExchangeAccounts SET
DisplayName = @DisplayName,
PrimaryEmailAddress = @PrimaryEmailAddress,
MailEnabledPublicFolder = @MailEnabledPublicFolder,
- MailboxManagerActions = @MailboxManagerActions,
+ MailboxManagerActions = @MailboxManagerActions,
AccountType =@AccountType,
SamAccountName = @SamAccountName,
MailboxPlanId = @MailboxPlanId,
@@ -4154,7 +4171,7 @@ IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddExchangeRet
DROP PROCEDURE [dbo].[AddExchangeRetentionPolicyTag]
GO
-CREATE PROCEDURE [dbo].[AddExchangeRetentionPolicyTag]
+CREATE PROCEDURE [dbo].[AddExchangeRetentionPolicyTag]
(
@TagID int OUTPUT,
@ItemID int,
@@ -4195,7 +4212,7 @@ IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateExchange
DROP PROCEDURE [dbo].[UpdateExchangeRetentionPolicyTag]
GO
-CREATE PROCEDURE [dbo].[UpdateExchangeRetentionPolicyTag]
+CREATE PROCEDURE [dbo].[UpdateExchangeRetentionPolicyTag]
(
@TagID int,
@ItemID int,
@@ -4215,7 +4232,7 @@ UPDATE ExchangeRetentionPolicyTags SET
WHERE TagID = @TagID
RETURN
-
+
GO
@@ -4238,7 +4255,7 @@ SELECT
FROM
ExchangeRetentionPolicyTags
WHERE
- ItemID = @ItemID
+ ItemID = @ItemID
ORDER BY TagName
RETURN
@@ -4249,7 +4266,7 @@ IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetExchangeRet
DROP PROCEDURE [dbo].[GetExchangeRetentionPolicyTag]
GO
-CREATE PROCEDURE [dbo].[GetExchangeRetentionPolicyTag]
+CREATE PROCEDURE [dbo].[GetExchangeRetentionPolicyTag]
(
@TagID int
)
@@ -4317,10 +4334,10 @@ P.MailboxPlan,
T.TagName
FROM
ExchangeMailboxPlanRetentionPolicyTags AS D
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON P.MailboxPlanId = D.MailboxPlanId
-LEFT OUTER JOIN ExchangeRetentionPolicyTags AS T ON T.TagID = D.TagID
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON P.MailboxPlanId = D.MailboxPlanId
+LEFT OUTER JOIN ExchangeRetentionPolicyTags AS T ON T.TagID = D.TagID
WHERE
- D.MailboxPlanId = @MailboxPlanId
+ D.MailboxPlanId = @MailboxPlanId
RETURN
GO
@@ -4329,7 +4346,7 @@ IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddExchangeMai
DROP PROCEDURE [dbo].[AddExchangeMailboxPlanRetentionPolicyTag]
GO
-CREATE PROCEDURE [dbo].[AddExchangeMailboxPlanRetentionPolicyTag]
+CREATE PROCEDURE [dbo].[AddExchangeMailboxPlanRetentionPolicyTag]
(
@PlanTagID int OUTPUT,
@TagID int,
@@ -4381,7 +4398,7 @@ GO
-- Exchange2013 Archiving
-ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
+ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
(
@ItemID int
)
@@ -4454,7 +4471,7 @@ UPDATE [dbo].[ServiceItemTypes] SET [Suspendable] = 1 WHERE [ItemTypeID] = 38 AN
END
GO
-/* ICE Warp */
+/* ICE Warp */
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [ProviderName] = 'IceWarp')
BEGIN
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (160, 4, N'IceWarp', N'IceWarp Mail Server', N'WebsitePanel.Providers.Mail.IceWarp, WebsitePanel.Providers.Mail.IceWarp', N'IceWarp', NULL)
@@ -4542,7 +4559,7 @@ AS
SELECT *
FROM SupportServiceLevels
WHERE LevelID = @LevelID
-RETURN
+RETURN
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddSupportServiceLevel')
@@ -4582,7 +4599,7 @@ BEGIN
IF EXISTS (SELECT * FROM ResourceGroups WHERE GroupName = 'Service Levels')
BEGIN
- DECLARE @QuotaLastID int, @CurQuotaName nvarchar(100),
+ DECLARE @QuotaLastID int, @CurQuotaName nvarchar(100),
@CurQuotaDescription nvarchar(1000), @QuotaOrderInGroup int
SET @CurQuotaName = N'ServiceLevel.' + @LevelName
@@ -4598,23 +4615,23 @@ BEGIN
IF NOT EXISTS (SELECT * FROM Quotas WHERE QuotaName = @CurQuotaName)
BEGIN
- INSERT Quotas
- (QuotaID,
- GroupID,
- QuotaOrder,
- QuotaName,
- QuotaDescription,
- QuotaTypeID,
- ServiceQuota,
- ItemTypeID)
- VALUES
- (@QuotaLastID + 1,
- @ResourseGroupID,
- @QuotaOrderInGroup + 1,
- @CurQuotaName,
+ INSERT Quotas
+ (QuotaID,
+ GroupID,
+ QuotaOrder,
+ QuotaName,
+ QuotaDescription,
+ QuotaTypeID,
+ ServiceQuota,
+ ItemTypeID)
+ VALUES
+ (@QuotaLastID + 1,
+ @ResourseGroupID,
+ @QuotaOrderInGroup + 1,
+ @CurQuotaName,
@CurQuotaDescription,
- 2,
- 0,
+ 2,
+ 0,
NULL)
END
END
@@ -4659,7 +4676,7 @@ BEGIN
END
-RETURN
+RETURN
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateSupportServiceLevel')
@@ -4691,7 +4708,7 @@ BEGIN
DECLARE @QuotaID INT
SELECT @QuotaID = QuotaID FROM Quotas WHERE QuotaName = @PrevQuotaName
-
+
UPDATE Quotas
SET QuotaName = N'ServiceLevel.' + @LevelName,
QuotaDescription = @LevelName + ', users'
@@ -4700,12 +4717,12 @@ BEGIN
END
-RETURN
+RETURN
GO
-IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type IN ('FN', 'IF', 'TF') AND name = 'GetPackageServiceLevelResource')
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type IN ('FN', 'IF', 'TF') AND name = 'GetPackageServiceLevelResource')
DROP FUNCTION GetPackageServiceLevelResource
GO
@@ -4782,7 +4799,7 @@ BEGIN
)
SET @GroupEnabled = 0
END
-
+
-- check addons
IF EXISTS(
SELECT HPR.GroupID FROM PackageAddons AS PA
@@ -4792,10 +4809,10 @@ BEGIN
)
SET @GroupEnabled = 1
END
-
+
IF @GroupEnabled = 0
RETURN 0
-
+
SET @PID = @ParentPackageID
END -- end while
@@ -4944,7 +4961,7 @@ SELECT
END AS ParentEnabled,
ISNULL(HPR.CalculateDiskSpace, 1) AS CalculateDiskSpace,
ISNULL(HPR.CalculateBandwidth, 1) AS CalculateBandwidth
-FROM ResourceGroups AS RG
+FROM ResourceGroups AS RG
LEFT OUTER JOIN HostingPlanResources AS HPR ON RG.GroupID = HPR.GroupID AND HPR.PlanID = @PlanID
WHERE (RG.ShowGroup = 1)
ORDER BY RG.GroupOrder
@@ -5016,14 +5033,14 @@ WHERE ' + @condition
print @sql
-exec sp_executesql @sql, N'@ItemID int, @IncludeMailboxes bit',
+exec sp_executesql @sql, N'@ItemID int, @IncludeMailboxes bit',
@ItemID, @IncludeMailboxes
RETURN
GO
-- Password column removed
-ALTER PROCEDURE [dbo].[GetExchangeAccount]
+ALTER PROCEDURE [dbo].[GetExchangeAccount]
(
@ItemID int,
@AccountID int
@@ -5043,14 +5060,14 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving,
E.LevelID,
E.IsVIP
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.ItemID = @ItemID AND
@@ -5091,18 +5108,18 @@ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
AND @FilterValue <> '' AND @FilterValue IS NOT NULL
BEGIN
IF @FilterColumn = 'PrimaryEmailAddress' AND @AccountTypes <> '2'
- BEGIN
+ BEGIN
SET @condition = @condition + ' AND EA.AccountID IN (SELECT EAEA.AccountID FROM ExchangeAccountEmailAddresses EAEA WHERE EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
END
ELSE
- BEGIN
+ BEGIN
SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
END
END
if @Archiving = 1
BEGIN
- SET @condition = @condition + ' AND (EA.ArchivingMailboxPlanId > 0) '
+ SET @condition = @condition + ' AND (EA.ArchivingMailboxPlanId > 0) '
END
IF @SortColumn IS NULL OR @SortColumn = ''
@@ -5159,9 +5176,9 @@ CREATE PROCEDURE [dbo].[UpdateExchangeAccountSLSettings]
)
AS
-BEGIN TRAN
+BEGIN TRAN
- IF (@LevelID = -1)
+ IF (@LevelID = -1)
BEGIN
SET @LevelID = NULL
END
@@ -5178,7 +5195,7 @@ BEGIN TRAN
RETURN -1
END
COMMIT TRAN
-RETURN
+RETURN
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'CheckServiceLevelUsage')
@@ -5194,12 +5211,12 @@ SELECT COUNT(EA.AccountID)
FROM SupportServiceLevels AS SL
INNER JOIN ExchangeAccounts AS EA ON SL.LevelID = EA.LevelID
WHERE EA.LevelID = @LevelID
-RETURN
+RETURN
GO
--- Service Level Quotas, change type
+-- Service Level Quotas, change type
UPDATE Quotas
-SET QuotaTypeID = 2
+SET QuotaTypeID = 2
WHERE QuotaName like 'ServiceLevel.%'
GO
@@ -5278,13 +5295,13 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 320 -- OCS Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
@@ -5298,12 +5315,12 @@ AS
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
- WHERE pt.ParentPackageID = @PackageID
+ WHERE pt.ParentPackageID = @PackageID
AND ea.AccountType IN (1)
AND ea.MailboxPlanId IS NOT NULL)
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
- SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
- INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
+ SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
+ INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
@@ -5370,14 +5387,14 @@ GO
-- IIS80 Provider update for SNI and CCS support
-- Add default serviceproperties for all existing IIS80 Services (if any). These properties are used as markers in the IIS70 Controls in WebPortal to know the version of the IIS Provider
-declare c cursor read_only for
+declare c cursor read_only for
select ServiceID from Services where ProviderID in(select ProviderID from Providers where ProviderName='IIS80')
declare @ServiceID int
open c
-fetch next from c
+fetch next from c
into @ServiceID
while @@FETCH_STATUS = 0
@@ -5398,7 +5415,7 @@ begin
insert into ServiceProperties(ServiceID, PropertyName, PropertyValue)
values(@ServiceID, 'sslusesni', 'False')
- fetch next from c
+ fetch next from c
into @ServiceID
end
@@ -5417,8 +5434,8 @@ IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'RDSCollectionUsers')
CREATE TABLE RDSCollectionUsers
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
- RDSCollectionId INT NOT NULL,
- AccountID INT NOT NULL
+ RDSCollectionId INT NOT NULL,
+ AccountID INT NOT NULL
)
GO
@@ -5479,7 +5496,7 @@ CREATE TABLE [dbo].[RDSCollectionSettings](
[ClientPrinterAsDefault] [bit] NULL,
[RDEasyPrintDriverEnabled] [bit] NULL,
[MaxRedirectedMonitors] [int] NULL,
- CONSTRAINT [PK_RDSCollectionSettings] PRIMARY KEY CLUSTERED
+ CONSTRAINT [PK_RDSCollectionSettings] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
@@ -5487,21 +5504,21 @@ CREATE TABLE [dbo].[RDSCollectionSettings](
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'SecurityLayer' AND [object_id] = OBJECT_ID(N'RDSCollectionSettings'))
BEGIN
ALTER TABLE [dbo].[RDSCollectionSettings] ADD SecurityLayer NVARCHAR(20) null;
END
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'EncryptionLevel' AND [object_id] = OBJECT_ID(N'RDSCollectionSettings'))
BEGIN
ALTER TABLE [dbo].[RDSCollectionSettings] ADD EncryptionLevel NVARCHAR(20) null;
END
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'AuthenticateUsingNLA' AND [object_id] = OBJECT_ID(N'RDSCollectionSettings'))
BEGIN
ALTER TABLE [dbo].[RDSCollectionSettings] ADD AuthenticateUsingNLA BIT null;
@@ -5519,7 +5536,7 @@ CREATE TABLE [dbo].[RDSCertificates](
[FileName] [nvarchar](255) NOT NULL,
[ValidFrom] [datetime] NULL,
[ExpiryDate] [datetime] NULL
- CONSTRAINT [PK_RDSCertificates] PRIMARY KEY CLUSTERED
+ CONSTRAINT [PK_RDSCertificates] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
@@ -5540,7 +5557,7 @@ IF EXISTS (SELECT * FROM sys.objects WHERE type = 'F' AND name = 'FK_RDSCollect
BEGIN
ALTER TABLE [dbo].[RDSCollectionUsers]
DROP CONSTRAINT [FK_RDSCollectionUsers_UserId]
-END
+END
ELSE
PRINT 'FK_RDSCollectionUsers_UserId not EXISTS'
GO
@@ -5550,9 +5567,9 @@ IF EXISTS (SELECT * FROM sys.objects WHERE type = 'F' AND name = 'FK_RDSServers
BEGIN
ALTER TABLE [dbo].[RDSServers]
DROP CONSTRAINT [FK_RDSServers_RDSCollectionId]
-END
+END
ELSE
- PRINT 'FK_RDSServers_RDSCollectionId not EXISTS'
+ PRINT 'FK_RDSServers_RDSCollectionId not EXISTS'
GO
ALTER TABLE [dbo].[RDSCollectionUsers] WITH CHECK ADD CONSTRAINT [FK_RDSCollectionUsers_RDSCollectionId] FOREIGN KEY([RDSCollectionId])
@@ -5602,7 +5619,7 @@ INSERT INTO RDSCertificates
Hash,
FileName,
ValidFrom,
- ExpiryDate
+ ExpiryDate
)
VALUES
(
@@ -5631,7 +5648,7 @@ AS
SELECT TOP 1
Id,
ServiceId,
- Content,
+ Content,
Hash,
FileName,
ValidFrom,
@@ -5757,10 +5774,10 @@ CREATE PROCEDURE [dbo].[GetRDSServersByItemId]
@ItemID INT
)
AS
-SELECT
+SELECT
RS.Id,
RS.ItemID,
- RS.Name,
+ RS.Name,
RS.FqdName,
RS.Description,
RS.RdsCollectionId,
@@ -5776,10 +5793,10 @@ DROP PROCEDURE GetRDSServers
GO
CREATE PROCEDURE [dbo].[GetRDSServers]
AS
-SELECT
+SELECT
RS.Id,
RS.ItemID,
- RS.Name,
+ RS.Name,
RS.FqdName,
RS.Description,
RS.RdsCollectionId,
@@ -5801,7 +5818,7 @@ AS
SELECT TOP 1
RS.Id,
RS.ItemID,
- RS.Name,
+ RS.Name,
RS.FqdName,
RS.Description,
RS.RdsCollectionId,
@@ -5819,10 +5836,10 @@ CREATE PROCEDURE [dbo].[GetRDSServersByCollectionId]
@RdsCollectionId INT
)
AS
-SELECT
+SELECT
RS.Id,
RS.ItemID,
- RS.Name,
+ RS.Name,
RS.FqdName,
RS.Description,
RS.RdsCollectionId,
@@ -5877,7 +5894,7 @@ INSERT INTO @RDSCollections (RDSCollectionId)
SELECT
S.ID
FROM RDSCollections AS S
-WHERE
+WHERE
((@ItemID is Null AND S.ItemID is null)
or (@ItemID is not Null AND S.ItemID = @ItemID))'
@@ -5922,10 +5939,10 @@ CREATE PROCEDURE [dbo].[GetRDSCollectionsByItemId]
@ItemID INT
)
AS
-SELECT
+SELECT
Id,
ItemId,
- Name,
+ Name,
Description,
DisplayName
FROM RDSCollections
@@ -5944,7 +5961,7 @@ AS
SELECT TOP 1
Id,
- Name,
+ Name,
ItemId,
Description,
DisplayName
@@ -5965,9 +5982,9 @@ AS
SELECT TOP 1
Id,
ItemId,
- Name,
+ Name,
Description,
- DisplayName
+ DisplayName
FROM RDSCollections
WHERE ID = @ID
GO
@@ -6058,7 +6075,7 @@ CREATE PROCEDURE [dbo].[GetRDSCollectionUsersByRDSCollectionId]
@ID INT
)
AS
-SELECT
+SELECT
[AccountID],
[ItemID],
[AccountType],
@@ -6095,7 +6112,7 @@ AS
INSERT INTO RDSCollectionUsers
(
- RDSCollectionId,
+ RDSCollectionId,
AccountID
)
VALUES
@@ -6183,7 +6200,7 @@ AS
SELECT TOP 1
Id,
RDSCollectionId,
- DisconnectedSessionLimitMin,
+ DisconnectedSessionLimitMin,
ActiveSessionLimitMin,
IdleSessionLimitMin,
BrokenConnectionAction,
@@ -6207,7 +6224,7 @@ CREATE PROCEDURE [dbo].[AddRDSCollectionSettings]
(
@RDSCollectionSettingsID INT OUTPUT,
@RDSCollectionId INT,
- @DisconnectedSessionLimitMin INT,
+ @DisconnectedSessionLimitMin INT,
@ActiveSessionLimitMin INT,
@IdleSessionLimitMin INT,
@BrokenConnectionAction NVARCHAR(20),
@@ -6225,7 +6242,7 @@ AS
INSERT INTO RDSCollectionSettings
(
RDSCollectionId,
- DisconnectedSessionLimitMin,
+ DisconnectedSessionLimitMin,
ActiveSessionLimitMin,
IdleSessionLimitMin,
BrokenConnectionAction,
@@ -6241,7 +6258,7 @@ INSERT INTO RDSCollectionSettings
VALUES
(
@RDSCollectionId,
- @DisconnectedSessionLimitMin,
+ @DisconnectedSessionLimitMin,
@ActiveSessionLimitMin,
@IdleSessionLimitMin,
@BrokenConnectionAction,
@@ -6268,7 +6285,7 @@ CREATE PROCEDURE [dbo].[UpdateRDSCollectionSettings]
(
@ID INT,
@RDSCollectionId INT,
- @DisconnectedSessionLimitMin INT,
+ @DisconnectedSessionLimitMin INT,
@ActiveSessionLimitMin INT,
@IdleSessionLimitMin INT,
@BrokenConnectionAction NVARCHAR(20),
@@ -6329,24 +6346,24 @@ GO
-- Exchange2013 Shared and resource mailboxes
-- Exchange2013 Shared and resource mailboxes Quotas
-
+
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Exchange2013.SharedMailboxes')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
VALUES (429, 12, 30, N'Exchange2013.SharedMailboxes', N'Shared Mailboxes per Organization', 2, 0, NULL, NULL)
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[Quotas] WHERE [QuotaName] = 'Exchange2013.ResourceMailboxes')
BEGIN
-INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
+INSERT [dbo].[Quotas] ([QuotaID], [GroupID], [QuotaOrder], [QuotaName], [QuotaDescription], [QuotaTypeID], [ServiceQuota], [ItemTypeID], [HideQuota])
VALUES (428, 12, 31, N'Exchange2013.ResourceMailboxes', N'Resource Mailboxes per Organization', 2, 0, NULL, NULL)
END
GO
-- Exchange2013 Shared and resource mailboxes Organization statistics
-ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
+ALTER PROCEDURE [dbo].[GetExchangeOrganizationStatistics]
(
@ItemID int
)
@@ -6442,8 +6459,19 @@ WHERE (D.IsInstantAlias = 0 AND D.IsDomainPointer = 0) AND
AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
'
-IF @FilterColumn <> '' AND @FilterValue <> ''
-SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
+IF @FilterValue <> ''
+BEGIN
+ IF @FilterColumn <> ''
+ BEGIN
+ SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
+ END
+ ELSE
+ SET @sql = @sql + '
+ AND (DomainName LIKE @FilterValue
+ OR Username LIKE @FilterValue
+ OR ServerName LIKE @FilterValue
+ OR PackageName LIKE @FilterValue) '
+END
IF @SortColumn <> '' AND @SortColumn IS NOT NULL
SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
@@ -6463,16 +6491,16 @@ SET @sql = @sql + ' SELECT COUNT(DomainID) FROM @Domains;SELECT
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,
@@ -6613,21 +6641,21 @@ REFERENCES [dbo].[Domains] ([DomainID])
ON DELETE CASCADE
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'CreationDate' AND [object_id] = OBJECT_ID(N'Domains'))
BEGIN
ALTER TABLE [dbo].[Domains] ADD CreationDate DateTime null;
END
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'ExpirationDate' AND [object_id] = OBJECT_ID(N'Domains'))
BEGIN
ALTER TABLE [dbo].[Domains] ADD ExpirationDate DateTime null;
END
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'LastUpdateDate' AND [object_id] = OBJECT_ID(N'Domains'))
BEGIN
ALTER TABLE [dbo].[Domains] ADD LastUpdateDate DateTime null;
@@ -6660,7 +6688,7 @@ Set @DomainExpirationLetterHtmlBody = N'
.Summary A { color: ##0153A4; }
.Summary { font-family: Tahoma; font-size: 9pt; }
.Summary H1 { font-size: 1.7em; color: ##1F4978; border-bottom: dotted 3px ##efefef; }
- .Summary H2 { font-size: 1.3em; color: ##1F4978; }
- .Summary H3 { font-size: 1em; color: ##1F4978; }
+ .Summary H2 { font-size: 1.3em; color: ##1F4978; }
+ .Summary H3 { font-size: 1em; color: ##1F4978; }
.Summary TABLE { border: solid 1px ##e5e5e5; }
.Summary TH,
.Summary TD.Label { padding: 5px; font-size: 8pt; font-weight: bold; background-color: ##f5f5f5; }
@@ -6881,7 +6909,7 @@ Please, find below details of MX and NS changes.
-
+
@@ -6968,7 +6996,7 @@ INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [Property
.Summary A { color: ##0153A4; }
.Summary { font-family: Tahoma; font-size: 9pt; }
.Summary H1 { font-size: 1.7em; color: ##1F4978; border-bottom: dotted 3px ##efefef; }
- .Summary H2 { font-size: 1.3em; color: ##1F4978; }
+ .Summary H2 { font-size: 1.3em; color: ##1F4978; }
.Summary TABLE { border: solid 1px ##e5e5e5; }
.Summary TH,
.Summary TD.Label { padding: 5px; font-size: 8pt; font-weight: bold; background-color: ##f5f5f5; }
@@ -7050,7 +7078,7 @@ DROP PROCEDURE GetScheduleTaskEmailTemplate
GO
CREATE PROCEDURE [dbo].GetScheduleTaskEmailTemplate
(
- @TaskID [nvarchar](100)
+ @TaskID [nvarchar](100)
)
AS
SELECT
@@ -7058,7 +7086,7 @@ SELECT
[From] ,
[Subject] ,
[Template]
- FROM [dbo].[ScheduleTasksEmailTemplates] where [TaskID] = @TaskID
+ FROM [dbo].[ScheduleTasksEmailTemplates] where [TaskID] = @TaskID
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetDomainDnsRecords')
@@ -7097,7 +7125,7 @@ SELECT
Value,
Date
FROM [dbo].[DomainDnsRecords]
- WHERE [DomainId] = @DomainId
+ WHERE [DomainId] = @DomainId
GO
@@ -7194,7 +7222,7 @@ CREATE PROCEDURE [dbo].UpdateDomainDates
@DomainId INT,
@DomainCreationDate DateTime,
@DomainExpirationDate DateTime,
- @DomainLastUpdateDate DateTime
+ @DomainLastUpdateDate DateTime
)
AS
UPDATE [dbo].[Domains] SET [CreationDate] = @DomainCreationDate, [ExpirationDate] = @DomainExpirationDate, [LastUpdateDate] = @DomainLastUpdateDate WHERE [DomainID] = @DomainId
@@ -7340,7 +7368,7 @@ 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',
+exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @FilterValue nvarchar(50), @ServerID int, @Recursive bit',
@StartRow, @MaximumRows, @PackageID, @FilterValue, @ServerID, @Recursive
@@ -7381,7 +7409,7 @@ INSERT INTO @RDSServer (RDSServerId)
SELECT
S.ID
FROM RDSServers AS S
-WHERE
+WHERE
((((@ItemID is Null AND S.ItemID is null) or @IgnoreItemId = 1)
or (@ItemID is not Null AND S.ItemID = @ItemID))
and
@@ -7398,7 +7426,7 @@ SET @sql = @sql + ' SELECT COUNT(RDSServerId) FROM @RDSServer;
SELECT
ST.ID,
ST.ItemID,
- ST.Name,
+ ST.Name,
ST.FqdName,
ST.Description,
ST.RdsCollectionId,
@@ -7410,7 +7438,7 @@ LEFT OUTER JOIN ServiceItems AS SI ON SI.ItemId = ST.ItemId
WHERE S.ItemPosition BETWEEN @StartRow AND @EndRow'
exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @FilterValue nvarchar(50), @ItemID int, @RdsCollectionId int, @IgnoreItemId bit, @IgnoreRdsCollectionId bit',
-@StartRow, @MaximumRows, @FilterValue, @ItemID, @RdsCollectionId, @IgnoreItemId , @IgnoreRdsCollectionId
+@StartRow, @MaximumRows, @FilterValue, @ItemID, @RdsCollectionId, @IgnoreItemId , @IgnoreRdsCollectionId
RETURN
@@ -7452,7 +7480,7 @@ GO
-- fix check domain used by HostedOrganization
-ALTER PROCEDURE [dbo].[CheckDomainUsedByHostedOrganization]
+ALTER PROCEDURE [dbo].[CheckDomainUsedByHostedOrganization]
@DomainName nvarchar(100),
@Result int OUTPUT
AS
@@ -7471,7 +7499,7 @@ AS
BEGIN
SET @Result = 1
END
-
+
RETURN @Result
GO
@@ -7507,34 +7535,34 @@ SELECT
eam.AccountID as OwnerID
FROM
ExchangeAccountEmailAddresses as eam
-INNER JOIN
+INNER JOIN
ExchangeAccounts ea
-ON
+ON
ea.AccountID = eam.AccountID
WHERE
(ea.PrimaryEmailAddress != eam.EmailAddress)
AND (ea.UserPrincipalName != eam.EmailAddress)
AND (eam.EmailAddress LIKE '%@'+ @DomainName)
UNION
-SELECT
+SELECT
'LyncUsers' as ObjectName,
ea.AccountID as ObjectID,
ea.AccountType as ObjectType,
ea.DisplayName as DisplayName,
0 as OwnerID
-FROM
- ExchangeAccounts ea
-INNER JOIN
+FROM
+ ExchangeAccounts ea
+INNER JOIN
LyncUsers ou
-ON
+ON
ea.AccountID = ou.AccountID
-WHERE
+WHERE
ou.SipAddress LIKE '%@'+ @DomainName
-ORDER BY
+ORDER BY
DisplayName
RETURN
GO
-IF NOT EXISTS(SELECT * FROM sys.columns
+IF NOT EXISTS(SELECT * FROM sys.columns
WHERE [name] = N'RegistrarName' AND [object_id] = OBJECT_ID(N'Domains'))
BEGIN
ALTER TABLE [dbo].[Domains] ADD RegistrarName nvarchar(max);
@@ -7607,8 +7635,19 @@ WHERE (D.IsInstantAlias = 0 AND D.IsDomainPointer = 0) AND
AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
'
-IF @FilterColumn <> '' AND @FilterValue <> ''
-SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
+IF @FilterValue <> ''
+BEGIN
+ IF @FilterColumn <> ''
+ BEGIN
+ SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
+ END
+ ELSE
+ SET @sql = @sql + '
+ AND (DomainName LIKE @FilterValue
+ OR Username LIKE @FilterValue
+ OR ServerName LIKE @FilterValue
+ OR PackageName LIKE @FilterValue) '
+END
IF @SortColumn <> '' AND @SortColumn IS NOT NULL
SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
@@ -7653,7 +7692,7 @@ 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',
+exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @FilterValue nvarchar(50), @ServerID int, @Recursive bit',
@StartRow, @MaximumRows, @PackageID, @FilterValue, @ServerID, @Recursive
@@ -7735,18 +7774,18 @@ SELECT
P.StatusID,
P.PlanID,
P.PurchaseDate,
-
+
dbo.GetItemComments(P.PackageID, 'PACKAGE', @ActorID) AS Comments,
-
+
-- server
ISNULL(P.ServerID, 0) AS ServerID,
ISNULL(S.ServerName, 'None') AS ServerName,
ISNULL(S.Comments, '') AS ServerComments,
ISNULL(S.VirtualServer, 1) AS VirtualServer,
-
+
-- hosting plan
HP.PlanName,
-
+
-- user
P.UserID,
U.Username,
@@ -7781,17 +7820,17 @@ SELECT
P.PackageName,
P.StatusID,
P.PurchaseDate,
-
+
-- server
ISNULL(P.ServerID, 0) AS ServerID,
ISNULL(S.ServerName, 'None') AS ServerName,
ISNULL(S.Comments, '') AS ServerComments,
ISNULL(S.VirtualServer, 1) AS VirtualServer,
-
+
-- hosting plan
P.PlanID,
HP.PlanName,
-
+
-- user
P.UserID,
U.Username,
@@ -7806,7 +7845,7 @@ INNER JOIN Users AS U ON P.UserID = U.UserID
INNER JOIN Servers AS S ON P.ServerID = S.ServerID
INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID
WHERE
- P.UserID = @UserID
+ P.UserID = @UserID
RETURN
GO
@@ -7991,7 +8030,7 @@ CREATE PROCEDURE [dbo].[GetWebDavAccessTokenById]
@Id int
)
AS
-SELECT
+SELECT
ID ,
FilePath ,
AuthData ,
@@ -7999,7 +8038,7 @@ SELECT
ExpirationDate,
AccountID,
ItemId
- FROM WebDavAccessTokens
+ FROM WebDavAccessTokens
Where ID = @Id AND ExpirationDate > getdate()
GO
@@ -8012,7 +8051,7 @@ CREATE PROCEDURE [dbo].[GetWebDavAccessTokenByAccessToken]
@AccessToken UNIQUEIDENTIFIER
)
AS
-SELECT
+SELECT
ID ,
FilePath ,
AuthData ,
@@ -8020,7 +8059,7 @@ SELECT
ExpirationDate,
AccountID,
ItemId
- FROM WebDavAccessTokens
+ FROM WebDavAccessTokens
Where AccessToken = @AccessToken AND ExpirationDate > getdate()
GO
@@ -8037,7 +8076,7 @@ END
GO
IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'ExchangeDeletedAccounts')
-CREATE TABLE ExchangeDeletedAccounts
+CREATE TABLE ExchangeDeletedAccounts
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
AccountID INT NOT NULL,
@@ -8106,7 +8145,7 @@ IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddOrganizatio
DROP PROCEDURE [dbo].[AddOrganizationDeletedUser]
GO
-CREATE PROCEDURE [dbo].[AddOrganizationDeletedUser]
+CREATE PROCEDURE [dbo].[AddOrganizationDeletedUser]
(
@ID int OUTPUT,
@AccountID int,
@@ -8205,7 +8244,7 @@ AS
DECLARE @Result2 int
SET @Result2 = (SELECT SUM(CAST(SIP.PropertyValue AS int)) FROM ServiceItemProperties AS SIP
INNER JOIN ServiceItems AS SI ON SIP.ItemID = SI.ItemID
- INNER JOIN ServiceItemProperties AS SIP2 ON
+ INNER JOIN ServiceItemProperties AS SIP2 ON
SIP2.ItemID = SI.ItemID AND SIP2.PropertyName = 'DynamicMemory.Enabled' AND SIP2.PropertyValue = 'True'
INNER JOIN PackagesTreeCache AS PT ON SI.PackageID = PT.PackageID
WHERE SIP.PropertyName = 'DynamicMemory.Maximum' AND PT.ParentPackageID = @PackageID)
@@ -8242,13 +8281,13 @@ AS
INNER JOIN PackagesTreeCache AS PT ON PIP.PackageID = PT.PackageID
WHERE PT.ParentPackageID = @PackageID AND IP.PoolID = 3)
ELSE IF @QuotaID = 319 -- BB Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN BlackBerryUsers bu ON ea.AccountID = bu.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 320 -- OCS Users
- SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
+ SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts ea
INNER JOIN OCSUsers ocs ON ea.AccountID = ocs.AccountID
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
@@ -8262,12 +8301,12 @@ AS
SET @Result = (SELECT COUNT(ea.AccountID) FROM ExchangeAccounts AS ea
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
- WHERE pt.ParentPackageID = @PackageID
+ WHERE pt.ParentPackageID = @PackageID
AND ea.AccountType IN (1)
AND ea.MailboxPlanId IS NOT NULL)
ELSE IF @QuotaID = 77 -- Exchange2007.DiskSpace
- SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
- INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
+ SET @Result = (SELECT SUM(B.MailboxSizeMB) FROM ExchangeAccounts AS ea
+ INNER JOIN ExchangeMailboxPlans AS B ON ea.MailboxPlanId = B.MailboxPlanId
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE pt.ParentPackageID = @PackageID)
@@ -8316,7 +8355,7 @@ AS
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE PT.ParentPackageID = @PackageID)
ELSE IF @QuotaID = 451
- SET @Result = (SELECT COUNT(RS.[ID]) FROM [dbo].[RDSServers] RS
+ SET @Result = (SELECT COUNT(RS.[ID]) FROM [dbo].[RDSServers] RS
INNER JOIN ServiceItems si ON RS.ItemID = si.ItemID
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
WHERE PT.ParentPackageID = @PackageID)
@@ -8357,7 +8396,7 @@ BEGIN
END
GO
-ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[AddExchangeMailboxPlan]
(
@MailboxPlanId int OUTPUT,
@ItemID int,
@@ -8471,7 +8510,7 @@ SET @MailboxPlanId = SCOPE_IDENTITY()
RETURN
GO
-ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[UpdateExchangeMailboxPlan]
(
@MailboxPlanId int,
@MailboxPlan nvarchar(300),
@@ -8524,7 +8563,7 @@ UPDATE ExchangeMailboxPlans SET
MailboxPlanType = @MailboxPlanType,
AllowLitigationHold = @AllowLitigationHold,
RecoverableItemsWarningPct = @RecoverableItemsWarningPct,
- RecoverableItemsSpace = @RecoverableItemsSpace,
+ RecoverableItemsSpace = @RecoverableItemsSpace,
LitigationHoldUrl = @LitigationHoldUrl,
LitigationHoldMsg = @LitigationHoldMsg,
Archiving = @Archiving,
@@ -8537,7 +8576,7 @@ WHERE MailboxPlanId = @MailboxPlanId
RETURN
GO
-ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
+ALTER PROCEDURE [dbo].[GetExchangeMailboxPlan]
(
@MailboxPlanId int
)
@@ -8613,7 +8652,7 @@ SELECT
FROM
ExchangeMailboxPlans
WHERE
- ItemID = @ItemID
+ ItemID = @ItemID
AND ((Archiving=@Archiving) OR ((@Archiving=0) AND (Archiving IS NULL)))
ORDER BY MailboxPlan
RETURN
@@ -8672,7 +8711,7 @@ SELECT
@ItemID,
PropertyName,
PropertyValue
-FROM OPENXML(@idoc, '/properties/property',1) WITH
+FROM OPENXML(@idoc, '/properties/property',1) WITH
(
PropertyName nvarchar(50) '@name',
PropertyValue nvarchar(3000) '@value'
@@ -8685,9 +8724,9 @@ INSERT INTO ServiceItemProperties
PropertyName,
PropertyValue
)
-SELECT
- ItemID,
- PropertyName,
+SELECT
+ ItemID,
+ PropertyName,
PropertyValue
FROM #TempTable
@@ -8698,7 +8737,7 @@ exec sp_xml_removedocument @idoc
COMMIT TRAN
-RETURN
+RETURN
GO
@@ -8706,7 +8745,7 @@ GO
IF OBJECTPROPERTY(object_id('dbo.GetExchangeAccountByAccountNameWithoutItemId'), N'IsProcedure') = 1
DROP PROCEDURE [dbo].[GetExchangeAccountByAccountNameWithoutItemId]
GO
-CREATE PROCEDURE [dbo].[GetExchangeAccountByAccountNameWithoutItemId]
+CREATE PROCEDURE [dbo].[GetExchangeAccountByAccountNameWithoutItemId]
(
@UserPrincipalName nvarchar(300)
)
@@ -8725,12 +8764,12 @@ SELECT
P.MailboxPlan,
E.SubscriberNumber,
E.UserPrincipalName,
- E.ArchivingMailboxPlanId,
+ E.ArchivingMailboxPlanId,
AP.MailboxPlan as 'ArchivingMailboxPlan',
E.EnableArchiving
FROM
ExchangeAccounts AS E
-LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
+LEFT OUTER JOIN ExchangeMailboxPlans AS P ON E.MailboxPlanId = P.MailboxPlanId
LEFT OUTER JOIN ExchangeMailboxPlans AS AP ON E.ArchivingMailboxPlanId = AP.MailboxPlanId
WHERE
E.UserPrincipalName = @UserPrincipalName
@@ -8855,11 +8894,11 @@ FROM ServiceItems AS SI
INNER JOIN ServiceItemTypes AS SIT ON SI.ItemTypeID = SIT.ItemTypeID
INNER JOIN ResourceGroups AS RG ON SIT.GroupID = RG.GroupID
INNER JOIN Services AS S ON SI.ServiceID = S.ServiceID
-WHERE S.ServiceID = @ServiceId
+WHERE S.ServiceID = @ServiceId
AND SIT.TypeName = @ItemTypeName
AND SI.ItemName = @ItemName
AND ((@GroupName IS NULL) OR (@GroupName IS NOT NULL AND RG.GroupName = @GroupName))
-RETURN
+RETURN
GO
-- Hyper-V 2012 R2 Provider
@@ -8928,10 +8967,10 @@ UPDATE [dbo].[Providers] SET [EditorControl] = N'HyperV2012R2', [GroupID] = 33 W
END
GO
-IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetVirtualMachinesPaged2012')
-DROP PROCEDURE GetVirtualMachinesPaged2012
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetVirtualMachinesPagedForPC')
+DROP PROCEDURE GetVirtualMachinesPagedForPC
GO
-CREATE PROCEDURE [dbo].[GetVirtualMachinesPaged2012]
+CREATE PROCEDURE [dbo].[GetVirtualMachinesPagedForPC]
(
@ActorID int,
@PackageID int,
@@ -8943,21 +8982,34 @@ CREATE PROCEDURE [dbo].[GetVirtualMachinesPaged2012]
@Recursive bit
)
AS
+
+
-- check rights
IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
-RAISERROR('You are not allowed to access this package', 16, 1)
+BEGIN
+ RAISERROR('You are not allowed to access this package', 16, 1)
+ RETURN
+END
-- start
DECLARE @condition nvarchar(700)
SET @condition = '
-SI.ItemTypeID = 41 -- VPS2012
+SI.ItemTypeID = 35 -- VPS
AND ((@Recursive = 0 AND P.PackageID = @PackageID)
OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, P.PackageID) = 1))
'
-IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
-AND @FilterValue <> '' AND @FilterValue IS NOT NULL
-SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ItemName LIKE ''' + @FilterValue + '''
+ OR Username LIKE ''' + @FilterValue + '''
+ OR ExternalIP LIKE ''' + @FilterValue + '''
+ OR IPAddress LIKE ''' + @FilterValue + ''')'
+END
IF @SortColumn IS NULL OR @SortColumn = ''
SET @SortColumn = 'SI.ItemName ASC'
@@ -9030,6 +9082,227 @@ exec sp_executesql @sql, N'@PackageID int, @StartRow int, @MaximumRows int, @Rec
RETURN
GO
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetVirtualMachinesPaged2012')
+DROP PROCEDURE GetVirtualMachinesPaged2012
+GO
+CREATE PROCEDURE [dbo].[GetVirtualMachinesPaged2012]
+(
+ @ActorID int,
+ @PackageID int,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int,
+ @Recursive bit
+)
+AS
+-- check rights
+IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
+RAISERROR('You are not allowed to access this package', 16, 1)
+
+-- start
+DECLARE @condition nvarchar(700)
+SET @condition = '
+SI.ItemTypeID = 41 -- VPS2012
+AND ((@Recursive = 0 AND P.PackageID = @PackageID)
+OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, P.PackageID) = 1))
+'
+
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ItemName LIKE ''' + @FilterValue + '''
+ OR Username LIKE ''' + @FilterValue + '''
+ OR ExternalIP LIKE ''' + @FilterValue + '''
+ OR IPAddress LIKE ''' + @FilterValue + ''')'
+END
+
+IF @SortColumn IS NULL OR @SortColumn = ''
+SET @SortColumn = 'SI.ItemName ASC'
+
+DECLARE @sql nvarchar(3500)
+
+set @sql = '
+SELECT COUNT(SI.ItemID) FROM Packages AS P
+INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+INNER JOIN Users AS U ON P.UserID = U.UserID
+LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+) AS EIP ON SI.ItemID = EIP.ItemID
+LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+WHERE ' + @condition + '
+
+DECLARE @Items AS TABLE
+(
+ ItemID int
+);
+
+WITH TempItems AS (
+ SELECT ROW_NUMBER() OVER (ORDER BY ' + @SortColumn + ') as Row,
+ SI.ItemID
+ FROM Packages AS P
+ INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+ INNER JOIN Users AS U ON P.UserID = U.UserID
+ LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+ ) AS EIP ON SI.ItemID = EIP.ItemID
+ LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+ WHERE ' + @condition + '
+)
+
+INSERT INTO @Items
+SELECT ItemID FROM TempItems
+WHERE TempItems.Row BETWEEN @StartRow + 1 and @StartRow + @MaximumRows
+
+SELECT
+ SI.ItemID,
+ SI.ItemName,
+ SI.PackageID,
+ P.PackageName,
+ P.UserID,
+ U.Username,
+
+ EIP.ExternalIP,
+ PIP.IPAddress
+FROM @Items AS TSI
+INNER JOIN ServiceItems AS SI ON TSI.ItemID = SI.ItemID
+INNER JOIN Packages AS P ON SI.PackageID = P.PackageID
+INNER JOIN Users AS U ON P.UserID = U.UserID
+LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+) AS EIP ON SI.ItemID = EIP.ItemID
+LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+'
+
+--print @sql
+
+exec sp_executesql @sql, N'@PackageID int, @StartRow int, @MaximumRows int, @Recursive bit',
+@PackageID, @StartRow, @MaximumRows, @Recursive
+
+RETURN
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetVirtualMachinesPaged')
+DROP PROCEDURE GetVirtualMachinesPaged
+GO
+CREATE PROCEDURE [dbo].[GetVirtualMachinesPaged]
+(
+ @ActorID int,
+ @PackageID int,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int,
+ @Recursive bit
+)
+AS
+
+
+-- check rights
+IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
+RAISERROR('You are not allowed to access this package', 16, 1)
+
+-- start
+DECLARE @condition nvarchar(700)
+SET @condition = '
+SI.ItemTypeID = 33 -- VPS
+AND ((@Recursive = 0 AND P.PackageID = @PackageID)
+OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, P.PackageID) = 1))
+'
+
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ItemName LIKE ''' + @FilterValue + '''
+ OR Username LIKE ''' + @FilterValue + '''
+ OR ExternalIP LIKE ''' + @FilterValue + '''
+ OR IPAddress LIKE ''' + @FilterValue + ''')'
+END
+
+IF @SortColumn IS NULL OR @SortColumn = ''
+SET @SortColumn = 'SI.ItemName ASC'
+
+DECLARE @sql nvarchar(3500)
+
+set @sql = '
+SELECT COUNT(SI.ItemID) FROM Packages AS P
+INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+INNER JOIN Users AS U ON P.UserID = U.UserID
+LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+) AS EIP ON SI.ItemID = EIP.ItemID
+LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+WHERE ' + @condition + '
+
+DECLARE @Items AS TABLE
+(
+ ItemID int
+);
+
+WITH TempItems AS (
+ SELECT ROW_NUMBER() OVER (ORDER BY ' + @SortColumn + ') as Row,
+ SI.ItemID
+ FROM Packages AS P
+ INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+ INNER JOIN Users AS U ON P.UserID = U.UserID
+ LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+ ) AS EIP ON SI.ItemID = EIP.ItemID
+ LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+ WHERE ' + @condition + '
+)
+
+INSERT INTO @Items
+SELECT ItemID FROM TempItems
+WHERE TempItems.Row BETWEEN @StartRow + 1 and @StartRow + @MaximumRows
+
+SELECT
+ SI.ItemID,
+ SI.ItemName,
+ SI.PackageID,
+ P.PackageName,
+ P.UserID,
+ U.Username,
+
+ EIP.ExternalIP,
+ PIP.IPAddress
+FROM @Items AS TSI
+INNER JOIN ServiceItems AS SI ON TSI.ItemID = SI.ItemID
+INNER JOIN Packages AS P ON SI.PackageID = P.PackageID
+INNER JOIN Users AS U ON P.UserID = U.UserID
+LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+) AS EIP ON SI.ItemID = EIP.ItemID
+LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+'
+
+--print @sql
+
+exec sp_executesql @sql, N'@PackageID int, @StartRow int, @MaximumRows int, @Recursive bit',
+@PackageID, @StartRow, @MaximumRows, @Recursive
+
+RETURN
+GO
--ES OWA Editing
IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'EnterpriseFoldersOwaPermissions')
@@ -9037,8 +9310,8 @@ CREATE TABLE EnterpriseFoldersOwaPermissions
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
ItemID INT NOT NULL,
- FolderID INT NOT NULL,
- AccountID INT NOT NULL
+ FolderID INT NOT NULL,
+ AccountID INT NOT NULL
)
GO
@@ -9088,21 +9361,21 @@ CREATE PROCEDURE [dbo].[AddEnterpriseFolderOwaUser]
(
@ESOwsaUserId INT OUTPUT,
@ItemID INT,
- @FolderID INT,
- @AccountID INT
+ @FolderID INT,
+ @AccountID INT
)
AS
INSERT INTO EnterpriseFoldersOwaPermissions
(
ItemID ,
- FolderID,
+ FolderID,
AccountID
)
VALUES
(
@ItemID,
- @FolderID,
- @AccountID
+ @FolderID,
+ @AccountID
)
SET @ESOwsaUserId = SCOPE_IDENTITY()
@@ -9121,7 +9394,7 @@ CREATE PROCEDURE [dbo].[GetEnterpriseFolderOwaUsers]
@FolderID INT
)
AS
-SELECT
+SELECT
EA.AccountID,
EA.ItemID,
EA.AccountType,
@@ -9131,7 +9404,7 @@ SELECT
EA.MailEnabledPublicFolder,
EA.MailboxPlanId,
EA.SubscriberNumber,
- EA.UserPrincipalName
+ EA.UserPrincipalName
FROM EnterpriseFoldersOwaPermissions AS EFOP
LEFT JOIN ExchangeAccounts AS EA ON EA.AccountID = EFOP.AccountID
WHERE EFOP.ItemID = @ItemID AND EFOP.FolderID = @FolderID
@@ -9167,7 +9440,7 @@ CREATE PROCEDURE [dbo].[GetUserEnterpriseFolderWithOwaEditPermission]
@AccountID INT
)
AS
-SELECT
+SELECT
EF.FolderName
FROM EnterpriseFoldersOwaPermissions AS EFOP
LEFT JOIN [dbo].[EnterpriseFolders] AS EF ON EF.EnterpriseFolderID = EFOP.FolderID
@@ -9179,7 +9452,7 @@ GO
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'Hosted MS CRM 2015')
BEGIN
-INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery])
+INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery])
VALUES(1205, 24, N'CRM', N'Hosted MS CRM 2015', N'WebsitePanel.Providers.HostedSolution.CRMProvider2015, WebsitePanel.Providers.HostedSolution.Crm2015', N'CRM2011', NULL)
END
GO
@@ -9208,7 +9481,7 @@ Set @RDSSetupLetterHtmlBody = N'
.Summary A { color: ##0153A4; }
.Summary { font-family: Tahoma; font-size: 9pt; }
.Summary H1 { font-size: 1.7em; color: ##1F4978; border-bottom: dotted 3px ##efefef; }
- .Summary H2 { font-size: 1.3em; color: ##1F4978; }
+ .Summary H2 { font-size: 1.3em; color: ##1F4978; }
.Summary TABLE { border: solid 1px ##e5e5e5; }
.Summary TH,
.Summary TD.Label { padding: 5px; font-size: 8pt; font-weight: bold; background-color: ##f5f5f5; }
@@ -9271,14 +9544,14 @@ UPDATE [dbo].[UserSettings] SET [PropertyValue] = @RDSSetupLetterTextBody WHERE
GO
IF NOT EXISTS (SELECT * FROM [dbo].[ResourceGroups] WHERE GroupName = 'Sharepoint Foundation Server')
-BEGIN
+BEGIN
DECLARE @group_order AS INT
DECLARE @group_controller AS NVARCHAR(1000)
DECLARE @group_id AS INT
DECLARE @provider_id AS INT
UPDATE [dbo].[ResourceGroups] SET GroupName = 'Sharepoint Foundation Server' WHERE GroupName = 'Hosted Sharepoint'
- SELECT @group_order = GroupOrder, @group_controller = GroupController FROM [dbo].[ResourceGroups] WHERE GroupName = 'Sharepoint Foundation Server'
+ SELECT @group_order = GroupOrder, @group_controller = GroupController FROM [dbo].[ResourceGroups] WHERE GroupName = 'Sharepoint Foundation Server'
SELECT TOP 1 @group_id = GroupId + 1 From [dbo].[ResourceGroups] ORDER BY GroupID DESC
SELECT TOP 1 @provider_id = ProviderId + 1 From [dbo].[Providers] ORDER BY ProviderID DESC
UPDATE [dbo].[ResourceGroups] SET GroupOrder = GroupOrder + 1 WHERE GroupOrder > @group_order
@@ -9311,22 +9584,22 @@ CREATE PROCEDURE [dbo].[GetLyncUsers]
@SortColumn nvarchar(40),
@SortDirection nvarchar(20),
@StartRow int,
- @Count int
+ @Count int
)
AS
-CREATE TABLE #TempLyncUsers
-(
+CREATE TABLE #TempLyncUsers
+(
[ID] [int] IDENTITY(1,1) NOT NULL,
- [AccountID] [int],
+ [AccountID] [int],
[ItemID] [int] NOT NULL,
[AccountName] [nvarchar](300) NOT NULL,
[DisplayName] [nvarchar](300) NOT NULL,
[UserPrincipalName] [nvarchar](300) NULL,
[SipAddress] [nvarchar](300) NULL,
[SamAccountName] [nvarchar](100) NULL,
- [LyncUserPlanId] [int] NOT NULL,
- [LyncUserPlanName] [nvarchar] (300) NOT NULL,
+ [LyncUserPlanId] [int] NOT NULL,
+ [LyncUserPlanName] [nvarchar] (300) NOT NULL,
)
DECLARE @condition nvarchar(700)
@@ -9355,9 +9628,9 @@ END
DECLARE @sql nvarchar(3500)
set @sql = '
- INSERT INTO
- #TempLyncUsers
- SELECT
+ INSERT INTO
+ #TempLyncUsers
+ SELECT
ea.AccountID,
ea.ItemID,
ea.AccountName,
@@ -9366,29 +9639,29 @@ set @sql = '
ou.SipAddress,
ea.SamAccountName,
ou.LyncUserPlanId,
- lp.LyncUserPlanName
- FROM
- ExchangeAccounts ea
- INNER JOIN
+ lp.LyncUserPlanName
+ FROM
+ ExchangeAccounts ea
+ INNER JOIN
LyncUsers ou
INNER JOIN
- LyncUserPlans lp
- ON
- ou.LyncUserPlanId = lp.LyncUserPlanId
+ LyncUserPlans lp
ON
+ ou.LyncUserPlanId = lp.LyncUserPlanId
+ ON
ea.AccountID = ou.AccountID
- WHERE
+ WHERE
ea.ItemID = @ItemID ' + @condition
exec sp_executesql @sql, N'@ItemID int',@ItemID
DECLARE @RetCount int
-SELECT @RetCount = COUNT(ID) FROM #TempLyncUsers
+SELECT @RetCount = COUNT(ID) FROM #TempLyncUsers
IF (@SortDirection = 'ASC')
BEGIN
- SELECT * FROM #TempLyncUsers
- WHERE ID > @StartRow AND ID <= (@StartRow + @Count)
+ SELECT * FROM #TempLyncUsers
+ WHERE ID > @StartRow AND ID <= (@StartRow + @Count)
END
ELSE
BEGIN
@@ -9396,32 +9669,32 @@ BEGIN
BEGIN
IF (@SortColumn = 'DisplayName')
BEGIN
- SELECT * FROM #TempLyncUsers
+ SELECT * FROM #TempLyncUsers
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY DisplayName DESC
END
IF (@SortColumn = 'UserPrincipalName')
BEGIN
- SELECT * FROM #TempLyncUsers
+ SELECT * FROM #TempLyncUsers
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC
END
IF (@SortColumn = 'SipAddress')
BEGIN
- SELECT * FROM #TempLyncUsers
+ SELECT * FROM #TempLyncUsers
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY SipAddress DESC
END
IF (@SortColumn = 'LyncUserPlanName')
BEGIN
- SELECT * FROM #TempLyncUsers
+ SELECT * FROM #TempLyncUsers
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY LyncUserPlanName DESC
END
END
ELSE
BEGIN
- SELECT * FROM #TempLyncUsers
+ SELECT * FROM #TempLyncUsers
WHERE ID >@RetCount - @Count - @StartRow AND ID <= @RetCount- @StartRow ORDER BY UserPrincipalName DESC
- END
+ END
END
DROP TABLE #TempLyncUsers
@@ -9488,10 +9761,10 @@ WHERE ' + @condition
print @sql
-exec sp_executesql @sql, N'@ItemID int, @IncludeMailboxes bit',
+exec sp_executesql @sql, N'@ItemID int, @IncludeMailboxes bit',
@ItemID, @IncludeMailboxes
-RETURN
+RETURN
GO
@@ -9506,7 +9779,7 @@ CREATE TABLE [dbo].[RDSServerSettings](
[PropertyValue] [ntext] COLLATE Latin1_General_CI_AS NULL,
[ApplyUsers] [BIT] NOT NULL,
[ApplyAdministrators] [BIT] NOT NULL
- CONSTRAINT [PK_RDSServerSettings] PRIMARY KEY CLUSTERED
+ CONSTRAINT [PK_RDSServerSettings] PRIMARY KEY CLUSTERED
(
[RdsServerId] ASC,
[SettingsName] ASC,
@@ -9528,7 +9801,7 @@ CREATE PROCEDURE GetRDSServerSettings
AS
SELECT RDSServerId, PropertyName, PropertyValue, ApplyUsers, ApplyAdministrators
FROM RDSServerSettings
- WHERE RDSServerId = @ServerId AND SettingsName = @SettingsName
+ WHERE RDSServerId = @ServerId AND SettingsName = @SettingsName
GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'DeleteRDSServerSettings')
@@ -9568,7 +9841,7 @@ INSERT INTO RDSServerSettings
ApplyUsers,
ApplyAdministrators,
PropertyName,
- PropertyValue
+ PropertyValue
)
SELECT
@ServerId,
@@ -9577,7 +9850,7 @@ SELECT
ApplyAdministrators,
PropertyName,
PropertyValue
-FROM OPENXML(@idoc, '/properties/property',1) WITH
+FROM OPENXML(@idoc, '/properties/property',1) WITH
(
PropertyName nvarchar(50) '@name',
PropertyValue ntext '@value',
@@ -9589,7 +9862,7 @@ exec sp_xml_removedocument @idoc
COMMIT TRAN
-RETURN
+RETURN
GO
@@ -9608,24 +9881,27 @@ BEGIN
DELETE FROM Providers WHERE GroupID = @group_id
DELETE FROM Quotas WHERE GroupID = @group_id
DELETE FROM VirtualGroups WHERE GroupID = @group_id
- DELETE FROM ServiceItemTypes WHERE GroupID = @group_id
+ DELETE FROM ServiceItemTypes WHERE GroupID = @group_id
DELETE FROM ResourceGroups WHERE GroupID = @group_id
END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[ServiceItemTypes] WHERE DisplayName = 'SharePointFoundationSiteCollection')
-BEGIN
+BEGIN
DECLARE @group_id AS INT
DECLARE @item_type_id INT
SELECT TOP 1 @item_type_id = ItemTypeId + 1 FROM [dbo].[ServiceItemTypes] ORDER BY ItemTypeId DESC
UPDATE [dbo].[ServiceItemTypes] SET DisplayName = 'SharePointFoundationSiteCollection' WHERE DisplayName = 'SharePointSiteCollection'
- SELECT @group_id = GroupId FROM [dbo].[ResourceGroups] WHERE GroupName = 'Sharepoint Server'
+ SELECT @group_id = GroupId FROM [dbo].[ResourceGroups] WHERE GroupName = 'Sharepoint Server'
- INSERT INTO [dbo].[ServiceItemTypes] (ItemTypeId, GroupId, DisplayName, TypeName, TypeOrder, CalculateDiskSpace, CalculateBandwidth, Suspendable, Disposable, Searchable, Importable, Backupable)
+ INSERT INTO [dbo].[ServiceItemTypes] (ItemTypeId, GroupId, DisplayName, TypeName, TypeOrder, CalculateDiskSpace, CalculateBandwidth, Suspendable, Disposable, Searchable, Importable, Backupable)
(SELECT TOP 1 @item_type_id, @group_id, 'SharePointSiteCollection', TypeName, 100, CalculateDiskSpace, CalculateBandwidth, Suspendable, Disposable, Searchable, Importable, Backupable FROM [dbo].[ServiceItemTypes] WHERE DisplayName = 'SharePointFoundationSiteCollection')
END
+
+
+
GO
UPDATE [dbo].[Quotas] SET GroupID = 45 WHERE QuotaName = 'EnterpriseStorage.DriveMaps'
@@ -9671,7 +9947,7 @@ END
GO
-
+
ALTER PROCEDURE [dbo].[AddServiceItem]
(
@ActorID int,
@@ -9710,9 +9986,9 @@ BEGIN
BEGIN
INSERT INTO ServiceItems (PackageID, ItemTypeID,ServiceID,ItemName,CreatedDate)
VALUES(1, @ItemTypeID, @ServiceID, 'System', @CreatedDate)
-
+
DECLARE @TempItemID int
-
+
SET @TempItemID = SCOPE_IDENTITY()
INSERT INTO ExchangeOrganizations (ItemID, OrganizationID)
VALUES(@TempItemID, 'System')
@@ -9720,7 +9996,7 @@ BEGIN
END
-
+
-- add item
INSERT INTO ServiceItems
(
@@ -9759,7 +10035,7 @@ SELECT
@ItemID,
PropertyName,
PropertyValue
-FROM OPENXML(@idoc, '/properties/property',1) WITH
+FROM OPENXML(@idoc, '/properties/property',1) WITH
(
PropertyName nvarchar(50) '@name',
PropertyValue nvarchar(3000) '@value'
@@ -9772,9 +10048,9 @@ INSERT INTO ServiceItemProperties
PropertyName,
PropertyValue
)
-SELECT
- ItemID,
- PropertyName,
+SELECT
+ ItemID,
+ PropertyName,
PropertyValue
FROM #TempTable
@@ -9784,7 +10060,7 @@ DROP TABLE #TempTable
exec sp_xml_removedocument @idoc
COMMIT TRAN
-RETURN
+RETURN
GO
UPDATE [dbo].[ServiceItemTypes] SET TypeName ='WebsitePanel.Providers.SharePoint.SharePointEnterpriseSiteCollection, WebsitePanel.Providers.Base' WHERE DisplayName = 'SharePointEnterpriseSiteCollection'
@@ -9830,7 +10106,7 @@ Set @UserPasswordExpirationLetterHtmlBody = N'
+
+ Password request notification
+
+
+
+
+
+
Password request notification
+
+
+
+Hello #user.FirstName#,
+
+
+
+
+Your account have been created. In order to create a password for your account, please follow next link:
+
+
+
#passwordResetLink#
+
+
+If you have any questions regarding your hosting account, feel free to contact our support department at any time.
+
+
+
+Best regards
+
+
+';
+
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'HtmlBody' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'HtmlBody', @OrganizationUserPasswordRequestLetterHtmlBody)
+END
+GO
+
+
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'Priority' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'Priority', N'Normal')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'Subject' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'Subject', N'Password request notification')
+END
+GO
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'LogoUrl' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'LogoUrl', N'')
+END
+GO
+
+
+DECLARE @OrganizationUserPasswordRequestLetterTextBody nvarchar(2500)
+
+Set @OrganizationUserPasswordRequestLetterTextBody = N'=========================================
+ Password request notification
+=========================================
+
+
+Hello #user.FirstName#,
+
+
+Your account have been created. In order to create a password for your account, please follow next link:
+
+#passwordResetLink#
+
+If you have any questions regarding your hosting account, feel free to contact our support department at any time.
+
+Best regards'
+
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'TextBody' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'TextBody', @OrganizationUserPasswordRequestLetterTextBody)
+END
+GO
+
+DECLARE @OrganizationUserPasswordRequestLetterSMSBody nvarchar(2500)
+
+Set @OrganizationUserPasswordRequestLetterSMSBody = N'
+User have been created. Password request url:
+#passwordResetLink#'
+
+IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'SMSBody' )
+BEGIN
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'SMSBody', @OrganizationUserPasswordRequestLetterSMSBody)
+END
+GO
+
+
+
-- Exchange setup EMAIL TEMPLATE
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'ExchangeMailboxSetupLetter' AND [PropertyName]= N'From' )
BEGIN
-INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'From', N'orders@virtuworks.com')
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'From', N'')
END
GO
@@ -10197,7 +10577,7 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'
- |
+![]() |
@@ -10231,11 +10611,11 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'
-Visit VirtuWorks.com |
-Account Management |
-Control Panel |
-Support |
-Contact Us |
+ |
+ |
+ |
+ |
+ |
@@ -10267,7 +10647,7 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'
@@ -10306,38 +10686,38 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'https://mail.virtuworks.net/owa
+
Outlook (Windows Clients)
- To configure Outlook 2013 to work with the VirtuWorks servers, please reference:
+ To configure Outlook 2013 to work with the servers, please reference:
- http://www.virtuworks.com/how-to-configure-my-outlook-2010-client-to-work-with-my-velum-hosted-exchange-account/
+
If you need to download and install the Outlook client:
-
+
-
+
ActiveSync, iPhone, iPad
@@ -10358,17 +10738,17 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'Control Panel.
+ Passwords can be changed at any time using Webmail or the Control Panel.
Control Panel
- If you need to change the details of your account, you can easily do this using Control Panel.
+ If you need to change the details of your account, you can easily do this using Control Panel.
Support
- You have 2 options, email help@virtuworks.com or use the web interface at http://www.virtuworks.com/support
-
+ You have 2 options, email or use the web interface at
+
@@ -10395,9 +10775,9 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'
-Visit VirtuWorks.com Learn more about the services VirtuWorks can provide to improve your business. |
-Privacy Policy VirtuWorks follows strict guidelines in protecting your privacy. Learn about our Privacy Policy. |
-Contact Us Questions? For more information, contact us. |
+ Learn more about the services can provide to improve your business. |
+Privacy Policy follows strict guidelines in protecting your privacy. Learn about our Privacy Policy. |
+Contact Us Questions? For more information, contact us. |
@@ -10436,7 +10816,7 @@ END
GO
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'ExchangeMailboxSetupLetter' AND [PropertyName]= N'Subject' )
BEGIN
-INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'Subject', N'Virtuworks Hosted Exchange Mailbox Setup')
+INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'Subject', N' Hosted Exchange Mailbox Setup')
END
GO
@@ -10446,7 +10826,7 @@ DECLARE @ExchangeMailboxSetupLetterTextBody nvarchar(2500)
Set @ExchangeMailboxSetupLetterTextBody = N'
Hello #Account.DisplayName#,
-Thanks for choosing VirtuWorks as your Exchange hosting provider.
+Thanks for choosing as your Exchange hosting provider.
User Accounts
@@ -10472,22 +10852,21 @@ In order for us to accept mail for your domain, you will need to point your MX r
Webmail (OWA, Outlook Web Access)
=================================
-https://mail.virtuworks.net/owa
+
=================================
Outlook (Windows Clients)
=================================
-To configure Outlook 2010 to work with VirtuWorks servers, please reference:
+To configure Outlook 2010 to work with servers, please reference:
+
-https://portal.virtuworks.net/whmcs/knowledgebase.php?action=displayarticle&id=2
If you need to download and install the Outlook 2010 client:
Outlook 2010 Download URL:
-32 Bit - http://www.virtuworks.net/downloads/Outlook2010-32bit.zip
-64 Bit - http://www.virtuworks.net/downloads/Outlook2010-64bit.zip
-KEY: HXGFV-DY3HM-4W2BQ-3R7KQ-K8P49
+
+KEY:
=================================
ActiveSync, iPhone, iPad
@@ -10502,21 +10881,21 @@ Your username: #SamUsername#
Password Changes
=================================
-Passwords can be changed at any time using Webmail or the Control Panel (https://controlpanel.virtuworks.net).
+Passwords can be changed at any time using Webmail or the Control Panel
=================================
Control Panel
=================================
-If you need to change the details of your account, you can easily do this using the Control Panel (https://controlpanel.virtuworks.net).
+If you need to change the details of your account, you can easily do this using the Control Panel
=================================
Support
=================================
-You have 2 options, email help@virtuworks.com or use the web interface at http://www.virtuworks.com/contact/'
+You have 2 options, email or use the web interface at '
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'ExchangeMailboxSetupLetter' AND [PropertyName]= N'TextBody' )
BEGIN
@@ -10633,7 +11012,7 @@ CREATE PROCEDURE [dbo].[GetAccessTokenByAccessToken]
@TokenType INT
)
AS
-SELECT
+SELECT
ID ,
AccessTokenGuid,
ExpirationDate,
@@ -10641,7 +11020,7 @@ SELECT
ItemId,
TokenType,
SmsResponse
- FROM AccessTokens
+ FROM AccessTokens
Where AccessTokenGuid = @AccessToken AND ExpirationDate > getdate() AND TokenType = @TokenType
GO
@@ -10696,19 +11075,19 @@ CREATE PROCEDURE [dbo].[GetExchangeOrganizationSettings]
@SettingsName nvarchar(100)
)
AS
-SELECT
+SELECT
ItemId,
SettingsName,
Xml
-FROM ExchangeOrganizationSettings
+FROM ExchangeOrganizationSettings
Where ItemId = @ItemId AND SettingsName = @SettingsName
GO
-- Exchange Account password column removed
-if exists(select * from sys.columns
+if exists(select * from sys.columns
where Name = N'AccountPassword' and Object_ID = Object_ID(N'ExchangeAccounts'))
begin
ALTER TABLE [ExchangeAccounts] DROP COLUMN [AccountPassword]
@@ -10717,7 +11096,7 @@ end
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddExchangeAccount')
DROP PROCEDURE AddExchangeAccount
GO
-CREATE PROCEDURE [dbo].[AddExchangeAccount]
+CREATE PROCEDURE [dbo].[AddExchangeAccount]
(
@AccountID int OUTPUT,
@ItemID int,
@@ -10820,7 +11199,7 @@ SELECT
FROM ExchangeAccounts
WHERE AccountID = @AccountID
-RETURN
+RETURN
GO
@@ -10829,6 +11208,963 @@ GO
SET QUOTED_IDENTIFIER OFF
GO
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetSearchTableByColumns')
+DROP PROCEDURE GetSearchTableByColumns
+GO
+CREATE PROCEDURE [dbo].[GetSearchTableByColumns]
+(
+ @PagedStored nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @MaximumRows int,
+
+ @Recursive bit,
+ @PoolID int,
+ @ServerID int,
+ @ActorID int,
+ @StatusID int,
+ @PlanID int,
+ @OrgID int,
+ @ItemTypeName nvarchar(200),
+ @GroupName nvarchar(100) = NULL,
+ @PackageID int,
+ @VPSType nvarchar(100) = NULL,
+ @UserID int,
+ @RoleID int,
+ @FilterColumns nvarchar(200)
+)
+AS
+
+DECLARE @VPSTypeID int
+IF @VPSType <> '' AND @VPSType IS NOT NULL
+BEGIN
+ SET @VPSTypeID = CASE @VPSType
+ WHEN 'VPS' THEN 33
+ WHEN 'VPS2012' THEN 41
+ WHEN 'VPSForPC' THEN 35
+ ELSE 33
+ END
+END
+
+DECLARE @sql nvarchar(3000)
+SET @sql = CASE @PagedStored
+WHEN 'Domains' THEN '
+ DECLARE @Domains TABLE
+ (
+ DomainID int,
+ DomainName nvarchar(100),
+ Username nvarchar(100),
+ FullName nvarchar(100),
+ Email nvarchar(100)
+ )
+ INSERT INTO @Domains (DomainID, DomainName, Username, FullName, Email)
+ SELECT
+ D.DomainID,
+ D.DomainName,
+ U.Username,
+ U.FullName,
+ U.Email
+ 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))
+ '
+WHEN 'IPAddresses' THEN '
+ DECLARE @IPAddresses TABLE
+ (
+ AddressesID int,
+ ExternalIP nvarchar(100),
+ InternalIP nvarchar(100),
+ DefaultGateway nvarchar(100),
+ ServerName nvarchar(100),
+ UserName nvarchar(100),
+ ItemName nvarchar(100)
+ )
+ DECLARE @IsAdmin bit
+ SET @IsAdmin = dbo.CheckIsUserAdmin(@ActorID)
+ INSERT INTO @IPAddresses (AddressesID, ExternalIP, InternalIP, DefaultGateway, ServerName, UserName, ItemName)
+ SELECT
+ IP.AddressID,
+ IP.ExternalIP,
+ IP.InternalIP,
+ IP.DefaultGateway,
+ S.ServerName,
+ U.UserName,
+ SI.ItemName
+ FROM dbo.IPAddresses AS IP
+ LEFT JOIN Servers AS S ON IP.ServerID = S.ServerID
+ LEFT JOIN PackageIPAddresses AS PA ON IP.AddressID = PA.AddressID
+ LEFT JOIN ServiceItems SI ON PA.ItemId = SI.ItemID
+ LEFT JOIN dbo.Packages P ON PA.PackageID = P.PackageID
+ LEFT JOIN dbo.Users U ON P.UserID = U.UserID
+ WHERE
+ @IsAdmin = 1
+ AND (@PoolID = 0 OR @PoolID <> 0 AND IP.PoolID = @PoolID)
+ AND (@ServerID = 0 OR @ServerID <> 0 AND IP.ServerID = @ServerID)
+ '
+WHEN 'Schedules' THEN '
+ DECLARE @Schedules TABLE
+ (
+ ScheduleID int,
+ ScheduleName nvarchar(100),
+ Username nvarchar(100),
+ FullName nvarchar(100),
+ Email nvarchar(100)
+ )
+ INSERT INTO @Schedules (ScheduleID, ScheduleName, Username, FullName, Email)
+ SELECT
+ S.ScheduleID,
+ S.ScheduleName,
+ U.Username,
+ U.FullName,
+ U.Email
+ FROM Schedule AS S
+ INNER JOIN Packages AS P ON S.PackageID = P.PackageID
+ INNER JOIN PackagesTree(@PackageID, @Recursive) AS PT ON S.PackageID = PT.PackageID
+ INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+ '
+WHEN 'NestedPackages' THEN '
+ DECLARE @NestedPackages TABLE
+ (
+ PackageID int,
+ PackageName nvarchar(100),
+ Username nvarchar(100),
+ FullName nvarchar(100),
+ Email nvarchar(100)
+ )
+ INSERT INTO @NestedPackages (PackageID, PackageName, Username, FullName, Email)
+ SELECT
+ P.PackageID,
+ P.PackageName,
+ U.Username,
+ U.FullName,
+ U.Email
+ FROM Packages AS P
+ INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+ INNER JOIN Servers AS S ON P.ServerID = S.ServerID
+ INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID
+ WHERE
+ P.ParentPackageID = @PackageID
+ AND ((@StatusID = 0) OR (@StatusID > 0 AND P.StatusID = @StatusID))
+ AND ((@PlanID = 0) OR (@PlanID > 0 AND P.PlanID = @PlanID))
+ AND ((@ServerID = 0) OR (@ServerID > 0 AND P.ServerID = @ServerID))
+ '
+WHEN 'PackageIPAddresses' THEN '
+ DECLARE @PackageIPAddresses TABLE
+ (
+ PackageAddressID int,
+ ExternalIP nvarchar(100),
+ InternalIP nvarchar(100),
+ DefaultGateway nvarchar(100),
+ ItemName nvarchar(100),
+ UserName nvarchar(100)
+ )
+ INSERT INTO @PackageIPAddresses (PackageAddressID, ExternalIP, InternalIP, DefaultGateway, ItemName, UserName)
+ SELECT
+ PA.PackageAddressID,
+ IP.ExternalIP,
+ IP.InternalIP,
+ IP.DefaultGateway,
+ SI.ItemName,
+ U.UserName
+ FROM dbo.PackageIPAddresses PA
+ INNER JOIN dbo.IPAddresses AS IP ON PA.AddressID = IP.AddressID
+ INNER JOIN dbo.Packages P ON PA.PackageID = P.PackageID
+ INNER JOIN dbo.Users U ON U.UserID = P.UserID
+ LEFT JOIN ServiceItems SI ON PA.ItemId = SI.ItemID
+ WHERE
+ ((@Recursive = 0 AND PA.PackageID = @PackageID)
+ OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, PA.PackageID) = 1))
+ AND (@PoolID = 0 OR @PoolID <> 0 AND IP.PoolID = @PoolID)
+ AND (@OrgID = 0 OR @OrgID <> 0 AND PA.OrgID = @OrgID)
+ '
+WHEN 'ServiceItems' THEN '
+ IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
+ RAISERROR(''You are not allowed to access this package'', 16, 1)
+ DECLARE @ServiceItems TABLE
+ (
+ ItemID int,
+ ItemName nvarchar(100),
+ Username nvarchar(100),
+ FullName nvarchar(100),
+ Email nvarchar(100)
+ )
+ DECLARE @GroupID int
+ SELECT @GroupID = GroupID FROM ResourceGroups
+ WHERE GroupName = @GroupName
+ DECLARE @ItemTypeID int
+ SELECT @ItemTypeID = ItemTypeID FROM ServiceItemTypes
+ WHERE TypeName = @ItemTypeName
+ AND ((@GroupID IS NULL) OR (@GroupID IS NOT NULL AND GroupID = @GroupID))
+ INSERT INTO @ServiceItems (ItemID, ItemName, Username, FullName, Email)
+ SELECT
+ SI.ItemID,
+ SI.ItemName,
+ U.Username,
+ U.FirstName,
+ U.Email
+ FROM Packages AS P
+ INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+ INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+ INNER JOIN ServiceItemTypes AS IT ON SI.ItemTypeID = IT.ItemTypeID
+ INNER JOIN Services AS S ON SI.ServiceID = S.ServiceID
+ INNER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
+ WHERE
+ SI.ItemTypeID = @ItemTypeID
+ AND ((@Recursive = 0 AND P.PackageID = @PackageID)
+ OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, P.PackageID) = 1))
+ AND ((@GroupID IS NULL) OR (@GroupID IS NOT NULL AND IT.GroupID = @GroupID))
+ AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
+ '
+WHEN 'Users' THEN '
+ DECLARE @Users TABLE
+ (
+ UserID int,
+ Username nvarchar(100),
+ FullName nvarchar(100),
+ Email nvarchar(100),
+ CompanyName nvarchar(100)
+ )
+ DECLARE @HasUserRights bit
+ SET @HasUserRights = dbo.CheckActorUserRights(@ActorID, @UserID)
+ INSERT INTO @Users (UserID, Username, FullName, Email, CompanyName)
+ SELECT
+ U.UserID,
+ U.Username,
+ U.FullName,
+ U.Email,
+ U.CompanyName
+ FROM UsersDetailed AS U
+ WHERE
+ U.UserID <> @UserID AND U.IsPeer = 0 AND
+ (
+ (@Recursive = 0 AND OwnerID = @UserID) OR
+ (@Recursive = 1 AND dbo.CheckUserParent(@UserID, U.UserID) = 1)
+ )
+ AND ((@StatusID = 0) OR (@StatusID > 0 AND U.StatusID = @StatusID))
+ AND ((@RoleID = 0) OR (@RoleID > 0 AND U.RoleID = @RoleID))
+ AND @HasUserRights = 1
+ '
+WHEN 'VirtualMachines' THEN '
+ IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
+ RAISERROR(''You are not allowed to access this package'', 16, 1)
+ DECLARE @VirtualMachines TABLE
+ (
+ ItemID int,
+ ItemName nvarchar(100),
+ Username nvarchar(100),
+ ExternalIP nvarchar(100),
+ IPAddress nvarchar(100)
+ )
+ INSERT INTO @VirtualMachines (ItemID, ItemName, Username, ExternalIP, IPAddress)
+ SELECT
+ SI.ItemID,
+ SI.ItemName,
+ U.Username,
+ EIP.ExternalIP,
+ PIP.IPAddress
+ FROM Packages AS P
+ INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+ INNER JOIN Users AS U ON P.UserID = U.UserID
+ LEFT OUTER JOIN (
+ SELECT PIP.ItemID, IP.ExternalIP FROM PackageIPAddresses AS PIP
+ INNER JOIN IPAddresses AS IP ON PIP.AddressID = IP.AddressID
+ WHERE PIP.IsPrimary = 1 AND IP.PoolID = 3 -- external IP addresses
+ ) AS EIP ON SI.ItemID = EIP.ItemID
+ LEFT OUTER JOIN PrivateIPAddresses AS PIP ON PIP.ItemID = SI.ItemID AND PIP.IsPrimary = 1
+ WHERE
+ SI.ItemTypeID = ' + CAST(@VPSTypeID AS nvarchar(12)) + '
+ AND ((@Recursive = 0 AND P.PackageID = @PackageID)
+ OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, P.PackageID) = 1))
+ '
+WHEN 'PackagePrivateIPAddresses' THEN '
+ DECLARE @PackagePrivateIPAddresses TABLE
+ (
+ PrivateAddressID int,
+ IPAddress nvarchar(100),
+ ItemName nvarchar(100)
+ )
+ INSERT INTO @PackagePrivateIPAddresses (PrivateAddressID, IPAddress, ItemName)
+ SELECT
+ PA.PrivateAddressID,
+ PA.IPAddress,
+ SI.ItemName
+ FROM dbo.PrivateIPAddresses AS PA
+ INNER JOIN dbo.ServiceItems AS SI ON PA.ItemID = SI.ItemID
+ WHERE SI.PackageID = @PackageID
+ '
+ELSE ''
+END + 'SELECT TOP ' + CAST(@MaximumRows AS nvarchar(12)) + ' MIN(ItemID) as [ItemID], TextSearch, ColumnType, COUNT(*) AS [Count]' + CASE @PagedStored
+WHEN 'Domains' THEN '
+ FROM(
+ SELECT D0.DomainID AS ItemID, D0.DomainName AS TextSearch, ''DomainName'' AS ColumnType
+ FROM @Domains AS D0
+ UNION
+ SELECT D1.DomainID AS ItemID, D1.Username AS TextSearch, ''Username'' AS ColumnType
+ FROM @Domains AS D1
+ UNION
+ SELECT D2.DomainID as ItemID, D2.FullName AS TextSearch, ''FullName'' AS ColumnType
+ FROM @Domains AS D2
+ UNION
+ SELECT D3.DomainID as ItemID, D3.Email AS TextSearch, ''Email'' AS ColumnType
+ FROM @Domains AS D3) AS D'
+WHEN 'IPAddresses' THEN '
+ FROM(
+ SELECT D0.AddressesID AS ItemID, D0.ExternalIP AS TextSearch, ''ExternalIP'' AS ColumnType
+ FROM @IPAddresses AS D0
+ UNION
+ SELECT D1.AddressesID AS ItemID, D1.InternalIP AS TextSearch, ''InternalIP'' AS ColumnType
+ FROM @IPAddresses AS D1
+ UNION
+ SELECT D2.AddressesID AS ItemID, D2.DefaultGateway AS TextSearch, ''DefaultGateway'' AS ColumnType
+ FROM @IPAddresses AS D2
+ UNION
+ SELECT D3.AddressesID AS ItemID, D3.ServerName AS TextSearch, ''ServerName'' AS ColumnType
+ FROM @IPAddresses AS D3
+ UNION
+ SELECT D4.AddressesID AS ItemID, D4.UserName AS TextSearch, ''UserName'' AS ColumnType
+ FROM @IPAddresses AS D4
+ UNION
+ SELECT D6.AddressesID AS ItemID, D6.ItemName AS TextSearch, ''ItemName'' AS ColumnType
+ FROM @IPAddresses AS D6) AS D'
+WHEN 'Schedules' THEN '
+ FROM(
+ SELECT D0.ScheduleID AS ItemID, D0.ScheduleName AS TextSearch, ''ScheduleName'' AS ColumnType
+ FROM @Schedules AS D0
+ UNION
+ SELECT D1.ScheduleID AS ItemID, D1.Username AS TextSearch, ''Username'' AS ColumnType
+ FROM @Schedules AS D1
+ UNION
+ SELECT D2.ScheduleID AS ItemID, D2.FullName AS TextSearch, ''FullName'' AS ColumnType
+ FROM @Schedules AS D2
+ UNION
+ SELECT D3.ScheduleID AS ItemID, D3.Email AS TextSearch, ''Email'' AS ColumnType
+ FROM @Schedules AS D3) AS D'
+WHEN 'NestedPackages' THEN '
+ FROM(
+ SELECT D0.PackageID AS ItemID, D0.PackageName AS TextSearch, ''PackageName'' AS ColumnType
+ FROM @NestedPackages AS D0
+ UNION
+ SELECT D1.PackageID AS ItemID, D1.Username AS TextSearch, ''Username'' AS ColumnType
+ FROM @NestedPackages AS D1
+ UNION
+ SELECT D2.PackageID as ItemID, D2.FullName AS TextSearch, ''FullName'' AS ColumnType
+ FROM @NestedPackages AS D2
+ UNION
+ SELECT D3.PackageID as ItemID, D3.Email AS TextSearch, ''Email'' AS ColumnType
+ FROM @NestedPackages AS D3) AS D'
+WHEN 'PackageIPAddresses' THEN '
+ FROM(
+ SELECT D0.PackageAddressID AS ItemID, D0.ExternalIP AS TextSearch, ''ExternalIP'' AS ColumnType
+ FROM @PackageIPAddresses AS D0
+ UNION
+ SELECT D1.PackageAddressID AS ItemID, D1.InternalIP AS TextSearch, ''InternalIP'' AS ColumnType
+ FROM @PackageIPAddresses AS D1
+ UNION
+ SELECT D2.PackageAddressID as ItemID, D2.DefaultGateway AS TextSearch, ''DefaultGateway'' AS ColumnType
+ FROM @PackageIPAddresses AS D2
+ UNION
+ SELECT D3.PackageAddressID as ItemID, D3.ItemName AS TextSearch, ''ItemName'' AS ColumnType
+ FROM @PackageIPAddresses AS D3
+ UNION
+ SELECT D5.PackageAddressID as ItemID, D5.UserName AS TextSearch, ''UserName'' AS ColumnType
+ FROM @PackageIPAddresses AS D5) AS D'
+WHEN 'ServiceItems' THEN '
+ FROM(
+ SELECT D0.ItemID AS ItemID, D0.ItemName AS TextSearch, ''ItemName'' AS ColumnType
+ FROM @ServiceItems AS D0
+ UNION
+ SELECT D1.ItemID AS ItemID, D1.Username AS TextSearch, ''Username'' AS ColumnType
+ FROM @ServiceItems AS D1
+ UNION
+ SELECT D2.ItemID as ItemID, D2.FullName AS TextSearch, ''FullName'' AS ColumnType
+ FROM @ServiceItems AS D2
+ UNION
+ SELECT D3.ItemID as ItemID, D3.Email AS TextSearch, ''Email'' AS ColumnType
+ FROM @ServiceItems AS D3) AS D'
+WHEN 'Users' THEN '
+ FROM(
+ SELECT D0.UserID AS ItemID, D0.Username AS TextSearch, ''Username'' AS ColumnType
+ FROM @Users AS D0
+ UNION
+ SELECT D1.UserID AS ItemID, D1.FullName AS TextSearch, ''FullName'' AS ColumnType
+ FROM @Users AS D1
+ UNION
+ SELECT D2.UserID as ItemID, D2.Email AS TextSearch, ''Email'' AS ColumnType
+ FROM @Users AS D2
+ UNION
+ SELECT D3.UserID as ItemID, D3.CompanyName AS TextSearch, ''CompanyName'' AS ColumnType
+ FROM @Users AS D3) AS D'
+WHEN 'VirtualMachines' THEN '
+ FROM(
+ SELECT D0.ItemID AS ItemID, D0.ItemName AS TextSearch, ''ItemName'' AS ColumnType
+ FROM @VirtualMachines AS D0
+ UNION
+ SELECT D1.ItemID AS ItemID, D1.ExternalIP AS TextSearch, ''ExternalIP'' AS ColumnType
+ FROM @VirtualMachines AS D1
+ UNION
+ SELECT D2.ItemID as ItemID, D2.Username AS TextSearch, ''Username'' AS ColumnType
+ FROM @VirtualMachines AS D2
+ UNION
+ SELECT D3.ItemID as ItemID, D3.IPAddress AS TextSearch, ''IPAddress'' AS ColumnType
+ FROM @VirtualMachines AS D3) AS D'
+WHEN 'PackagePrivateIPAddresses' THEN '
+ FROM(
+ SELECT D0.PrivateAddressID AS ItemID, D0.IPAddress AS TextSearch, ''IPAddress'' AS ColumnType
+ FROM @PackagePrivateIPAddresses AS D0
+ UNION
+ SELECT D1.PrivateAddressID AS ItemID, D1.ItemName AS TextSearch, ''ItemName'' AS ColumnType
+ FROM @PackagePrivateIPAddresses AS D1) AS D'
+END + '
+ WHERE (TextSearch LIKE @FilterValue)'
+IF @FilterColumns <> '' AND @FilterColumns IS NOT NULL
+ SET @sql = @sql + '
+ AND (ColumnType IN (' + @FilterColumns + '))'
+SET @sql = @sql + '
+ GROUP BY TextSearch, ColumnType
+ ORDER BY TextSearch'
+
+exec sp_executesql @sql, N'@FilterValue nvarchar(50), @Recursive bit, @PoolID int, @ServerID int, @ActorID int, @StatusID int, @PlanID int, @OrgID int, @ItemTypeName nvarchar(200), @GroupName nvarchar(100), @PackageID int, @VPSTypeID int, @UserID int, @RoleID int',
+@FilterValue, @Recursive, @PoolID, @ServerID, @ActorID, @StatusID, @PlanID, @OrgID, @ItemTypeName, @GroupName, @PackageID, @VPSTypeID, @UserID, @RoleID
+
+RETURN
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetPackagePrivateIPAddressesPaged')
+DROP PROCEDURE GetPackagePrivateIPAddressesPaged
+GO
+CREATE PROCEDURE [dbo].[GetPackagePrivateIPAddressesPaged]
+ @PackageID int,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int
+AS
+BEGIN
+
+
+-- start
+DECLARE @condition nvarchar(700)
+SET @condition = '
+SI.PackageID = @PackageID
+'
+
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (IPAddress LIKE ''' + @FilterValue + '''
+ OR ItemName LIKE ''' + @FilterValue + ''')'
+END
+
+IF @SortColumn IS NULL OR @SortColumn = ''
+SET @SortColumn = 'PA.IPAddress ASC'
+
+DECLARE @sql nvarchar(3500)
+
+set @sql = '
+SELECT COUNT(PA.PrivateAddressID)
+FROM dbo.PrivateIPAddresses AS PA
+INNER JOIN dbo.ServiceItems AS SI ON PA.ItemID = SI.ItemID
+WHERE ' + @condition + '
+
+DECLARE @Addresses AS TABLE
+(
+ PrivateAddressID int
+);
+
+WITH TempItems AS (
+ SELECT ROW_NUMBER() OVER (ORDER BY ' + @SortColumn + ') as Row,
+ PA.PrivateAddressID
+ FROM dbo.PrivateIPAddresses AS PA
+ INNER JOIN dbo.ServiceItems AS SI ON PA.ItemID = SI.ItemID
+ WHERE ' + @condition + '
+)
+
+INSERT INTO @Addresses
+SELECT PrivateAddressID FROM TempItems
+WHERE TempItems.Row BETWEEN @StartRow + 1 and @StartRow + @MaximumRows
+
+SELECT
+ PA.PrivateAddressID,
+ PA.IPAddress,
+ PA.ItemID,
+ SI.ItemName,
+ PA.IsPrimary
+FROM @Addresses AS TA
+INNER JOIN dbo.PrivateIPAddresses AS PA ON TA.PrivateAddressID = PA.PrivateAddressID
+INNER JOIN dbo.ServiceItems AS SI ON PA.ItemID = SI.ItemID
+'
+
+print @sql
+
+exec sp_executesql @sql, N'@PackageID int, @StartRow int, @MaximumRows int',
+@PackageID, @StartRow, @MaximumRows
+
+END
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetNestedPackagesPaged')
+DROP PROCEDURE GetNestedPackagesPaged
+GO
+CREATE PROCEDURE [dbo].[GetNestedPackagesPaged]
+(
+ @ActorID int,
+ @PackageID int,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @StatusID int,
+ @PlanID int,
+ @ServerID int,
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int
+)
+AS
+
+-- build query and run it to the temporary table
+DECLARE @sql nvarchar(2000)
+
+SET @sql = '
+IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
+RAISERROR(''You are not allowed to access this package'', 16, 1)
+
+DECLARE @EndRow int
+SET @EndRow = @StartRow + @MaximumRows
+DECLARE @Packages TABLE
+(
+ ItemPosition int IDENTITY(1,1),
+ PackageID int
+)
+INSERT INTO @Packages (PackageID)
+SELECT
+ P.PackageID
+FROM Packages AS P
+INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+INNER JOIN Servers AS S ON P.ServerID = S.ServerID
+INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID
+WHERE
+ P.ParentPackageID = @PackageID
+ AND ((@StatusID = 0) OR (@StatusID > 0 AND P.StatusID = @StatusID))
+ AND ((@PlanID = 0) OR (@PlanID > 0 AND P.PlanID = @PlanID))
+ AND ((@ServerID = 0) OR (@ServerID > 0 AND P.ServerID = @ServerID)) '
+
+IF @FilterValue <> ''
+BEGIN
+ IF @FilterColumn <> ''
+ SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
+ ELSE
+ SET @sql = @sql + '
+ AND (Username LIKE @FilterValue
+ OR FullName LIKE @FilterValue
+ OR Email LIKE @FilterValue) '
+END
+
+IF @SortColumn <> '' AND @SortColumn IS NOT NULL
+SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
+
+SET @sql = @sql + ' SELECT COUNT(PackageID) FROM @Packages;
+SELECT
+ P.PackageID,
+ P.PackageName,
+ P.StatusID,
+ P.PurchaseDate,
+
+ dbo.GetItemComments(P.PackageID, ''PACKAGE'', @ActorID) AS Comments,
+
+ -- server
+ P.ServerID,
+ ISNULL(S.ServerName, ''None'') AS ServerName,
+ ISNULL(S.Comments, '''') AS ServerComments,
+ ISNULL(S.VirtualServer, 1) AS VirtualServer,
+
+ -- hosting plan
+ P.PlanID,
+ HP.PlanName,
+
+ -- user
+ P.UserID,
+ U.Username,
+ U.FirstName,
+ U.LastName,
+ U.FullName,
+ U.RoleID,
+ U.Email
+FROM @Packages AS TP
+INNER JOIN Packages AS P ON TP.PackageID = P.PackageID
+INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+INNER JOIN Servers AS S ON P.ServerID = S.ServerID
+INNER JOIN HostingPlans AS HP ON P.PlanID = HP.PlanID
+WHERE TP.ItemPosition BETWEEN @StartRow AND @EndRow'
+
+exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @PackageID int, @FilterValue nvarchar(50), @ActorID int, @StatusID int, @PlanID int, @ServerID int',
+@StartRow, @MaximumRows, @PackageID, @FilterValue, @ActorID, @StatusID, @PlanID, @ServerID
+
+
+RETURN
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetUsersPaged')
+DROP PROCEDURE GetUsersPaged
+GO
+CREATE PROCEDURE [dbo].[GetUsersPaged]
+(
+ @ActorID int,
+ @UserID int,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @StatusID int,
+ @RoleID int,
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int,
+ @Recursive bit
+)
+AS
+-- build query and run it to the temporary table
+DECLARE @sql nvarchar(2000)
+
+SET @sql = '
+
+DECLARE @HasUserRights bit
+SET @HasUserRights = dbo.CheckActorUserRights(@ActorID, @UserID)
+
+DECLARE @EndRow int
+SET @EndRow = @StartRow + @MaximumRows
+DECLARE @Users TABLE
+(
+ ItemPosition int IDENTITY(0,1),
+ UserID int
+)
+INSERT INTO @Users (UserID)
+SELECT
+ U.UserID
+FROM UsersDetailed AS U
+WHERE
+ U.UserID <> @UserID AND U.IsPeer = 0 AND
+ (
+ (@Recursive = 0 AND OwnerID = @UserID) OR
+ (@Recursive = 1 AND dbo.CheckUserParent(@UserID, U.UserID) = 1)
+ )
+ AND ((@StatusID = 0) OR (@StatusID > 0 AND U.StatusID = @StatusID))
+ AND ((@RoleID = 0) OR (@RoleID > 0 AND U.RoleID = @RoleID))
+ AND @HasUserRights = 1 '
+
+IF @FilterValue <> ''
+BEGIN
+ IF @FilterColumn <> ''
+ SET @sql = @sql + ' AND ' + @FilterColumn + ' LIKE @FilterValue '
+ ELSE
+ SET @sql = @sql + '
+ AND (Username LIKE @FilterValue
+ OR FullName LIKE @FilterValue
+ OR Email LIKE @FilterValue) '
+END
+
+IF @SortColumn <> '' AND @SortColumn IS NOT NULL
+SET @sql = @sql + ' ORDER BY ' + @SortColumn + ' '
+
+SET @sql = @sql + ' SELECT COUNT(UserID) FROM @Users;
+SELECT
+ U.UserID,
+ U.RoleID,
+ U.StatusID,
+ U.SubscriberNumber,
+ U.LoginStatusId,
+ U.FailedLogins,
+ U.OwnerID,
+ U.Created,
+ U.Changed,
+ U.IsDemo,
+ dbo.GetItemComments(U.UserID, ''USER'', @ActorID) AS Comments,
+ U.IsPeer,
+ U.Username,
+ U.FirstName,
+ U.LastName,
+ U.Email,
+ U.FullName,
+ U.OwnerUsername,
+ U.OwnerFirstName,
+ U.OwnerLastName,
+ U.OwnerRoleID,
+ U.OwnerFullName,
+ U.OwnerEmail,
+ U.PackagesNumber,
+ U.CompanyName,
+ U.EcommerceEnabled
+FROM @Users AS TU
+INNER JOIN UsersDetailed AS U ON TU.UserID = U.UserID
+WHERE TU.ItemPosition BETWEEN @StartRow AND @EndRow'
+
+exec sp_executesql @sql, N'@StartRow int, @MaximumRows int, @UserID int, @FilterValue nvarchar(50), @ActorID int, @Recursive bit, @StatusID int, @RoleID int',
+@StartRow, @MaximumRows, @UserID, @FilterValue, @ActorID, @Recursive, @StatusID, @RoleID
+
+
+RETURN
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetServiceItemsPaged')
+DROP PROCEDURE GetServiceItemsPaged
+GO
+CREATE PROCEDURE [dbo].[GetServiceItemsPaged]
+(
+ @ActorID int,
+ @PackageID int,
+ @ItemTypeName nvarchar(200),
+ @GroupName nvarchar(100) = NULL,
+ @ServerID int,
+ @Recursive bit,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int
+)
+AS
+
+
+-- check rights
+IF dbo.CheckActorPackageRights(@ActorID, @PackageID) = 0
+RAISERROR('You are not allowed to access this package', 16, 1)
+
+-- start
+DECLARE @GroupID int
+SELECT @GroupID = GroupID FROM ResourceGroups
+WHERE GroupName = @GroupName
+
+DECLARE @ItemTypeID int
+SELECT @ItemTypeID = ItemTypeID FROM ServiceItemTypes
+WHERE TypeName = @ItemTypeName
+AND ((@GroupID IS NULL) OR (@GroupID IS NOT NULL AND GroupID = @GroupID))
+
+DECLARE @condition nvarchar(700)
+SET @condition = 'SI.ItemTypeID = @ItemTypeID
+AND ((@Recursive = 0 AND P.PackageID = @PackageID)
+ OR (@Recursive = 1 AND dbo.CheckPackageParent(@PackageID, P.PackageID) = 1))
+AND ((@GroupID IS NULL) OR (@GroupID IS NOT NULL AND IT.GroupID = @GroupID))
+AND (@ServerID = 0 OR (@ServerID > 0 AND S.ServerID = @ServerID))
+'
+
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ItemName LIKE ''' + @FilterValue + '''
+ OR Username ''' + @FilterValue + '''
+ OR FullName ''' + @FilterValue + '''
+ OR Email ''' + @FilterValue + ''')'
+END
+
+IF @SortColumn IS NULL OR @SortColumn = ''
+SET @SortColumn = 'SI.ItemName ASC'
+
+DECLARE @sql nvarchar(3500)
+
+set @sql = '
+SELECT COUNT(SI.ItemID) FROM Packages AS P
+INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+INNER JOIN ServiceItemTypes AS IT ON SI.ItemTypeID = IT.ItemTypeID
+INNER JOIN Services AS S ON SI.ServiceID = S.ServiceID
+WHERE ' + @condition + '
+
+DECLARE @Items AS TABLE
+(
+ ItemID int
+);
+
+WITH TempItems AS (
+ SELECT ROW_NUMBER() OVER (ORDER BY ' + @SortColumn + ') as Row,
+ SI.ItemID
+ FROM Packages AS P
+ INNER JOIN ServiceItems AS SI ON P.PackageID = SI.PackageID
+ INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+ INNER JOIN ServiceItemTypes AS IT ON SI.ItemTypeID = IT.ItemTypeID
+ INNER JOIN Services AS S ON SI.ServiceID = S.ServiceID
+ INNER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
+ WHERE ' + @condition + '
+)
+
+INSERT INTO @Items
+SELECT ItemID FROM TempItems
+WHERE TempItems.Row BETWEEN @StartRow + 1 and @StartRow + @MaximumRows
+
+SELECT
+ SI.ItemID,
+ SI.ItemName,
+ SI.ItemTypeID,
+ IT.TypeName,
+ SI.ServiceID,
+ SI.PackageID,
+ SI.CreatedDate,
+ RG.GroupName,
+
+ -- 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 @Items AS TSI
+INNER JOIN ServiceItems AS SI ON TSI.ItemID = SI.ItemID
+INNER JOIN ServiceItemTypes AS IT ON SI.ItemTypeID = IT.ItemTypeID
+INNER JOIN Packages AS P ON SI.PackageID = P.PackageID
+INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
+INNER JOIN Services AS S ON SI.ServiceID = S.ServiceID
+INNER JOIN Servers AS SRV ON S.ServerID = SRV.ServerID
+INNER JOIN ResourceGroups AS RG ON IT.GroupID = RG.GroupID
+
+
+SELECT
+ IP.ItemID,
+ IP.PropertyName,
+ IP.PropertyValue
+FROM ServiceItemProperties AS IP
+INNER JOIN @Items AS TSI ON IP.ItemID = TSI.ItemID'
+
+--print @sql
+
+exec sp_executesql @sql, N'@ItemTypeID int, @PackageID int, @GroupID int, @StartRow int, @MaximumRows int, @Recursive bit, @ServerID int',
+@ItemTypeID, @PackageID, @GroupID, @StartRow, @MaximumRows, @Recursive, @ServerID
+
+RETURN
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetIPAddressesPaged')
+DROP PROCEDURE GetIPAddressesPaged
+GO
+CREATE PROCEDURE [dbo].[GetIPAddressesPaged]
+(
+ @ActorID int,
+ @PoolID int,
+ @ServerID int,
+ @FilterColumn nvarchar(50) = '',
+ @FilterValue nvarchar(50) = '',
+ @SortColumn nvarchar(50),
+ @StartRow int,
+ @MaximumRows int
+)
+AS
+BEGIN
+
+-- check rights
+DECLARE @IsAdmin bit
+SET @IsAdmin = dbo.CheckIsUserAdmin(@ActorID)
+
+-- start
+DECLARE @condition nvarchar(700)
+SET @condition = '
+@IsAdmin = 1
+AND (@PoolID = 0 OR @PoolID <> 0 AND IP.PoolID = @PoolID)
+AND (@ServerID = 0 OR @ServerID <> 0 AND IP.ServerID = @ServerID)
+'
+
+IF @FilterValue <> '' AND @FilterValue IS NOT NULL
+BEGIN
+ IF @FilterColumn <> '' AND @FilterColumn IS NOT NULL
+ SET @condition = @condition + ' AND ' + @FilterColumn + ' LIKE ''' + @FilterValue + ''''
+ ELSE
+ SET @condition = @condition + '
+ AND (ExternalIP LIKE ''' + @FilterValue + '''
+ OR InternalIP LIKE ''' + @FilterValue + '''
+ OR DefaultGateway LIKE ''' + @FilterValue + '''
+ OR ServerName LIKE ''' + @FilterValue + '''
+ OR ItemName LIKE ''' + @FilterValue + '''
+ OR Username LIKE ''' + @FilterValue + ''')'
+END
+
+IF @SortColumn IS NULL OR @SortColumn = ''
+SET @SortColumn = 'IP.ExternalIP ASC'
+
+DECLARE @sql nvarchar(3500)
+
+set @sql = '
+SELECT COUNT(IP.AddressID)
+FROM dbo.IPAddresses AS IP
+LEFT JOIN Servers AS S ON IP.ServerID = S.ServerID
+LEFT JOIN PackageIPAddresses AS PA ON IP.AddressID = PA.AddressID
+LEFT JOIN ServiceItems SI ON PA.ItemId = SI.ItemID
+LEFT JOIN dbo.Packages P ON PA.PackageID = P.PackageID
+LEFT JOIN dbo.Users U ON P.UserID = U.UserID
+WHERE ' + @condition + '
+
+DECLARE @Addresses AS TABLE
+(
+ AddressID int
+);
+
+WITH TempItems AS (
+ SELECT ROW_NUMBER() OVER (ORDER BY ' + @SortColumn + ') as Row,
+ IP.AddressID
+ FROM dbo.IPAddresses AS IP
+ LEFT JOIN Servers AS S ON IP.ServerID = S.ServerID
+ LEFT JOIN PackageIPAddresses AS PA ON IP.AddressID = PA.AddressID
+ LEFT JOIN ServiceItems SI ON PA.ItemId = SI.ItemID
+ LEFT JOIN dbo.Packages P ON PA.PackageID = P.PackageID
+ LEFT JOIN dbo.Users U ON U.UserID = P.UserID
+ WHERE ' + @condition + '
+)
+
+INSERT INTO @Addresses
+SELECT AddressID FROM TempItems
+WHERE TempItems.Row BETWEEN @StartRow + 1 and @StartRow + @MaximumRows
+
+SELECT
+ IP.AddressID,
+ IP.PoolID,
+ IP.ExternalIP,
+ IP.InternalIP,
+ IP.SubnetMask,
+ IP.DefaultGateway,
+ IP.Comments,
+
+ IP.ServerID,
+ S.ServerName,
+
+ PA.ItemID,
+ SI.ItemName,
+
+ PA.PackageID,
+ P.PackageName,
+
+ P.UserID,
+ U.UserName
+FROM @Addresses AS TA
+INNER JOIN dbo.IPAddresses AS IP ON TA.AddressID = IP.AddressID
+LEFT JOIN Servers AS S ON IP.ServerID = S.ServerID
+LEFT JOIN PackageIPAddresses AS PA ON IP.AddressID = PA.AddressID
+LEFT JOIN ServiceItems SI ON PA.ItemId = SI.ItemID
+LEFT JOIN dbo.Packages P ON PA.PackageID = P.PackageID
+LEFT JOIN dbo.Users U ON U.UserID = P.UserID
+'
+
+exec sp_executesql @sql, N'@IsAdmin bit, @PoolID int, @ServerID int, @StartRow int, @MaximumRows int',
+@IsAdmin, @PoolID, @ServerID, @StartRow, @MaximumRows
+
+END
+GO
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetSearchObject')
DROP PROCEDURE GetSearchObject
@@ -10854,16 +12190,16 @@ AS
IF dbo.CheckActorUserRights(@ActorID, @UserID) = 0
RAISERROR('You are not allowed to access this account', 16, 1)
-DECLARE @columnUsername nvarchar(20)
+DECLARE @columnUsername nvarchar(20)
SET @columnUsername = 'Username'
-DECLARE @columnEmail nvarchar(20)
+DECLARE @columnEmail nvarchar(20)
SET @columnEmail = 'Email'
-DECLARE @columnCompanyName nvarchar(20)
+DECLARE @columnCompanyName nvarchar(20)
SET @columnCompanyName = 'CompanyName'
-DECLARE @columnFullName nvarchar(20)
+DECLARE @columnFullName nvarchar(20)
SET @columnFullName = 'FullName'
DECLARE @curUsers cursor
@@ -10892,7 +12228,7 @@ SET @sqlUsers = @sqlUsers + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
SET @sqlUsers = @sqlUsers + 'U.UserID
FROM UsersDetailed AS U
-WHERE
+WHERE
U.UserID <> @UserID AND U.IsPeer = 0 AND
(
(@Recursive = 0 AND OwnerID = @UserID) OR
@@ -10900,7 +12236,7 @@ WHERE
)
AND ((@StatusID = 0) OR (@StatusID > 0 AND U.StatusID = @StatusID))
AND ((@RoleID = 0) OR (@RoleID > 0 AND U.RoleID = @RoleID))
- AND @HasUserRights = 1
+ AND @HasUserRights = 1
SET @curValue = cursor local for
SELECT
U.ItemID,
@@ -10910,20 +12246,20 @@ SELECT
0 as PackageID,
0 as AccountID
FROM @Users AS TU
-INNER JOIN
+INNER JOIN
(
SELECT ItemID, TextSearch, ColumnType
FROM(
SELECT U0.UserID as ItemID, U0.Username as TextSearch, @columnUsername as ColumnType
FROM dbo.Users AS U0
UNION
-SELECT U1.UserID as ItemID, U1.Email as TextSearch, @columnEmail as ColumnType
+SELECT U1.UserID as ItemID, U1.Email as TextSearch, @columnEmail as ColumnType
FROM dbo.Users AS U1
UNION
-SELECT U2.UserID as ItemID, U2.CompanyName as TextSearch, @columnCompanyName as ColumnType
+SELECT U2.UserID as ItemID, U2.CompanyName as TextSearch, @columnCompanyName as ColumnType
FROM dbo.Users AS U2
UNION
-SELECT U3.UserID as ItemID, U3.FirstName + '' '' + U3.LastName as TextSearch, @columnFullName as ColumnType
+SELECT U3.UserID as ItemID, U3.FirstName + '' '' + U3.LastName as TextSearch, @columnFullName as ColumnType
FROM dbo.Users AS U3) as U
WHERE TextSearch<>'' '' OR ISNULL(TextSearch, 0) > 0
)
@@ -10963,10 +12299,10 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
WHERE
dbo.CheckUserParent(@UserID, P.UserID) = 1
-
+
SET @curValue = cursor local for
SELECT
-
+
SI.ItemID as ItemID,
SI.ItemName as TextSearch,
STYPE.DisplayName as ColumnType,
@@ -10978,7 +12314,7 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
INNER JOIN ServiceItemTypes AS STYPE ON SI.ItemTypeID = STYPE.ItemTypeID
WHERE STYPE.Searchable = 1
UNION
- SELECT
+ SELECT
D.DomainID AS ItemID,
D.DomainName as TextSearch,
''Domain'' as ColumnType,
@@ -10993,14 +12329,14 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
EA.ItemID AS ItemID,
EA.AccountName as TextSearch,
''ExchangeAccount'' as ColumnType,
- ''ExchangeAccount'' as FullType,
+ ''ExchangeAccountMailbox'' as FullType,
SI2.PackageID as PackageID,
EA.AccountID as AccountID
FROM @ItemsService AS I2
INNER JOIN ServiceItems AS SI2 ON I2.ItemID = SI2.ItemID
INNER JOIN ExchangeAccounts AS EA ON I2.ItemID = EA.ItemID
';
-
+
SET @sqlSpace = @sqlSpace + ' open @curValue'
exec sp_executesql @sqlSpace, N'@UserID int, @FilterValue nvarchar(50), @ActorID int, @curValue cursor output',
@@ -11052,7 +12388,7 @@ DECLARE @ItemsReturn TABLE
PackageID int,
AccountID int
)
-INSERT INTO @ItemsReturn(ItemID, TextSearch, ColumnType, FullType, PackageID, AccountID)
+INSERT INTO @ItemsReturn(ItemID, TextSearch, ColumnType, FullType, PackageID, AccountID)
SELECT ItemID, TextSearch, ColumnType, FullType, PackageID, AccountID
FROM @ItemsAll AS IA WHERE (1 = 1) '
@@ -11090,3 +12426,143 @@ DEALLOCATE @curSpace
CLOSE @curUsers
DEALLOCATE @curUsers
RETURN
+
+
+IF EXISTS (SELECT TOP 1 * FROM ServiceItemTypes WHERE DisplayName = 'SharePointEnterpriseSiteCollection')
+BEGIN
+ DECLARE @item_type_id AS INT
+ SELECT @item_type_id = ItemTypeId FROM ServiceItemTypes WHERE DisplayName = 'SharePointEnterpriseSiteCollection'
+ UPDATE [dbo].[Quotas] SET ItemTypeID = @item_type_id WHERE QuotaId = 550
+END
+GO
+
+-- OneTimePassword
+IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Users' AND COLS.name='OneTimePasswordState')
+BEGIN
+ALTER TABLE [dbo].[Users] ADD
+ [OneTimePasswordState] int NULL
+END
+GO
+
+IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'SetUserOneTimePassword')
+DROP PROCEDURE SetUserOneTimePassword
+GO
+CREATE PROCEDURE [dbo].[SetUserOneTimePassword]
+(
+ @UserID int,
+ @Password nvarchar(200),
+ @OneTimePasswordState int
+)
+AS
+UPDATE Users
+SET Password = @Password, OneTimePasswordState = @OneTimePasswordState
+WHERE UserID = @UserID
+RETURN
+GO
+
+ALTER PROCEDURE [dbo].[GetUserByUsernameInternally]
+(
+ @Username nvarchar(50)
+)
+AS
+ SELECT
+ U.UserID,
+ U.RoleID,
+ U.StatusID,
+ U.SubscriberNumber,
+ U.LoginStatusId,
+ U.FailedLogins,
+ U.OwnerID,
+ U.Created,
+ U.Changed,
+ U.IsDemo,
+ U.Comments,
+ U.IsPeer,
+ U.Username,
+ U.Password,
+ U.FirstName,
+ U.LastName,
+ U.Email,
+ U.SecondaryEmail,
+ U.Address,
+ U.City,
+ U.State,
+ U.Country,
+ U.Zip,
+ U.PrimaryPhone,
+ U.SecondaryPhone,
+ U.Fax,
+ U.InstantMessenger,
+ U.HtmlMail,
+ U.CompanyName,
+ U.EcommerceEnabled,
+ U.[AdditionalParams],
+ U.OneTimePasswordState
+ FROM Users AS U
+ WHERE U.Username = @Username
+
+ RETURN
+GO
+
+ALTER PROCEDURE [dbo].[GetUserByIdInternally]
+(
+ @UserID int
+)
+AS
+ SELECT
+ U.UserID,
+ U.RoleID,
+ U.StatusID,
+ U.SubscriberNumber,
+ U.LoginStatusId,
+ U.FailedLogins,
+ U.OwnerID,
+ U.Created,
+ U.Changed,
+ U.IsDemo,
+ U.Comments,
+ U.IsPeer,
+ U.Username,
+ U.Password,
+ U.FirstName,
+ U.LastName,
+ U.Email,
+ U.SecondaryEmail,
+ U.Address,
+ U.City,
+ U.State,
+ U.Country,
+ U.Zip,
+ U.PrimaryPhone,
+ U.SecondaryPhone,
+ U.Fax,
+ U.InstantMessenger,
+ U.HtmlMail,
+ U.CompanyName,
+ U.EcommerceEnabled,
+ U.[AdditionalParams],
+ U.OneTimePasswordState
+ FROM Users AS U
+ WHERE U.UserID = @UserID
+
+ RETURN
+GO
+
+ALTER PROCEDURE [dbo].[ChangeUserPassword]
+(
+ @ActorID int,
+ @UserID int,
+ @Password nvarchar(200)
+)
+AS
+
+-- check actor rights
+IF dbo.CanUpdateUserDetails(@ActorID, @UserID) = 0
+RETURN
+
+UPDATE Users
+SET Password = @Password, OneTimePasswordState = 0
+WHERE UserID = @UserID
+
+RETURN
+GO
\ No newline at end of file
From 51645d124c870ee3faeb862ce2ba613ff49fdd40 Mon Sep 17 00:00:00 2001
From: McMak
Date: Tue, 19 May 2015 15:49:50 +0300
Subject: [PATCH 02/16] Installer: old to new update #2 - InstallLocation for
Control Panel item - Programs and Features.
---
WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs | 1 +
1 file changed, 1 insertion(+)
diff --git a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
index ebf7abe3..aeab6558 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
+++ b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
@@ -620,6 +620,7 @@
WSP_BASE
+
From 7fcbcb18d51ce461b9a55418ade51ca7cee2729c Mon Sep 17 00:00:00 2001
From: McMak
Date: Wed, 20 May 2015 11:14:32 +0300
Subject: [PATCH 03/16] Installer: old to new update #3
---
.../Sources/Setup.WIXInstaller/Product.wxs | 84 ++--
.../SchedulerServiceFiles.wxs | 2 +-
.../Common/SecurityUtils.cs | 2 +-
.../WebsitePanel.Setup/Common/WebUtils.cs | 4 +-
.../WebsitePanel.Setup/Internal/Adapter.cs | 5 -
.../WebsitePanel.WIXInstaller/Common/Tool.cs | 7 +
.../WebsitePanel.WIXInstaller/CustomAction.cs | 404 +++++++-----------
WebsitePanel/build.xml | 8 +-
8 files changed, 221 insertions(+), 295 deletions(-)
diff --git a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
index aeab6558..f45e3503 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
+++ b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
@@ -10,38 +10,38 @@
-
-
-
-
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -566,10 +566,7 @@
-
-
@@ -595,39 +592,54 @@
+
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- WSP_BASE
-
+ WSP_BASE
+
+
-
+
+
+
+
+
+
+
@@ -650,7 +662,7 @@
-
+
@@ -669,10 +681,10 @@
-
+
- (NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND NOT(DB_AUTH = "Windows Authentication")
+ (NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND NOT(DB_AUTH = "Windows Authentication") AND (COMPFOUND_ESERVER="0")
- (NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND (DB_AUTH = "Windows Authentication")
+ (NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND (DB_AUTH = "Windows Authentication") AND (COMPFOUND_ESERVER="0")
-
+
-
+
diff --git a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/SchedulerServiceFiles.wxs b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/SchedulerServiceFiles.wxs
index f8f8840f..a1a1f9ee 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/SchedulerServiceFiles.wxs
+++ b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/SchedulerServiceFiles.wxs
@@ -5,7 +5,7 @@
-
+
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs
index 072723fb..3ffc2452 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SecurityUtils.cs
@@ -398,7 +398,7 @@ namespace WebsitePanel.Setup
///
/// Check for existing user
///
- internal static bool UserExists(string domain, string userName)
+ public static bool UserExists(string domain, string userName)
{
bool found = false;
// check whether user account already exists
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs
index 6b3781b8..ccad6dd3 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/WebUtils.cs
@@ -768,7 +768,7 @@ namespace WebsitePanel.Setup
///
///
///
- internal static bool ApplicationPoolExists(string name)
+ public static bool ApplicationPoolExists(string name)
{
WmiHelper wmi = new WmiHelper("root\\MicrosoftIISv2");
return(wmi.ExecuteQuery(
@@ -780,7 +780,7 @@ namespace WebsitePanel.Setup
///
///
///
- internal static bool IIS7ApplicationPoolExists(string name)
+ public static bool IIS7ApplicationPoolExists(string name)
{
ServerManager serverManager = new ServerManager();
bool ret = (serverManager.ApplicationPools[name] != null);
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
index 1c873917..ea06fd77 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
@@ -2859,7 +2859,6 @@ namespace WebsitePanel.Setup.Internal
{
List list = new List();
InstallAction action = null;
-
//database
string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString");
if (!String.IsNullOrEmpty(connectionString))
@@ -2871,7 +2870,6 @@ namespace WebsitePanel.Setup.Internal
action.Description = string.Format("Backing up database {0}...", database);
list.Add(action);
}
-
//directory
string path = AppConfig.GetComponentSettingStringValue(componentId, "InstallFolder");
if (!string.IsNullOrEmpty(path))
@@ -2881,7 +2879,6 @@ namespace WebsitePanel.Setup.Internal
action.Description = string.Format("Backing up directory {0}...", path);
list.Add(action);
}
-
//config
action = new InstallAction(ActionTypes.BackupConfig);
action.Description = "Backing up configuration settings...";
@@ -2889,9 +2886,7 @@ namespace WebsitePanel.Setup.Internal
list.Add(action);
return list;
-
}
-
private void UpdateWebSiteBindings()
{
string component = Context.ComponentFullName;
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/Common/Tool.cs b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/Common/Tool.cs
index 4b2b20c7..ffd229c8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/Common/Tool.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/Common/Tool.cs
@@ -43,6 +43,13 @@ namespace WebsitePanel.WIXInstaller.Common
Result |= CheckAspNetRegValue(LMKey);
return Result;
}
+ public static bool AppPoolExists(string Pool)
+ {
+ if (GetWebServerVersion().Major > MINIMUM_WEBSERVER_MAJOR_VERSION)
+ return WebUtils.IIS7ApplicationPoolExists(Pool);
+ else
+ return WebUtils.ApplicationPoolExists(Pool);
+ }
public static bool CheckAspNetRegValue(RegistryKey BaseKey)
{
var WebComponentsKey = "SOFTWARE\\Microsoft\\InetStp\\Components";
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
index 0ff7782e..ffaf53c2 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
@@ -52,9 +52,44 @@ namespace WebsitePanel.WIXInstaller
{
public static List SysDb = new List { "tempdb", "master", "model", "msdb" };
public const string CustomDataDelimiter = "-=del=-";
+ public const string SQL_AUTH_WINDOWS = "Windows Authentication";
+ public const string SQL_AUTH_SERVER = "SQL Server Authentication";
#region CustomActions
[CustomAction]
+ public static ActionResult OnServerPrepare(Session Ctx)
+ {
+ PopUpDebugger();
+
+ Ctx.AttachToSetupLog();
+ Log.WriteStart("OnServerPrepare");
+ GetPrepareScript(Ctx).Run();
+ Log.WriteEnd("OnServerPrepare");
+ return ActionResult.Success;
+ }
+ [CustomAction]
+ public static ActionResult OnEServerPrepare(Session Ctx)
+ {
+ PopUpDebugger();
+
+ Ctx.AttachToSetupLog();
+ Log.WriteStart("OnEServerPrepare");
+ GetPrepareScript(Ctx).Run();
+ Log.WriteEnd("OnEServerPrepare");
+ return ActionResult.Success;
+ }
+ [CustomAction]
+ public static ActionResult OnPortalPrepare(Session Ctx)
+ {
+ PopUpDebugger();
+
+ Ctx.AttachToSetupLog();
+ Log.WriteStart("OnPortalPrepare");
+ GetPrepareScript(Ctx).Run();
+ Log.WriteEnd("OnPortalPrepare");
+ return ActionResult.Success;
+ }
+ [CustomAction]
public static ActionResult MaintenanceServer(Session session)
{
var Result = ActionResult.Success;
@@ -84,104 +119,134 @@ namespace WebsitePanel.WIXInstaller
[CustomAction]
public static ActionResult PreFillSettings(Session session)
{
- PopUpDebugger();
- var Ctx = session;
- Ctx.AttachToSetupLog();
- Log.WriteStart("PreFillSettings");
- var WSP = Ctx["WEBSITEPANELDIR"];
- var CfgStr = string.Empty;
- Func GetCfg = (string CfgDir) =>
+ Func HaveInstalledComponents = (string CfgFullPath) =>
{
- if (Directory.Exists(CfgDir))
+ var ComponentsPath = "//components";
+ return File.Exists(CfgFullPath) ? BackupRestore.HaveChild(CfgFullPath, ComponentsPath) : false;
+ };
+ Func, string> FindMainConfig = (IEnumerable Dirs) =>
+ {
+ // Looking into platform specific Program Files.
{
- var CfgFile = Path.Combine(CfgDir, BackupRestore.MainConfig);
- if (File.Exists(CfgFile) && BackupRestore.HaveChild(CfgFile, "//components"))
- return CfgFile;
+ var InstallerMainCfg = "WebsitePanel.Installer.exe.config";
+ var InstallerName = "WebsitePanel Installer";
+ var PFolderType = Environment.Is64BitOperatingSystem ? Environment.SpecialFolder.ProgramFilesX86 : Environment.SpecialFolder.ProgramFiles;
+ var PFiles = Environment.GetFolderPath(PFolderType);
+ var Result = Path.Combine(PFiles, InstallerName, InstallerMainCfg);
+ if (HaveInstalledComponents(Result))
+ return Result;
+ }
+ // Looking into specific directories.
+ foreach (var Dir in Dirs)
+ {
+ var Result = Path.Combine(Dir, BackupRestore.MainConfig);
+ if (HaveInstalledComponents(Result))
+ {
+ return Result;
+ }
else
{
- var Names = new string[] { Global.Server.ComponentName, Global.EntServer.ComponentName, Global.WebPortal.ComponentName };
- foreach (var Name in Names)
+ var ComponentNames = new string[] { Global.Server.ComponentName, Global.EntServer.ComponentName, Global.WebPortal.ComponentName };
+ foreach (var Name in ComponentNames)
{
- var Backup = BackupRestore.Find(CfgDir, Global.DefaultProductName, Name);
- if (Backup != null && BackupRestore.HaveChild(Backup.BackupMainConfigFile, "//components"))
- return CfgStr = Backup.BackupMainConfigFile;
+ var Backup = BackupRestore.Find(Dir, Global.DefaultProductName, Name);
+ if (Backup != null && HaveInstalledComponents(Backup.BackupMainConfigFile))
+ return Backup.BackupMainConfigFile;
}
}
}
- return string.Empty;
+ return null;
};
- Func SetProperty = (Session CtxSession, string Prop, string Value) =>
- {
- if(!string.IsNullOrWhiteSpace(Value))
- {
- CtxSession[Prop] = Value;
- return true;
- }
- return false;
- };
- CfgStr = GetCfg(WSP);
- if(string.IsNullOrWhiteSpace(CfgStr))
- {
- var Drives = from Drive in DriveInfo.GetDrives() where Drive.DriveType == DriveType.Fixed select Drive;
- foreach(var Drive in Drives)
- {
- var Dir = Path.Combine(Drive.RootDirectory.FullName, Global.DefaultProductName);
- CfgStr = GetCfg(Dir);
- if (!string.IsNullOrWhiteSpace(CfgStr))
- break;
- }
- }
- if (!string.IsNullOrWhiteSpace(CfgStr))
+
+ var Ctx = session;
+ Ctx.AttachToSetupLog();
+
+ PopUpDebugger();
+
+ Log.WriteStart("PreFillSettings");
+ var WSP = Ctx["WSP_INSTALL_DIR"];
+ var DirList = new List();
+ DirList.Add(WSP);
+ DirList.AddRange(from Drive in DriveInfo.GetDrives()
+ where Drive.DriveType == DriveType.Fixed
+ select Path.Combine(Drive.RootDirectory.FullName, Global.DefaultProductName));
+ var CfgPath = FindMainConfig(DirList);
+ if (!string.IsNullOrWhiteSpace(CfgPath))
{
var EServerUrl = string.Empty;
- AppConfig.LoadConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = CfgStr });
+ AppConfig.LoadConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = CfgPath });
var CtxVars = new SetupVariables();
- CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.Server.ComponentCode);
+ CtxVars.ComponentId = WiXSetup.GetComponentID(CfgPath, Global.Server.ComponentCode);
if (!string.IsNullOrWhiteSpace(CtxVars.ComponentId))
- {
+ {
AppConfig.LoadComponentSettings(CtxVars);
- Ctx["COMPFOUND_SERVER"] = "1";
+
SetProperty(Ctx, "PI_SERVER_IP", CtxVars.WebSiteIP);
SetProperty(Ctx, "PI_SERVER_PORT", CtxVars.WebSitePort);
SetProperty(Ctx, "PI_SERVER_HOST", CtxVars.WebSiteDomain);
SetProperty(Ctx, "PI_SERVER_LOGIN", CtxVars.UserAccount);
- SetProperty(Ctx, "PI_SERVER_PASSWORD", CtxVars.UserPassword);
- SetProperty(Ctx, "PI_SERVER_PASSWORD_CONFIRM",CtxVars.UserPassword);
SetProperty(Ctx, "PI_SERVER_DOMAIN", CtxVars.UserDomain);
- SetProperty(Ctx, "SERVER_ACCESS_PASSWORD", CtxVars.ServerPassword);
- SetProperty(Ctx, "SERVER_ACCESS_PASSWORD_CONFIRM", CtxVars.ServerPassword);
+
+ SetProperty(Ctx, "PI_SERVER_INSTALL_DIR", CtxVars.InstallFolder);
+ SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
+
+ var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
+ bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
+
+ Ctx["COMPFOUND_SERVER"] = (HaveAccount && HavePool) ? YesNo.Yes : YesNo.No;
}
- CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.EntServer.ComponentCode);
+ CtxVars.ComponentId = WiXSetup.GetComponentID(CfgPath, Global.EntServer.ComponentCode);
if (!string.IsNullOrWhiteSpace(CtxVars.ComponentId))
{
AppConfig.LoadComponentSettings(CtxVars);
- Ctx["COMPFOUND_ESERVER"] = "1";
+
SetProperty(Ctx, "PI_ESERVER_IP", CtxVars.WebSiteIP);
SetProperty(Ctx, "PI_ESERVER_PORT", CtxVars.WebSitePort);
SetProperty(Ctx, "PI_ESERVER_HOST", CtxVars.WebSiteDomain);
SetProperty(Ctx, "PI_ESERVER_LOGIN", CtxVars.UserAccount);
- SetProperty(Ctx, "PI_ESERVER_PASSWORD", CtxVars.UserPassword);
- SetProperty(Ctx, "PI_ESERVER_PASSWORD_CONFIRM", CtxVars.UserPassword);
SetProperty(Ctx, "PI_ESERVER_DOMAIN", CtxVars.UserDomain);
- SetProperty(Ctx, "SERVERADMIN_PASSWORD", CtxVars.ServerAdminPassword);
- SetProperty(Ctx, "SERVERADMIN_PASSWORD_CONFIRM", CtxVars.ServerAdminPassword);
EServerUrl = string.Format("http://{0}:{1}", CtxVars.WebSiteIP, CtxVars.WebSitePort);
+
+ SetProperty(Ctx, "PI_ESERVER_INSTALL_DIR", CtxVars.InstallFolder);
+ SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
+
+ var ConnStr = new SqlConnectionStringBuilder(CtxVars.DbInstallConnectionString);
+ SetProperty(Ctx, "DB_CONN", ConnStr.ToString());
+ SetProperty(Ctx, "DB_SERVER", ConnStr.DataSource);
+ SetProperty(Ctx, "DB_DATABASE", ConnStr.InitialCatalog);
+ SetProperty(Ctx, "DB_AUTH", ConnStr.IntegratedSecurity ? SQL_AUTH_WINDOWS : SQL_AUTH_SERVER);
+ if (!ConnStr.IntegratedSecurity)
+ {
+ SetProperty(Ctx, "DB_LOGIN", ConnStr.UserID);
+ SetProperty(Ctx, "DB_PASSWORD", ConnStr.Password);
+ }
+
+ var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
+ bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
+
+ Ctx["COMPFOUND_ESERVER"] = (HaveAccount && HavePool) ? YesNo.Yes : YesNo.No;
}
- CtxVars.ComponentId = WiXSetup.GetComponentID(CfgStr, Global.WebPortal.ComponentCode);
+ CtxVars.ComponentId = WiXSetup.GetComponentID(CfgPath, Global.WebPortal.ComponentCode);
if (!string.IsNullOrWhiteSpace(CtxVars.ComponentId))
{
AppConfig.LoadComponentSettings(CtxVars);
- Ctx["COMPFOUND_PORTAL"] = "1";
+
SetProperty(Ctx, "PI_PORTAL_IP", CtxVars.WebSiteIP);
SetProperty(Ctx, "PI_PORTAL_PORT", CtxVars.WebSitePort);
SetProperty(Ctx, "PI_PORTAL_HOST", CtxVars.WebSiteDomain);
SetProperty(Ctx, "PI_PORTAL_LOGIN", CtxVars.UserAccount);
- SetProperty(Ctx, "PI_PORTAL_PASSWORD", CtxVars.UserPassword);
- SetProperty(Ctx, "PI_PORTAL_PASSWORD_CONFIRM", CtxVars.UserPassword);
SetProperty(Ctx, "PI_PORTAL_DOMAIN", CtxVars.UserDomain);
if (!SetProperty(Ctx, "PI_ESERVER_URL", CtxVars.EnterpriseServerURL))
if (!SetProperty(Ctx, "PI_ESERVER_URL", EServerUrl))
SetProperty(Ctx, "PI_ESERVER_URL", Global.WebPortal.DefaultEntServURL);
+
+ SetProperty(Ctx, "PI_PORTAL_INSTALL_DIR", CtxVars.InstallFolder);
+ SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
+
+ var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
+ bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
+
+ Ctx["COMPFOUND_PORTAL"] = (HaveAccount && HavePool) ? YesNo.Yes : YesNo.No;
}
}
TryApllyNewPassword(Ctx, "PI_SERVER_PASSWORD");
@@ -202,8 +267,8 @@ namespace WebsitePanel.WIXInstaller
try
{
Log.WriteStart("InstallWebFeatures");
- if(Tool.GetIsWebRoleInstalled())
- {
+ if (Tool.GetIsWebRoleInstalled())
+ {
if (!Tool.GetIsWebFeaturesInstalled())
{
Log.WriteInfo("InstallWebFeatures: ASP.NET.");
@@ -221,12 +286,12 @@ namespace WebsitePanel.WIXInstaller
}
Log.WriteInfo("InstallWebFeatures: done.");
}
- catch(Exception ex)
+ catch (Exception ex)
{
Log.WriteError(string.Format("InstallWebFeatures: fail - {0}.", ex.ToString()));
Result = ActionResult.Failure;
}
- if(!string.IsNullOrWhiteSpace(Msg))
+ if (!string.IsNullOrWhiteSpace(Msg))
Log.WriteInfo(string.Format("InstallWebFeatures Tool Log: {0}.", Msg));
Log.WriteEnd("InstallWebFeatures");
return Result;
@@ -418,7 +483,7 @@ namespace WebsitePanel.WIXInstaller
foreach (var Db in GetDbList(ConnStr: session["DB_CONN"], ForbiddenNames: SysDb))
{
Ctrl.AddItem(Db);
- session["DB_SELECT"] = Db; // Adds available DBs to installer log.
+ session["DB_SELECT"] = Db; // Adds available DBs to installer log and selects latest.
}
else
session["DB_SELECT"] = "";
@@ -427,88 +492,15 @@ namespace WebsitePanel.WIXInstaller
[CustomAction]
public static ActionResult CheckConnectionUI(Session session)
{
- string ConnStr = session["DB_AUTH"].Equals("Windows Authentication") ? GetConnectionString(session["DB_SERVER"], "master") :
+ string ConnStr = session["DB_AUTH"].Equals(SQL_AUTH_WINDOWS) ? GetConnectionString(session["DB_SERVER"], "master") :
GetConnectionString(session["DB_SERVER"], "master", session["DB_LOGIN"], session["DB_PASSWORD"]);
string msg;
bool Result = CheckConnection(ConnStr, out msg);
- session["DB_CONN_CORRECT"] = Result ? "1" : "0";
+ session["DB_CONN_CORRECT"] = Result ? YesNo.Yes: YesNo.No;
session["DB_CONN"] = Result ? ConnStr : "";
session["DB_CONN_MSG"] = msg;
return ActionResult.Success;
}
-
- [CustomAction]
- public static ActionResult FinalizeInstall(Session session)
- {
- /*var connectionString = GetCustomActionProperty(session, "ConnectionString").Replace(CustomDataDelimiter, ";");
- var serviceFolder = GetCustomActionProperty(session, "ServiceFolder");
- var previousConnectionString = GetCustomActionProperty(session, "PreviousConnectionString").Replace(CustomDataDelimiter, ";");
- var previousCryptoKey = GetCustomActionProperty(session, "PreviousCryptoKey");
-
- if (string.IsNullOrEmpty(serviceFolder))
- {
- return ActionResult.Success;
- }
-
- connectionString = string.IsNullOrEmpty(previousConnectionString)
- ? connectionString
- : previousConnectionString;
-
- ChangeConfigString("/configuration/connectionStrings/add[@name='EnterpriseServer']", "connectionString", connectionString, serviceFolder);
- ChangeConfigString("/configuration/appSettings/add[@key='WebsitePanel.CryptoKey']", "value", previousCryptoKey, serviceFolder);
- InstallService(serviceFolder);*/
-
- return ActionResult.Success;
- }
-
- [CustomAction]
- public static ActionResult FinalizeUnInstall(Session session)
- {
- // UnInstallService();
-
- return ActionResult.Success;
- }
-
- [CustomAction]
- public static ActionResult PreInstallationAction(Session session)
- {
- session["SKIPCONNECTIONSTRINGSTEP"] = "0";
-
- session["SERVICEFOLDER"] = session["INSTALLFOLDER"];
-
- var servicePath = /*SecurityUtils.GetServicePath("WebsitePanel Scheduler")*/"";
-
- if (!string.IsNullOrEmpty(servicePath))
- {
- string path = Path.Combine(servicePath, "WebsitePanel.SchedulerService.exe.config");
-
- if (File.Exists(path))
- {
- using (var reader = new StreamReader(path))
- {
- string content = reader.ReadToEnd();
- var pattern = new Regex(@"(?<=)");
- Match match = pattern.Match(content);
- session["PREVIOUSCRYPTOKEY"] = match.Value;
-
- var connectionStringPattern = new Regex(@"(?<=)");
- match = connectionStringPattern.Match(content);
- session["PREVIOUSCONNECTIONSTRING"] = match.Value.Replace(";", CustomDataDelimiter);
- }
-
- session["SKIPCONNECTIONSTRINGSTEP"] = "1";
-
- if (string.IsNullOrEmpty(session["SERVICEFOLDER"]))
- {
- session["SERVICEFOLDER"] = servicePath;
- }
- }
-
- }
-
- return ActionResult.Success;
- }
-
[CustomAction]
public static ActionResult PrereqCheck(Session session)
{
@@ -556,102 +548,14 @@ namespace WebsitePanel.WIXInstaller
}
#endregion
- private static void InstallService(string installFolder)
- {
- try
- {
- var schedulerService =
- ServiceController.GetServices().FirstOrDefault(
- s => s.DisplayName.Equals("WebsitePanel Scheduler", StringComparison.CurrentCultureIgnoreCase));
-
- if (schedulerService != null)
- {
- StopService(schedulerService.ServiceName);
-
- SecurityUtils.DeleteService(schedulerService.ServiceName);
- }
-
- ManagedInstallerClass.InstallHelper(new[] { "/i", Path.Combine(installFolder, "WebsitePanel.SchedulerService.exe") });
-
- StartService("WebsitePanel Scheduler");
- }
- catch (Exception)
- {
- }
- }
-
- private static void UnInstallService()
- {
- try
- {
- var schedulerService =
- ServiceController.GetServices().FirstOrDefault(
- s => s.DisplayName.Equals("WebsitePanel Scheduler", StringComparison.CurrentCultureIgnoreCase));
-
- if (schedulerService != null)
- {
- StopService(schedulerService.ServiceName);
-
- SecurityUtils.DeleteService(schedulerService.ServiceName);
- }
- }
- catch (Exception)
- {
- }
- }
-
- private static void ChangeConfigString(string nodePath, string attrToChange, string value, string installFolder)
- {
- string path = Path.Combine(installFolder, "WebsitePanel.SchedulerService.exe.config");
-
- if (!File.Exists(path))
- {
- return;
- }
-
- XmlDocument xmldoc = new XmlDocument();
- xmldoc.Load(path);
-
- XmlElement node = xmldoc.SelectSingleNode(nodePath) as XmlElement;
-
- if (node != null)
- {
- node.SetAttribute(attrToChange, value);
-
- xmldoc.Save(path);
- }
- }
-
- private static void StopService(string serviceName)
- {
- var sc = new ServiceController(serviceName);
-
- if (sc.Status == ServiceControllerStatus.Running)
- {
- sc.Stop();
- sc.WaitForStatus(ServiceControllerStatus.Stopped);
- }
- }
-
- private static void StartService(string serviceName)
- {
- var sc = new ServiceController(serviceName);
-
- if (sc.Status == ServiceControllerStatus.Stopped)
- {
- sc.Start();
- sc.WaitForStatus(ServiceControllerStatus.Running);
- }
- }
-
private static string GetConnectionString(string serverName, string databaseName)
{
- return string.Format("Server={0};database={1};Trusted_Connection=true;", serverName, databaseName)/*.Replace(";", CustomDataDelimiter)*/;
+ return string.Format("Server={0};database={1};Trusted_Connection=true;", serverName, databaseName);
}
private static string GetConnectionString(string serverName, string databaseName, string login, string password)
{
- return string.Format("Server={0};database={1};uid={2};password={3};", serverName, databaseName, login, password)/*.Replace(";", CustomDataDelimiter)*/;
+ return string.Format("Server={0};database={1};uid={2};password={3};", serverName, databaseName, login, password);
}
static bool CheckConnection(string ConnStr, out string Info)
{
@@ -671,16 +575,6 @@ namespace WebsitePanel.WIXInstaller
}
return Result;
}
-
- private static string GetCustomActionProperty(Session session, string key)
- {
- if (session.CustomActionData.ContainsKey(key))
- {
- return session.CustomActionData[key].Replace("-=-", ";");
- }
-
- return string.Empty;
- }
private static void AddCheck(ListViewCtrl view, Session session, string PropertyID)
{
view.AddItem(session[PropertyID] == YesNo.Yes, session[PropertyID + "_TITLE"]);
@@ -834,15 +728,6 @@ namespace WebsitePanel.WIXInstaller
foreach (var Msg in Msgs)
AddTo(Ctx, "CUSTOM_INSTALL_TEXT", Msg); ;
}
-
- internal static string GetProperty(Session Ctx, string Property)
- {
- if (Ctx.CustomActionData.ContainsKey(Property))
- return Ctx[Property];
- else
- return string.Empty;
- }
-
private static ActionResult ProcessInstall(Session Ctx, WiXInstallType InstallType)
{
IWiXSetup Install = null;
@@ -911,6 +796,33 @@ namespace WebsitePanel.WIXInstaller
Log.WriteInfo("New password was applied to " + Id);
}
}
+ private static string GetProperty(Session Ctx, string Property)
+ {
+ if (Ctx.CustomActionData.ContainsKey(Property))
+ return Ctx[Property];
+ else
+ return string.Empty;
+ }
+ private static bool SetProperty(Session CtxSession, string Prop, string Value)
+ {
+ if (!string.IsNullOrWhiteSpace(Value))
+ {
+ CtxSession[Prop] = Value;
+ return true;
+ }
+ return false;
+ }
+ private static SetupScript GetPrepareScript(Session Ctx)
+ {
+ var CtxVars = new SetupVariables();
+ WiXSetup.FillFromSession(Ctx.CustomActionData, CtxVars);
+ CtxVars.IISVersion = Tool.GetWebServerVersion();
+ SetupScript Result = new ExpressScript(CtxVars);
+ Result.Actions.Add(new InstallAction(ActionTypes.StopApplicationPool) { SetupVariables = CtxVars });
+ Result.Actions.Add(new InstallAction(ActionTypes.Backup) { SetupVariables = CtxVars });
+ Result.Actions.Add(new InstallAction(ActionTypes.DeleteDirectory) { SetupVariables = CtxVars });
+ return Result;
+ }
}
public static class SessionExtension
{
diff --git a/WebsitePanel/build.xml b/WebsitePanel/build.xml
index e0bec863..dce6efa3 100644
--- a/WebsitePanel/build.xml
+++ b/WebsitePanel/build.xml
@@ -366,10 +366,10 @@
-
-
-
-
+
+
+
+
From b2bb23ea136452cd87e64b139665ac9e27354bca Mon Sep 17 00:00:00 2001
From: McMak
Date: Wed, 20 May 2015 16:19:56 +0300
Subject: [PATCH 04/16] Installer: old to new update #4
---
.../Sources/Setup.WIXInstaller/Product.wxs | 24 +++++++---
.../Actions/EntServerActionManager.cs | 12 +++++
.../Actions/ServerActionManager.cs | 10 ++++-
.../WebsitePanel.Setup/Common/FileUtils.cs | 4 +-
.../Common/SetupVariables.cs | 5 +++
.../WebsitePanel.Setup/Internal/Adapter.cs | 45 ++++++++++++++++---
.../WebsitePanel.WIXInstaller/CustomAction.cs | 27 ++++++++---
7 files changed, 106 insertions(+), 21 deletions(-)
diff --git a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
index f45e3503..bfd91d56 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
+++ b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
@@ -565,6 +565,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -593,23 +603,23 @@
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
index 3680e837..4afab84d 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
@@ -63,6 +63,9 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
+
try
{
OnInstallProgressChanged(LogStartInstallMessage, 0);
@@ -232,6 +235,9 @@ namespace WebsitePanel.Setup.Actions
{
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
+
try
{
//
@@ -330,6 +336,9 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
+
try
{
Log.WriteStart("Updating serveradmin password");
@@ -389,6 +398,9 @@ namespace WebsitePanel.Setup.Actions
{
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
+
Log.WriteStart("Updating web.config file (connection string)");
var file = Path.Combine(vars.InstallationFolder, vars.ConfigurationFile);
vars.ConnectionString = String.Format(vars.ConnectionString, vars.DatabaseServer, vars.Database, vars.Database, vars.DatabaseUserPassword);
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
index 05f14d9d..57f60eb7 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
@@ -151,6 +151,8 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
// Exit with an error if Windows account with the same name already exists
if (SecurityUtils.UserExists(vars.UserDomain, vars.UserAccount))
throw new Exception(UserAccountExists);
@@ -394,7 +396,7 @@ namespace WebsitePanel.Setup.Actions
}
// This flag is the opposite of poolExists flag
- vars.NewWebApplicationPool = !poolExists;
+ vars.NewWebApplicationPool = !poolExists || vars.ComponentExists;
if (poolExists)
{
@@ -501,6 +503,9 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
+
var siteName = vars.ComponentFullName;
var ip = vars.WebSiteIP;
var port = vars.WebSitePort;
@@ -774,6 +779,9 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
+ if (vars.ComponentExists)
+ return;
+
try
{
Begin(LogStartInstallMessage);
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs
index 8ce06987..ecab1061 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/FileUtils.cs
@@ -335,10 +335,10 @@ namespace WebsitePanel.Setup
return files;
}
- public static void CopyFileToFolder(string sourceFile, string destinationFolder)
+ public static void CopyFileToFolder(string sourceFile, string destinationFolder, string destinationFileName = "")
{
string fileName = Path.GetFileName(sourceFile);
- string destinationFile = Path.Combine(destinationFolder, fileName);
+ string destinationFile = Path.Combine(destinationFolder, string.IsNullOrWhiteSpace(destinationFileName) ? fileName : destinationFileName);
CopyFile(new FileInfo(sourceFile), destinationFile);
}
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
index 91184c43..15cbc217 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
@@ -249,6 +249,11 @@ namespace WebsitePanel.Setup
public string BaseDirectory { get; set; }
+ public string SpecialBaseDirectory { get; set; }
+ public IDictionary FileNameMap { get; set; }
+
+ public bool ComponentExists { get; set; }
+
public string UpdateVersion { get; set; }
public string EnterpriseServerURL { get; set; }
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
index ea06fd77..2deea1a8 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
@@ -163,6 +163,8 @@ namespace WebsitePanel.Setup.Internal
Utils.GetStringSetupParameter(Hash, Global.Parameters.DbServerAdminPassword));
Dst.BaseDirectory = Utils.GetStringSetupParameter(Hash, Global.Parameters.BaseDirectory);
+ Dst.ComponentId = Utils.GetStringSetupParameter(Hash, Global.Parameters.ComponentId);
+ Dst.ComponentExists = string.IsNullOrWhiteSpace(Dst.ComponentId) ? false : true;
}
public static string GetFullConfigPath(SetupVariables Ctx)
{
@@ -2739,7 +2741,7 @@ namespace WebsitePanel.Setup.Internal
BackupDatabase(action.ConnectionString, action.Name);
break;
case ActionTypes.BackupConfig:
- BackupConfig(action.Path, destinationDirectory);
+ BackupConfig(action.Path, destinationDirectory, action.SetupVariables != null ? action.SetupVariables.FileNameMap : null);
break;
}
}
@@ -2755,7 +2757,7 @@ namespace WebsitePanel.Setup.Internal
}
}
- private void BackupConfig(string path, string backupDirectory)
+ private void BackupConfig(string path, string backupDirectory, IDictionary NameMap = null)
{
try
{
@@ -2772,7 +2774,7 @@ namespace WebsitePanel.Setup.Internal
string[] files = Directory.GetFiles(path, "*.config", SearchOption.TopDirectoryOnly);
foreach (string file in files)
{
- FileUtils.CopyFileToFolder(file, destination);
+ FileUtils.CopyFileToFolder(file, destination, GetMappedFileName(file, NameMap));
}
Log.WriteEnd("Backed up system configuration");
InstallLog.AppendLine("- Backed up system configuration");
@@ -2786,6 +2788,17 @@ namespace WebsitePanel.Setup.Internal
}
}
+ private string GetMappedFileName(string FullFileName, IDictionary Map)
+ {
+ if (Map == null)
+ return "";
+ string Key = new FileInfo(FullFileName).Name;
+ if (Map.Keys.Contains(Key))
+ return Map[Key];
+ else
+ return "";
+ }
+
private void BackupDatabase(string connectionString, string database)
{
try
@@ -2881,10 +2894,14 @@ namespace WebsitePanel.Setup.Internal
}
//config
action = new InstallAction(ActionTypes.BackupConfig);
- action.Description = "Backing up configuration settings...";
action.Path = Context.BaseDirectory;
+ action.Description = "Backing up configuration settings...";
+ if (!string.IsNullOrWhiteSpace(Context.SpecialBaseDirectory) )
+ {
+ action.Path = Context.SpecialBaseDirectory;
+ action.SetupVariables = Context;
+ }
list.Add(action);
-
return list;
}
private void UpdateWebSiteBindings()
@@ -4225,6 +4242,12 @@ namespace WebsitePanel.Setup.Internal
WiXThrow = true;
});
sam.Start();
+ if (Context.ComponentExists)
+ {
+ Context.UpdateVersion = Context.Release;
+ AppConfig.LoadComponentSettings(Context);
+ new RestoreScript(Context).Run();
+ }
}
catch (Exception ex)
{
@@ -4303,6 +4326,12 @@ namespace WebsitePanel.Setup.Internal
WiXThrow = true;
});
sam.Start();
+ if(Context.ComponentExists)
+ {
+ Context.UpdateVersion = Context.Release;
+ AppConfig.LoadComponentSettings(Context);
+ new RestoreScript(Context).Run();
+ }
}
catch (Exception ex)
{
@@ -4381,6 +4410,12 @@ namespace WebsitePanel.Setup.Internal
WiXThrow = true;
});
sam.Start();
+ if (Context.ComponentExists)
+ {
+ Context.UpdateVersion = Context.Release;
+ AppConfig.LoadComponentSettings(Context);
+ new RestoreScript(Context).Run();
+ }
}
catch (Exception ex)
{
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
index ffaf53c2..b268cead 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
@@ -159,7 +159,7 @@ namespace WebsitePanel.WIXInstaller
};
var Ctx = session;
- Ctx.AttachToSetupLog();
+ Ctx.AttachToSetupLog();
PopUpDebugger();
@@ -181,6 +181,9 @@ namespace WebsitePanel.WIXInstaller
{
AppConfig.LoadComponentSettings(CtxVars);
+ SetProperty(Ctx, "COMPFOUND_SERVER_ID", CtxVars.ComponentId);
+ SetProperty(Ctx, "COMPFOUND_SERVER_MAIN_CFG", CfgPath);
+
SetProperty(Ctx, "PI_SERVER_IP", CtxVars.WebSiteIP);
SetProperty(Ctx, "PI_SERVER_PORT", CtxVars.WebSitePort);
SetProperty(Ctx, "PI_SERVER_HOST", CtxVars.WebSiteDomain);
@@ -200,6 +203,9 @@ namespace WebsitePanel.WIXInstaller
{
AppConfig.LoadComponentSettings(CtxVars);
+ SetProperty(Ctx, "COMPFOUND_ESERVER_ID", CtxVars.ComponentId);
+ SetProperty(Ctx, "COMPFOUND_ESERVER_MAIN_CFG", CfgPath);
+
SetProperty(Ctx, "PI_ESERVER_IP", CtxVars.WebSiteIP);
SetProperty(Ctx, "PI_ESERVER_PORT", CtxVars.WebSitePort);
SetProperty(Ctx, "PI_ESERVER_HOST", CtxVars.WebSiteDomain);
@@ -220,7 +226,7 @@ namespace WebsitePanel.WIXInstaller
SetProperty(Ctx, "DB_LOGIN", ConnStr.UserID);
SetProperty(Ctx, "DB_PASSWORD", ConnStr.Password);
}
-
+
var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
@@ -231,6 +237,9 @@ namespace WebsitePanel.WIXInstaller
{
AppConfig.LoadComponentSettings(CtxVars);
+ SetProperty(Ctx, "COMPFOUND_PORTAL_ID", CtxVars.ComponentId);
+ SetProperty(Ctx, "COMPFOUND_PORTAL_MAIN_CFG", CfgPath);
+
SetProperty(Ctx, "PI_PORTAL_IP", CtxVars.WebSiteIP);
SetProperty(Ctx, "PI_PORTAL_PORT", CtxVars.WebSitePort);
SetProperty(Ctx, "PI_PORTAL_HOST", CtxVars.WebSiteDomain);
@@ -242,7 +251,7 @@ namespace WebsitePanel.WIXInstaller
SetProperty(Ctx, "PI_PORTAL_INSTALL_DIR", CtxVars.InstallFolder);
SetProperty(Ctx, "WSP_INSTALL_DIR", Directory.GetParent(CtxVars.InstallFolder).FullName);
-
+
var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
@@ -496,7 +505,7 @@ namespace WebsitePanel.WIXInstaller
GetConnectionString(session["DB_SERVER"], "master", session["DB_LOGIN"], session["DB_PASSWORD"]);
string msg;
bool Result = CheckConnection(ConnStr, out msg);
- session["DB_CONN_CORRECT"] = Result ? YesNo.Yes: YesNo.No;
+ session["DB_CONN_CORRECT"] = Result ? YesNo.Yes : YesNo.No;
session["DB_CONN"] = Result ? ConnStr : "";
session["DB_CONN_MSG"] = msg;
return ActionResult.Success;
@@ -799,7 +808,7 @@ namespace WebsitePanel.WIXInstaller
private static string GetProperty(Session Ctx, string Property)
{
if (Ctx.CustomActionData.ContainsKey(Property))
- return Ctx[Property];
+ return Ctx.CustomActionData[Property];
else
return string.Empty;
}
@@ -816,11 +825,17 @@ namespace WebsitePanel.WIXInstaller
{
var CtxVars = new SetupVariables();
WiXSetup.FillFromSession(Ctx.CustomActionData, CtxVars);
+ AppConfig.LoadConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = GetProperty(Ctx, "MainConfig") });
CtxVars.IISVersion = Tool.GetWebServerVersion();
+ CtxVars.ComponentId = GetProperty(Ctx, "ComponentId");
+ CtxVars.Version = AppConfig.GetComponentSettingStringValue(CtxVars.ComponentId, Global.Parameters.Release);
+ CtxVars.SpecialBaseDirectory = Directory.GetParent(GetProperty(Ctx, "MainConfig")).FullName;
+ CtxVars.FileNameMap = new Dictionary();
+ CtxVars.FileNameMap.Add(new FileInfo(GetProperty(Ctx, "MainConfig")).Name, BackupRestore.MainConfig);
SetupScript Result = new ExpressScript(CtxVars);
Result.Actions.Add(new InstallAction(ActionTypes.StopApplicationPool) { SetupVariables = CtxVars });
Result.Actions.Add(new InstallAction(ActionTypes.Backup) { SetupVariables = CtxVars });
- Result.Actions.Add(new InstallAction(ActionTypes.DeleteDirectory) { SetupVariables = CtxVars });
+ Result.Actions.Add(new InstallAction(ActionTypes.DeleteDirectory) { SetupVariables = CtxVars, Path = CtxVars.InstallFolder });
return Result;
}
}
From 68397679db9211c4cd857e8c1fbe63467fbae8d7 Mon Sep 17 00:00:00 2001
From: McMak
Date: Wed, 20 May 2015 16:25:46 +0300
Subject: [PATCH 05/16] Installer: old to new update #5 - upd: sql update
script.
---
WebsitePanel/Database/wix_update_db.sql | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/WebsitePanel/Database/wix_update_db.sql b/WebsitePanel/Database/wix_update_db.sql
index deb9d711..05f21309 100644
--- a/WebsitePanel/Database/wix_update_db.sql
+++ b/WebsitePanel/Database/wix_update_db.sql
@@ -12263,7 +12263,8 @@ SELECT U3.UserID as ItemID, U3.FirstName + '' '' + U3.LastName as TextSearch, @c
FROM dbo.Users AS U3) as U
WHERE TextSearch<>'' '' OR ISNULL(TextSearch, 0) > 0
)
- AS U ON TU.UserID = U.ItemID'
+ AS U ON TU.UserID = U.ItemID
+ ORDER BY TextSearch'
SET @sqlUsers = @sqlUsers + ' open @curValue'
@@ -12335,7 +12336,7 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
FROM @ItemsService AS I2
INNER JOIN ServiceItems AS SI2 ON I2.ItemID = SI2.ItemID
INNER JOIN ExchangeAccounts AS EA ON I2.ItemID = EA.ItemID
-';
+ ORDER BY TextSearch';
SET @sqlSpace = @sqlSpace + ' open @curValue'
@@ -12362,20 +12363,20 @@ DECLARE @ItemsAll TABLE
AccountID int
)
-FETCH NEXT FROM @curSpaceValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
+FETCH NEXT FROM @curUsersValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @ItemsAll(ItemID, TextSearch, ColumnType, FullType, PackageID, AccountID)
VALUES(@ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID)
-FETCH NEXT FROM @curSpaceValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
+FETCH NEXT FROM @curUsersValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
END
-FETCH NEXT FROM @curUsersValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
+FETCH NEXT FROM @curSpaceValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @ItemsAll(ItemID, TextSearch, ColumnType, FullType, PackageID, AccountID)
VALUES(@ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID)
-FETCH NEXT FROM @curUsersValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
+FETCH NEXT FROM @curSpaceValue INTO @ItemID, @TextSearch, @ColumnType, @FullType, @PackageID, @AccountID
END
DECLARE @ItemsReturn TABLE
@@ -12402,8 +12403,6 @@ SET @sqlReturn = @sqlReturn + ' AND IA.FullType = ''' + @FullType + '''';
IF @FilterValue <> ''
SET @sqlReturn = @sqlReturn + ' AND IA.' + @FilterColumn + ' LIKE @FilterValue '
-IF @SortColumn <> '' AND @SortColumn IS NOT NULL
-SET @sqlReturn = @sqlReturn + ' ORDER BY ' + @SortColumn + ' '
SET @sqlReturn = @sqlReturn + '
SELECT COUNT(ItemID) FROM @ItemsReturn;
SELECT DISTINCT(ColumnType) FROM @ItemsReturn WHERE (1 = 1) ';
From faee7a4315dfefd1b1037f9410eb355d6d97e89d Mon Sep 17 00:00:00 2001
From: McMak
Date: Thu, 21 May 2015 10:48:54 +0300
Subject: [PATCH 06/16] Installer: old to new update #5 - old to new update,
wix sql fixes.
---
.../Sources/Setup.WIXInstaller/Product.wxs | 37 ++++++++++++-------
.../Actions/EntServerActionManager.cs | 14 +------
.../Actions/ServerActionManager.cs | 12 +-----
.../WebsitePanel.Setup/Internal/Adapter.cs | 22 +----------
.../WebsitePanel.WIXInstaller/CustomAction.cs | 3 +-
5 files changed, 31 insertions(+), 57 deletions(-)
diff --git a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
index bfd91d56..42f1f4e9 100644
--- a/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
+++ b/WebsitePanel.Installer/Sources/Setup.WIXInstaller/Product.wxs
@@ -707,15 +707,21 @@
NOT (Remove="ALL") AND NOT(DB_AUTH = "Windows Authentication")
-
-
-
+
+
+
+
+
+
(NOT Installed AND NOT WIX_UPGRADE_DETECTED) AND (DB_AUTH = "Windows Authentication") AND (COMPFOUND_ESERVER="0")
@@ -729,13 +735,18 @@
NOT (Remove="ALL") AND (DB_AUTH = "Windows Authentication")
-
+
-
+ Sequence="11" ContinueOnError="no" ExecuteOnInstall="yes" ExecuteOnReinstall="yes" ExecuteOnUninstall="no"/>
+
+
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
index 4afab84d..52cf5a85 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/EntServerActionManager.cs
@@ -63,9 +63,6 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
-
try
{
OnInstallProgressChanged(LogStartInstallMessage, 0);
@@ -235,10 +232,7 @@ namespace WebsitePanel.Setup.Actions
{
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
-
- try
+ try
{
//
Log.WriteStart(String.Format("Creating database user {0}", vars.Database));
@@ -336,9 +330,6 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
-
try
{
Log.WriteStart("Updating serveradmin password");
@@ -398,9 +389,6 @@ namespace WebsitePanel.Setup.Actions
{
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
-
Log.WriteStart("Updating web.config file (connection string)");
var file = Path.Combine(vars.InstallationFolder, vars.ConfigurationFile);
vars.ConnectionString = String.Format(vars.ConnectionString, vars.DatabaseServer, vars.Database, vars.Database, vars.DatabaseUserPassword);
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
index 57f60eb7..5314f724 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Actions/ServerActionManager.cs
@@ -151,8 +151,6 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
// Exit with an error if Windows account with the same name already exists
if (SecurityUtils.UserExists(vars.UserDomain, vars.UserAccount))
throw new Exception(UserAccountExists);
@@ -503,10 +501,7 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
-
- var siteName = vars.ComponentFullName;
+ var siteName = vars.ComponentFullName;
var ip = vars.WebSiteIP;
var port = vars.WebSitePort;
var domain = vars.WebSiteDomain;
@@ -779,10 +774,7 @@ namespace WebsitePanel.Setup.Actions
void IInstallAction.Run(SetupVariables vars)
{
- if (vars.ComponentExists)
- return;
-
- try
+ try
{
Begin(LogStartInstallMessage);
//
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
index 2deea1a8..8a3dca10 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
@@ -198,7 +198,7 @@ namespace WebsitePanel.Setup.Internal
var mup = "MODE_UP";
var mrup = "MODE_RUP";
var Result = ModeExtension.Normal;
- if (Src.Keys.Contains(mup) && !string.IsNullOrWhiteSpace(Src[mup]))
+ if ((Src.Keys.Contains(mup) && !string.IsNullOrWhiteSpace(Src[mup])) || (Src.Keys.Contains("ComponentId") && !string.IsNullOrWhiteSpace(Src["ComponentId"])))
Result = ModeExtension.Restore;
else if (Src.Keys.Contains(mrup) && !string.IsNullOrWhiteSpace(Src[mrup]))
Result = ModeExtension.Backup;
@@ -3943,7 +3943,7 @@ namespace WebsitePanel.Setup.Internal
XmlDocumentMerge.KeyAttributes = new List { "name", "id", "key", "pageID", "localName", "xmlns", "privatePath", "moduleDefinitionID", "ref", "verb;path", "controlRenderingCompatibilityVersion;clientIDMode" };
XmlDocumentMerge.FrozenAttributes = new List
{
- new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/microsoft.web.services3/security/securityTokenManager/add", Attributes = new List() {"localName"} },
+ new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/microsoft.web.services3/security/securityTokenManager/add", Attributes = new List() {"type"} },
new XmlDocumentMerge.FrozenAttrTag(true) { Path="compilation", Attributes = new List() {"targetFramework"} },
new XmlDocumentMerge.FrozenAttrTag() { Path="configuration/startup/supportedRuntime", Attributes = new List() {"version", "sku" } }
};
@@ -4242,12 +4242,6 @@ namespace WebsitePanel.Setup.Internal
WiXThrow = true;
});
sam.Start();
- if (Context.ComponentExists)
- {
- Context.UpdateVersion = Context.Release;
- AppConfig.LoadComponentSettings(Context);
- new RestoreScript(Context).Run();
- }
}
catch (Exception ex)
{
@@ -4326,12 +4320,6 @@ namespace WebsitePanel.Setup.Internal
WiXThrow = true;
});
sam.Start();
- if(Context.ComponentExists)
- {
- Context.UpdateVersion = Context.Release;
- AppConfig.LoadComponentSettings(Context);
- new RestoreScript(Context).Run();
- }
}
catch (Exception ex)
{
@@ -4410,12 +4398,6 @@ namespace WebsitePanel.Setup.Internal
WiXThrow = true;
});
sam.Start();
- if (Context.ComponentExists)
- {
- Context.UpdateVersion = Context.Release;
- AppConfig.LoadComponentSettings(Context);
- new RestoreScript(Context).Run();
- }
}
catch (Exception ex)
{
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
index b268cead..70cffceb 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.WIXInstaller/CustomAction.cs
@@ -219,13 +219,14 @@ namespace WebsitePanel.WIXInstaller
var ConnStr = new SqlConnectionStringBuilder(CtxVars.DbInstallConnectionString);
SetProperty(Ctx, "DB_CONN", ConnStr.ToString());
SetProperty(Ctx, "DB_SERVER", ConnStr.DataSource);
- SetProperty(Ctx, "DB_DATABASE", ConnStr.InitialCatalog);
SetProperty(Ctx, "DB_AUTH", ConnStr.IntegratedSecurity ? SQL_AUTH_WINDOWS : SQL_AUTH_SERVER);
if (!ConnStr.IntegratedSecurity)
{
SetProperty(Ctx, "DB_LOGIN", ConnStr.UserID);
SetProperty(Ctx, "DB_PASSWORD", ConnStr.Password);
}
+ ConnStr = new SqlConnectionStringBuilder(CtxVars.ConnectionString);
+ SetProperty(Ctx, "DB_DATABASE", ConnStr.InitialCatalog);
var HaveAccount = SecurityUtils.UserExists(CtxVars.UserDomain, CtxVars.UserAccount);
bool HavePool = Tool.AppPoolExists(CtxVars.ApplicationPool);
From 27c5009510c8e2b7ec2d3d354a4f4c6bddb00ba7 Mon Sep 17 00:00:00 2001
From: vfedosevich
Date: Thu, 21 May 2015 05:01:17 -0700
Subject: [PATCH 07/16] Password Expiration link destination changed
---
.../HostedSolution/OrganizationController.cs | 5 ++---
WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config | 2 +-
2 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
index e33e9be2..40211154 100644
--- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
+++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/HostedSolution/OrganizationController.cs
@@ -1945,10 +1945,9 @@ namespace WebsitePanel.EnterpriseServer
SendUserPasswordEmail(owner, user, reason, mailTo, logoUrl, UserSettings.USER_PASSWORD_REQUEST_LETTER, "USER_PASSWORD_REQUEST_LETTER", finalStep);
}
- public static void SendUserExpirationPasswordEmail(UserInfo owner, OrganizationUser user, string reason,
- string mailTo, string logoUrl)
+ public static void SendUserExpirationPasswordEmail(UserInfo owner, OrganizationUser user, string reason, string mailTo, string logoUrl)
{
- SendUserPasswordEmail(owner, user, reason, user.PrimaryEmailAddress, logoUrl, UserSettings.USER_PASSWORD_EXPIRATION_LETTER, "USER_PASSWORD_EXPIRATION_LETTER", false);
+ SendUserPasswordEmail(owner, user, reason, user.PrimaryEmailAddress, logoUrl, UserSettings.USER_PASSWORD_EXPIRATION_LETTER, "USER_PASSWORD_EXPIRATION_LETTER", true);
}
public static void SendUserPasswordEmail(UserInfo owner, OrganizationUser user, string reason, string mailTo, string logoUrl, string settingsName, string taskName, bool finalStep)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config
index 1e2c7eb8..4ecdcebc 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config
+++ b/WebsitePanel/Sources/WebsitePanel.WebDavPortal/Web.config
@@ -87,7 +87,7 @@
-
+
From 848cbd4bb1d68b93cf37e9579daf91046d38dccd Mon Sep 17 00:00:00 2001
From: McMak
Date: Thu, 21 May 2015 15:49:02 +0300
Subject: [PATCH 08/16] Installer: old to new update #6 - add scheduler service
registration.
---
.../Common/InstallAction.cs | 3 +-
.../Common/SetupVariables.cs | 6 +-
.../WebsitePanel.Setup/Internal/Adapter.cs | 148 +++++++++++++-----
3 files changed, 119 insertions(+), 38 deletions(-)
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs
index 6cfa5953..832de5ff 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/InstallAction.cs
@@ -89,7 +89,8 @@ namespace WebsitePanel.Setup
SwitchEntServer2AspNet40,
SwitchWebPortal2AspNet40,
ConfigureSecureSessionModuleInWebConfig,
- RestoreConfig
+ RestoreConfig,
+ UpdateXml
}
public class InstallAction
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
index 15cbc217..4f5fd3fb 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Common/SetupVariables.cs
@@ -251,7 +251,8 @@ namespace WebsitePanel.Setup
public string SpecialBaseDirectory { get; set; }
public IDictionary FileNameMap { get; set; }
-
+ public IDictionary SessionVariables { get; set; }
+ public IDictionary XmlData { get; set; } // XPath, Value.
public bool ComponentExists { get; set; }
public string UpdateVersion { get; set; }
@@ -283,7 +284,8 @@ namespace WebsitePanel.Setup
public string ServiceName { get; set; }
public string ConfigurationFile { get; set; }
-
+ private bool m_UseUserCredentials = true;
+ public bool UseUserCredentials { get { return m_UseUserCredentials; } set { m_UseUserCredentials = value; } }
public string ServiceFile { get; set; }
public string LicenseKey { get; set; }
diff --git a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
index 8a3dca10..1a8d8469 100644
--- a/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
+++ b/WebsitePanel.Installer/Sources/WebsitePanel.Setup/Internal/Adapter.cs
@@ -7,8 +7,10 @@ using System.Configuration.Install;
using System.Data;
using System.Diagnostics;
using System.IO;
+using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
+using System.ServiceProcess;
using System.Text;
using System.Text.RegularExpressions;
using System.Xml;
@@ -165,6 +167,9 @@ namespace WebsitePanel.Setup.Internal
Dst.BaseDirectory = Utils.GetStringSetupParameter(Hash, Global.Parameters.BaseDirectory);
Dst.ComponentId = Utils.GetStringSetupParameter(Hash, Global.Parameters.ComponentId);
Dst.ComponentExists = string.IsNullOrWhiteSpace(Dst.ComponentId) ? false : true;
+
+ Dst.UpdateVersion = Utils.GetStringSetupParameter(Hash, "Version");
+ Dst.SessionVariables = Src;
}
public static string GetFullConfigPath(SetupVariables Ctx)
{
@@ -406,6 +411,9 @@ namespace WebsitePanel.Setup.Internal
case ActionTypes.RestoreConfig:
RestoreXmlConfigs(Execute.SetupVariables);
break;
+ case ActionTypes.UpdateXml:
+ UpdateXml(Execute.Path, Execute.SetupVariables.XmlData);
+ break;
}
}
catch (Exception ex)
@@ -2167,39 +2175,54 @@ namespace WebsitePanel.Setup.Internal
try
{
string componentId = Context.ComponentId;
- string path = Path.Combine(Context.InstallationFolder, Context.ServiceFile);
+ string path = Context.ServiceFile; // FullFileName.
string service = Context.ServiceName;
+
+ Log.WriteStart(string.Format("Registering \"{0}\" windows service", service));
+
if (!File.Exists(path))
{
Log.WriteError(string.Format("File {0} not found", path), null);
return;
}
-
- Log.WriteStart(string.Format("Registering \"{0}\" windows service", service));
- string domain = Context.UserDomain;
- if (string.IsNullOrEmpty(domain))
- domain = ".";
- string arguments = string.Format("/i /LogFile=\"\" /user={0}\\{1} /password={2}",
- domain, Context.UserAccount, Context.UserPassword);
- int exitCode = Utils.RunProcess(path, arguments);
- if (exitCode == 0)
+ if (ServiceController.GetServices().Any(s => s.DisplayName.Equals(service, StringComparison.CurrentCultureIgnoreCase)))
{
+ var Msg = string.Format("Service \"{0}\" already installed.", service);
+ Log.WriteEnd(Msg);
+ InstallLog.AppendLine(Msg);
+ }
+ try
+ {
+ string domain = Context.UserDomain;
+ if (string.IsNullOrEmpty(domain))
+ domain = ".";
+
+ string arguments = string.Empty;
+ if (Context.UseUserCredentials)
+ arguments = string.Format("/i /LogFile=\"\" /user={0}\\{1} /password={2}", domain, Context.UserAccount, Context.UserPassword);
+ else
+ arguments = "/i /LogFile= ''";
+
+ ManagedInstallerClass.InstallHelper(new[] { arguments, path });
//add rollback action
RollBack.RegisterWindowsService(path, service);
-
+ var Msg = string.Format("Registered \"{0}\" Windows service ", service);
//update log
- Log.WriteEnd("Registered windows service");
+ Log.WriteEnd(Msg);
//update install log
- InstallLog.AppendLine(string.Format("- Registered \"{0}\" Windows service ", service));
+ InstallLog.AppendLine(Msg);
+
+ // update config setings
+ AppConfig.EnsureComponentConfig(componentId);
+ AppConfig.SetComponentSettingStringValue(componentId, "ServiceName", service);
+ AppConfig.SetComponentSettingStringValue(componentId, "ServiceFile", path);
+ AppConfig.SaveConfiguration();
}
- else
+ catch (Exception ex)
{
- Log.WriteError(string.Format("Unable to register \"{0}\" Windows service. Error code: {1}", service, exitCode), null);
+ Log.WriteError(string.Format("Unable to register \"{0}\" Windows service.", service), null);
InstallLog.AppendLine(string.Format("- Failed to register \"{0}\" windows service ", service));
- }
- // update config setings
- AppConfig.SetComponentSettingStringValue(componentId, "ServiceName", Context.ServiceName);
- AppConfig.SetComponentSettingStringValue(componentId, "ServiceFile", Context.ServiceFile);
+ }
}
catch (Exception ex)
{
@@ -3793,9 +3816,9 @@ namespace WebsitePanel.Setup.Internal
{
//update settings
AppConfig.SetComponentSettingStringValue(componentId, "Release", Context.UpdateVersion);
- AppConfig.SetComponentSettingStringValue(componentId, "Installer", Context.Installer);
- AppConfig.SetComponentSettingStringValue(componentId, "InstallerType", Context.InstallerType);
- AppConfig.SetComponentSettingStringValue(componentId, "InstallerPath", Context.InstallerPath);
+ AppConfig.SetComponentSettingStringValue(componentId, "Installer", Context.SessionVariables["Installer"]);
+ AppConfig.SetComponentSettingStringValue(componentId, "InstallerType", Context.SessionVariables["InstallerType"]);
+ AppConfig.SetComponentSettingStringValue(componentId, "InstallerPath", Context.SessionVariables["InstallerPath"]);
}
Log.WriteInfo("Saving system configuration");
@@ -3989,6 +4012,52 @@ namespace WebsitePanel.Setup.Internal
throw;
}
}
+ private void UpdateXml(string FullFileName, IDictionary Data)
+ {
+ var Msg = "Update xml files.";
+ try
+ {
+ Log.WriteStart(Msg);
+ if (!File.Exists(FullFileName))
+ throw new FileNotFoundException(FullFileName);
+ var Doc = new XmlDocument();
+ Doc.Load(FullFileName);
+ foreach(var Key in Data.Keys)
+ {
+ var Node = Doc.SelectSingleNode(Key) as XmlElement;
+ if (Node == null)
+ {
+ Log.WriteInfo(string.Format("XPath \"{0}\" not found.", Key));
+ }
+ else
+ {
+ var Value = Data[Key];
+ switch (Value.Length)
+ {
+ case 1:
+ Node.Value = Value[0];
+ break;
+ case 2:
+ Node.SetAttribute(Value[0], Value[1]);
+ break;
+ default:
+ Log.WriteError(string.Format("Bad xml value for \"{0}\".", Key));
+ break;
+ }
+ }
+ }
+ Doc.Save(FullFileName);
+ }
+ catch (Exception ex)
+ {
+ Log.WriteError(ex.ToString());
+ throw;
+ }
+ finally
+ {
+ Log.WriteEnd(Msg);
+ }
+ }
}
public class UninstallScript : SetupScript // UninstallPage
{
@@ -4000,7 +4069,6 @@ namespace WebsitePanel.Setup.Internal
{
var list = base.GetActions(componentId);
InstallAction action = null;
-
//windows service
string serviceName = AppConfig.GetComponentSettingStringValue(componentId, "ServiceName");
string serviceFile = AppConfig.GetComponentSettingStringValue(componentId, "ServiceFile");
@@ -4008,16 +4076,18 @@ namespace WebsitePanel.Setup.Internal
if (!string.IsNullOrEmpty(serviceName) && !string.IsNullOrEmpty(serviceFile))
{
action = new InstallAction(ActionTypes.UnregisterWindowsService);
- action.Path = Path.Combine(installFolder, serviceFile);
+ action.Path = serviceFile; // FullFileName.
action.Name = serviceName;
action.Description = "Removing Windows service...";
action.Log = string.Format("- Remove {0} Windows service", serviceName);
list.Add(action);
}
-
//database
bool deleteDatabase = AppConfig.GetComponentSettingBooleanValue(componentId, "NewDatabase");
- if (deleteDatabase)
+ bool allowDelete = true;
+ if (Context.InstallerType.ToLowerInvariant().Equals("msi")) // DB handled by MSI (WiX) by default.
+ allowDelete = false;
+ if (deleteDatabase && allowDelete)
{
string connectionString = AppConfig.GetComponentSettingStringValue(componentId, "InstallConnectionString");
string database = AppConfig.GetComponentSettingStringValue(componentId, "Database");
@@ -4053,7 +4123,6 @@ namespace WebsitePanel.Setup.Internal
action.Log = string.Format("- Delete {0} database login", loginName);
list.Add(action);
}
-
//virtual directory
bool deleteVirtualDirectory = AppConfig.GetComponentSettingBooleanValue(componentId, "NewVirtualDirectory");
if (deleteVirtualDirectory)
@@ -4067,7 +4136,6 @@ namespace WebsitePanel.Setup.Internal
action.Log = string.Format("- Delete {0} virtual directory...", virtualDirectory);
list.Add(action);
}
-
//web site
bool deleteWebSite = AppConfig.GetComponentSettingBooleanValue(componentId, "NewWebSite");
if (deleteWebSite)
@@ -4079,7 +4147,6 @@ namespace WebsitePanel.Setup.Internal
action.Log = string.Format("- Delete {0} web site", siteId);
list.Add(action);
}
-
//application pool
bool deleteAppPool = AppConfig.GetComponentSettingBooleanValue(componentId, "NewApplicationPool");
if (deleteAppPool)
@@ -4093,7 +4160,6 @@ namespace WebsitePanel.Setup.Internal
action.Log = string.Format("- Delete {0} application pool", appPoolName);
list.Add(action);
}
-
//user account
bool deleteUserAccount = AppConfig.GetComponentSettingBooleanValue(componentId, "NewUserAccount");
if (deleteUserAccount)
@@ -4111,7 +4177,6 @@ namespace WebsitePanel.Setup.Internal
action.Log = string.Format("- Remove {0} user account membership", username);
list.Add(action);
}
-
action = new InstallAction(ActionTypes.DeleteUserAccount);
action.Name = username;
action.Domain = domain;
@@ -4253,7 +4318,6 @@ namespace WebsitePanel.Setup.Internal
else if (ModeExtension == ModeExtension.Restore)
{
Context.ComponentId = GetComponentID(Context);
- Context.UpdateVersion = Context.Release;
AppConfig.LoadComponentSettings(Context);
new RestoreScript(Context).Run();
}
@@ -4331,9 +4395,24 @@ namespace WebsitePanel.Setup.Internal
else if (ModeExtension == ModeExtension.Restore)
{
Context.ComponentId = GetComponentID(Context);
- Context.UpdateVersion = Context.Release;
+ Context.UseUserCredentials = false;
AppConfig.LoadComponentSettings(Context);
- new RestoreScript(Context).Run();
+ if (string.IsNullOrWhiteSpace(Context.ServiceName) || string.IsNullOrWhiteSpace(Context.ServiceFile))
+ {
+ Context.ServiceName = Global.Parameters.SchedulerServiceName;
+ Context.ServiceFile = Path.Combine(Context.InstallationFolder, "bin", Global.Parameters.SchedulerServiceFileName);
+ }
+ SetupScript Script = new RestoreScript(Context);
+ Script.Run();
+ Script = new ExpressScript(Context);
+ var XmlUp = new Dictionary();
+ XmlUp.Add("configuration/connectionStrings/add[@name='EnterpriseServer']", new string[] {"connectionString", Context.ConnectionString});
+ XmlUp.Add("configuration/appSettings/add[@key='WebsitePanel.CryptoKey']", new string[] {"value", Context.CryptoKey });
+ Context.XmlData = XmlUp;
+ Script.Actions.Add(new InstallAction(ActionTypes.UpdateXml) { SetupVariables = Context, Path = string.Format("{0}.config", Context.ServiceFile) });
+ Script.Actions.Add(new InstallAction(ActionTypes.RegisterWindowsService));
+ Script.Actions.Add(new InstallAction(ActionTypes.StartWindowsService));
+ Script.Run();
}
else
throw new NotImplementedException("Install " + ModeExtension.ToString());
@@ -4409,7 +4488,6 @@ namespace WebsitePanel.Setup.Internal
else if (ModeExtension == ModeExtension.Restore)
{
Context.ComponentId = GetComponentID(Context);
- Context.UpdateVersion = Context.Release;
AppConfig.LoadComponentSettings(Context);
new RestoreScript(Context).Run();
}
From 7e03ed1bdedc7bd04ce7e3eca572661d51eb6465 Mon Sep 17 00:00:00 2001
From: McMak
Date: Thu, 21 May 2015 15:53:45 +0300
Subject: [PATCH 09/16] Installer: old to new update #7 - upd: sql update
script.
---
WebsitePanel/Database/wix_update_db.sql | 118 +++++++++++++++++-------
1 file changed, 87 insertions(+), 31 deletions(-)
diff --git a/WebsitePanel/Database/wix_update_db.sql b/WebsitePanel/Database/wix_update_db.sql
index 05f21309..6fe1c681 100644
--- a/WebsitePanel/Database/wix_update_db.sql
+++ b/WebsitePanel/Database/wix_update_db.sql
@@ -12205,7 +12205,7 @@ SET @columnFullName = 'FullName'
DECLARE @curUsers cursor
DECLARE @curSpace cursor
-DECLARE @sqlSpace nvarchar(2000)
+DECLARE @sqlSpace nvarchar(3000)
DECLARE @sqlUsers nvarchar(2000)
DECLARE @sqlReturn nvarchar(4000)
@@ -12221,12 +12221,8 @@ DECLARE @Users TABLE
UserID int
)
INSERT INTO @Users (UserID)
-SELECT '
-
-IF @OnlyFind = 1
-SET @sqlUsers = @sqlUsers + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
-
-SET @sqlUsers = @sqlUsers + 'U.UserID
+SELECT
+ U.UserID
FROM UsersDetailed AS U
WHERE
U.UserID <> @UserID AND U.IsPeer = 0 AND
@@ -12238,8 +12234,12 @@ WHERE
AND ((@RoleID = 0) OR (@RoleID > 0 AND U.RoleID = @RoleID))
AND @HasUserRights = 1
SET @curValue = cursor local for
-SELECT
- U.ItemID,
+SELECT '
+
+IF @OnlyFind = 1
+SET @sqlUsers = @sqlUsers + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
+
+SET @sqlUsers = @sqlUsers + 'U.ItemID,
U.TextSearch,
U.ColumnType,
''Users'' as FullType,
@@ -12263,8 +12263,10 @@ SELECT U3.UserID as ItemID, U3.FirstName + '' '' + U3.LastName as TextSearch, @c
FROM dbo.Users AS U3) as U
WHERE TextSearch<>'' '' OR ISNULL(TextSearch, 0) > 0
)
- AS U ON TU.UserID = U.ItemID
- ORDER BY TextSearch'
+ AS U ON TU.UserID = U.ItemID'
+IF @FilterValue <> ''
+ SET @sqlUsers = @sqlUsers + ' WHERE TextSearch LIKE ''' + @FilterValue + ''''
+SET @sqlUsers = @sqlUsers + ' ORDER BY TextSearch'
SET @sqlUsers = @sqlUsers + ' open @curValue'
@@ -12277,12 +12279,8 @@ SET @sqlSpace = '
ItemID int
)
INSERT INTO @ItemsService (ItemID)
- SELECT '
-
-IF @OnlyFind = 1
-SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
-
-SET @sqlSpace = @sqlSpace + 'SI.ItemID
+ SELECT
+ SI.ItemID
FROM ServiceItems AS SI
INNER JOIN Packages AS P ON P.PackageID = SI.PackageID
INNER JOIN UsersDetailed AS U ON P.UserID = U.UserID
@@ -12302,8 +12300,12 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
dbo.CheckUserParent(@UserID, P.UserID) = 1
SET @curValue = cursor local for
- SELECT
-
+ SELECT '
+
+IF @OnlyFind = 1
+SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
+
+SET @sqlSpace = @sqlSpace + '
SI.ItemID as ItemID,
SI.ItemName as TextSearch,
STYPE.DisplayName as ColumnType,
@@ -12313,9 +12315,17 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
FROM @ItemsService AS I
INNER JOIN ServiceItems AS SI ON I.ItemID = SI.ItemID
INNER JOIN ServiceItemTypes AS STYPE ON SI.ItemTypeID = STYPE.ItemTypeID
- WHERE STYPE.Searchable = 1
- UNION
- SELECT
+ WHERE (STYPE.Searchable = 1)'
+IF @FilterValue <> ''
+ SET @sqlSpace = @sqlSpace + ' AND (SI.ItemName LIKE ''' + @FilterValue + ''')'
+SET @sqlSpace = @sqlSpace + '
+ UNION (
+ SELECT '
+
+IF @OnlyFind = 1
+SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
+
+SET @sqlSpace = @sqlSpace + '
D.DomainID AS ItemID,
D.DomainName as TextSearch,
''Domain'' as ColumnType,
@@ -12324,19 +12334,68 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
0 as AccountID
FROM @ItemsDomain AS I
INNER JOIN Domains AS D ON I.ItemID = D.DomainID
- WHERE D.IsDomainPointer=0
+ WHERE (D.IsDomainPointer=0)'
+IF @FilterValue <> ''
+ SET @sqlSpace = @sqlSpace + ' AND (D.DomainName LIKE ''' + @FilterValue + ''')'
+SET @sqlSpace = @sqlSpace + '
UNION
- SELECT
+ SELECT '
+
+IF @OnlyFind = 1
+SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
+
+SET @sqlSpace = @sqlSpace + '
EA.ItemID AS ItemID,
- EA.AccountName as TextSearch,
+ EA.DisplayName as TextSearch,
''ExchangeAccount'' as ColumnType,
- ''ExchangeAccountMailbox'' as FullType,
+ ''ExchangeAccount'' as FullType,
SI2.PackageID as PackageID,
EA.AccountID as AccountID
FROM @ItemsService AS I2
INNER JOIN ServiceItems AS SI2 ON I2.ItemID = SI2.ItemID
- INNER JOIN ExchangeAccounts AS EA ON I2.ItemID = EA.ItemID
- ORDER BY TextSearch';
+ INNER JOIN ExchangeAccounts AS EA ON I2.ItemID = EA.ItemID'
+IF @FilterValue <> ''
+ SET @sqlSpace = @sqlSpace + ' WHERE (EA.DisplayName LIKE ''' + @FilterValue + ''')'
+SET @sqlSpace = @sqlSpace + '
+ UNION
+ SELECT '
+
+IF @OnlyFind = 1
+SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
+
+SET @sqlSpace = @sqlSpace + '
+ EA4.ItemID AS ItemID,
+ EA4.PrimaryEmailAddress as TextSearch,
+ ''ExchangeAccount'' as ColumnType,
+ ''ExchangeAccount'' as FullType,
+ SI4.PackageID as PackageID,
+ EA4.AccountID as AccountID
+ FROM @ItemsService AS I4
+ INNER JOIN ServiceItems AS SI4 ON I4.ItemID = SI4.ItemID
+ INNER JOIN ExchangeAccounts AS EA4 ON I4.ItemID = EA4.ItemID'
+IF @FilterValue <> ''
+ SET @sqlSpace = @sqlSpace + ' WHERE (EA4.PrimaryEmailAddress LIKE ''' + @FilterValue + ''')'
+SET @sqlSpace = @sqlSpace + '
+ UNION
+ SELECT '
+
+IF @OnlyFind = 1
+SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
+
+SET @sqlSpace = @sqlSpace + '
+ EA3.ItemID AS ItemID,
+ EAEA.EmailAddress as TextSearch,
+ ''ExchangeAccount'' as ColumnType,
+ ''ExchangeAccount'' as FullType,
+ SI3.PackageID as PackageID,
+ EA3.AccountID as AccountID
+ FROM @ItemsService AS I3
+ INNER JOIN ServiceItems AS SI3 ON I3.ItemID = SI3.ItemID
+ INNER JOIN ExchangeAccounts AS EA3 ON I3.ItemID = EA3.ItemID
+ INNER JOIN ExchangeAccountEmailAddresses AS EAEA ON I3.ItemID = EAEA.AccountID'
+IF @FilterValue <> ''
+ SET @sqlSpace = @sqlSpace + ' WHERE (EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
+SET @sqlSpace = @sqlSpace + ') ORDER BY TextSearch';
SET @sqlSpace = @sqlSpace + ' open @curValue'
@@ -12400,9 +12459,6 @@ SET @sqlReturn = @sqlReturn + ' AND IA.ColumnType in ( ' + @ColType + ' ) ';
IF @FullType <> ''
SET @sqlReturn = @sqlReturn + ' AND IA.FullType = ''' + @FullType + '''';
-IF @FilterValue <> ''
-SET @sqlReturn = @sqlReturn + ' AND IA.' + @FilterColumn + ' LIKE @FilterValue '
-
SET @sqlReturn = @sqlReturn + '
SELECT COUNT(ItemID) FROM @ItemsReturn;
SELECT DISTINCT(ColumnType) FROM @ItemsReturn WHERE (1 = 1) ';
From 0da4bc24635f960bbf919cd4fdba0274bd4f3d3f Mon Sep 17 00:00:00 2001
From: doctogonzo
Date: Thu, 21 May 2015 15:46:48 +0200
Subject: [PATCH 10/16] quick search: new service items types localization add
---
.../WebsitePanel_SharedResources.ascx.resx | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
index 5788b660..5fc546d2 100644
--- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
+++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx
@@ -4368,6 +4368,12 @@
Virtual Switch
+
+ SharePoint Foundation Site Collection
+
+
+ SharePoint Enterprise Site Collection
+
Assigning external IP addresses
From 6f9e35ba24ab38fefb4da21868f60fb56aa5682f Mon Sep 17 00:00:00 2001
From: Virtuworks
Date: Thu, 21 May 2015 09:49:49 -0400
Subject: [PATCH 11/16] Added tag build-2.1.0.735 for changeset b7c802605ced
From 4526a6b8d95e691bb6baa9129841e23d2857d346 Mon Sep 17 00:00:00 2001
From: McMak
Date: Thu, 21 May 2015 16:51:10 +0300
Subject: [PATCH 12/16] Installer: old to new update #8 - upd: sql update
script.
---
WebsitePanel/Database/wix_update_db.sql | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/WebsitePanel/Database/wix_update_db.sql b/WebsitePanel/Database/wix_update_db.sql
index 6fe1c681..7eac7a0e 100644
--- a/WebsitePanel/Database/wix_update_db.sql
+++ b/WebsitePanel/Database/wix_update_db.sql
@@ -12383,15 +12383,14 @@ IF @OnlyFind = 1
SET @sqlSpace = @sqlSpace + 'TOP ' + CAST(@MaximumRows AS varchar(12)) + ' '
SET @sqlSpace = @sqlSpace + '
- EA3.ItemID AS ItemID,
+ I3.ItemID AS ItemID,
EAEA.EmailAddress as TextSearch,
''ExchangeAccount'' as ColumnType,
''ExchangeAccount'' as FullType,
SI3.PackageID as PackageID,
- EA3.AccountID as AccountID
+ 0 as AccountID
FROM @ItemsService AS I3
INNER JOIN ServiceItems AS SI3 ON I3.ItemID = SI3.ItemID
- INNER JOIN ExchangeAccounts AS EA3 ON I3.ItemID = EA3.ItemID
INNER JOIN ExchangeAccountEmailAddresses AS EAEA ON I3.ItemID = EAEA.AccountID'
IF @FilterValue <> ''
SET @sqlSpace = @sqlSpace + ' WHERE (EAEA.EmailAddress LIKE ''' + @FilterValue + ''')'
From e8611352ea600728d68a564501f50725f931ef86 Mon Sep 17 00:00:00 2001
From: Virtuworks
Date: Thu, 21 May 2015 10:07:30 -0400
Subject: [PATCH 13/16] Added tag build-2.1.0.737 for changeset 5a2a10169872
From 847cf07f8404ee4a738dac89408bfeb45d468d79 Mon Sep 17 00:00:00 2001
From: Virtuworks
Date: Thu, 21 May 2015 10:17:17 -0400
Subject: [PATCH 14/16] Added tag build-2.1.0.738 for changeset 5af7ce985088
From 0211ac4957e20e48ad7d9f134096bcc4dc87418f Mon Sep 17 00:00:00 2001
From: Virtuworks
Date: Thu, 21 May 2015 10:27:05 -0400
Subject: [PATCH 15/16] Added tag build-2.1.0.739 for changeset b0b8bafce4b5
From 9bce727a65a7f515b1447ccde2ecad86dfd9fba7 Mon Sep 17 00:00:00 2001
From: Virtuworks
Date: Thu, 21 May 2015 10:41:54 -0400
Subject: [PATCH 16/16] Added tag build-2.1.0.740 for changeset c81615bea1e9