Merge commit
This commit is contained in:
commit
23b41102bf
424 changed files with 65508 additions and 4473 deletions
|
@ -41836,7 +41836,7 @@ INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName]
|
||||||
GO
|
GO
|
||||||
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (65, 4, N'SmarterMail', N'SmarterMail 9.x', N'WebsitePanel.Providers.Mail.SmarterMail9, WebsitePanel.Providers.Mail.SmarterMail9', N'SmarterMail60', NULL)
|
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (65, 4, N'SmarterMail', N'SmarterMail 9.x', N'WebsitePanel.Providers.Mail.SmarterMail9, WebsitePanel.Providers.Mail.SmarterMail9', N'SmarterMail60', NULL)
|
||||||
GO
|
GO
|
||||||
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (66, 4, N'SmarterMail', N'SmarterMail 10.x +', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail60', NULL)
|
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (66, 4, N'SmarterMail', N'SmarterMail 10.x +', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail100', NULL)
|
||||||
GO
|
GO
|
||||||
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (90, 12, N'Exchange2010SP2', N'Hosted Microsoft Exchange Server 2010 SP2', N'WebsitePanel.Providers.HostedSolution.Exchange2010SP2, WebsitePanel.Providers.HostedSolution', N'Exchange', NULL)
|
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (90, 12, N'Exchange2010SP2', N'Hosted Microsoft Exchange Server 2010 SP2', N'WebsitePanel.Providers.HostedSolution.Exchange2010SP2, WebsitePanel.Providers.HostedSolution', N'Exchange', NULL)
|
||||||
GO
|
GO
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
USE [${install.database}]
|
USE [${install.database}]
|
||||||
GO
|
GO
|
||||||
-- update database version
|
-- update database version
|
||||||
DECLARE @build_version nvarchar(10), @build_date datetime
|
DECLARE @build_version nvarchar(10), @build_date datetime
|
||||||
|
@ -6042,7 +6042,7 @@ CREATE PROCEDURE [dbo].GetOrganizationRdsUsersCount
|
||||||
)
|
)
|
||||||
AS
|
AS
|
||||||
SELECT
|
SELECT
|
||||||
@TotalNumber = Count([RDSCollectionId])
|
@TotalNumber = Count(DISTINCT([AccountId]))
|
||||||
FROM [dbo].[RDSCollectionUsers]
|
FROM [dbo].[RDSCollectionUsers]
|
||||||
WHERE [RDSCollectionId] in (SELECT [ID] FROM [RDSCollections] where [ItemId] = @ItemId )
|
WHERE [RDSCollectionId] in (SELECT [ID] FROM [RDSCollections] where [ItemId] = @ItemId )
|
||||||
RETURN
|
RETURN
|
||||||
|
@ -8192,6 +8192,22 @@ AS
|
||||||
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
INNER JOIN ServiceItems si ON ea.ItemID = si.ItemID
|
||||||
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
WHERE pt.ParentPackageID = @PackageID AND ea.AccountType = 11)
|
WHERE pt.ParentPackageID = @PackageID AND ea.AccountType = 11)
|
||||||
|
ELSE IF @QuotaID = 450
|
||||||
|
SET @Result = (SELECT COUNT(DISTINCT(RCU.[AccountId])) FROM [dbo].[RDSCollectionUsers] RCU
|
||||||
|
INNER JOIN ExchangeAccounts EA ON EA.AccountId = RCU.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 = 451
|
||||||
|
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)
|
||||||
|
ELSE IF @QuotaID = 491
|
||||||
|
SET @Result = (SELECT COUNT(RC.[ID]) FROM [dbo].[RDSCollections] RC
|
||||||
|
INNER JOIN ServiceItems si ON RC.ItemID = si.ItemID
|
||||||
|
INNER JOIN PackagesTreeCache pt ON si.PackageID = pt.PackageID
|
||||||
|
WHERE PT.ParentPackageID = @PackageID)
|
||||||
ELSE IF @QuotaName like 'ServiceLevel.%' -- Support Service Level Quota
|
ELSE IF @QuotaName like 'ServiceLevel.%' -- Support Service Level Quota
|
||||||
BEGIN
|
BEGIN
|
||||||
DECLARE @LevelID int
|
DECLARE @LevelID int
|
||||||
|
@ -8605,6 +8621,138 @@ WHERE
|
||||||
RETURN
|
RETURN
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--Webdav portal users settings
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'WebDavPortalUsersSettings')
|
||||||
|
CREATE TABLE WebDavPortalUsersSettings
|
||||||
|
(
|
||||||
|
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
|
||||||
|
AccountId INT NOT NULL,
|
||||||
|
Settings NVARCHAR(max)
|
||||||
|
)
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_NAME ='FK_WebDavPortalUsersSettings_UserId')
|
||||||
|
ALTER TABLE [dbo].[WebDavPortalUsersSettings]
|
||||||
|
DROP CONSTRAINT [FK_WebDavPortalUsersSettings_UserId]
|
||||||
|
GO
|
||||||
|
|
||||||
|
ALTER TABLE [dbo].[WebDavPortalUsersSettings] WITH CHECK ADD CONSTRAINT [FK_WebDavPortalUsersSettings_UserId] FOREIGN KEY([AccountID])
|
||||||
|
REFERENCES [dbo].[ExchangeAccounts] ([AccountID])
|
||||||
|
ON DELETE CASCADE
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetWebDavPortalUsersSettingsByAccountId')
|
||||||
|
DROP PROCEDURE GetWebDavPortalUsersSettingsByAccountId
|
||||||
|
GO
|
||||||
|
CREATE PROCEDURE [dbo].[GetWebDavPortalUsersSettingsByAccountId]
|
||||||
|
(
|
||||||
|
@AccountId INT
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT TOP 1
|
||||||
|
US.Id,
|
||||||
|
US.AccountId,
|
||||||
|
US.Settings
|
||||||
|
FROM WebDavPortalUsersSettings AS US
|
||||||
|
WHERE AccountId = @AccountId
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddWebDavPortalUsersSettings')
|
||||||
|
DROP PROCEDURE AddWebDavPortalUsersSettings
|
||||||
|
GO
|
||||||
|
CREATE PROCEDURE [dbo].[AddWebDavPortalUsersSettings]
|
||||||
|
(
|
||||||
|
@WebDavPortalUsersSettingsId INT OUTPUT,
|
||||||
|
@AccountId INT,
|
||||||
|
@Settings NVARCHAR(max)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
INSERT INTO WebDavPortalUsersSettings
|
||||||
|
(
|
||||||
|
AccountId,
|
||||||
|
Settings
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(
|
||||||
|
@AccountId,
|
||||||
|
@Settings
|
||||||
|
)
|
||||||
|
|
||||||
|
SET @WebDavPortalUsersSettingsId = SCOPE_IDENTITY()
|
||||||
|
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'UpdateWebDavPortalUsersSettings')
|
||||||
|
DROP PROCEDURE UpdateWebDavPortalUsersSettings
|
||||||
|
GO
|
||||||
|
CREATE PROCEDURE [dbo].[UpdateWebDavPortalUsersSettings]
|
||||||
|
(
|
||||||
|
@AccountId INT,
|
||||||
|
@Settings NVARCHAR(max)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
|
||||||
|
UPDATE WebDavPortalUsersSettings
|
||||||
|
SET
|
||||||
|
Settings = @Settings
|
||||||
|
WHERE AccountId = @AccountId
|
||||||
|
GO
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [DisplayName] = 'SmarterMail 10.x +')
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[Providers] ([ProviderId], [GroupId], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES(66, 4, N'SmarterMail', N'SmarterMail 10.x +', N'WebsitePanel.Providers.Mail.SmarterMail10, WebsitePanel.Providers.Mail.SmarterMail10', N'SmarterMail100', NULL)
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
BEGIN
|
||||||
|
UPDATE [dbo].[Providers] SET [EditorControl] = 'SmarterMail100' WHERE [DisplayName] = 'SmarterMail 10.x +'
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
-- Service items count by name and serviceid
|
||||||
|
|
||||||
|
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetServiceItemsCountByNameAndServiceId')
|
||||||
|
DROP PROCEDURE GetServiceItemsCountByNameAndServiceId
|
||||||
|
GO
|
||||||
|
|
||||||
|
CREATE PROCEDURE [dbo].[GetServiceItemsCountByNameAndServiceId]
|
||||||
|
(
|
||||||
|
@ActorID int,
|
||||||
|
@ServiceId int,
|
||||||
|
@ItemName nvarchar(500),
|
||||||
|
@GroupName nvarchar(100) = NULL,
|
||||||
|
@ItemTypeName nvarchar(200)
|
||||||
|
)
|
||||||
|
AS
|
||||||
|
SELECT Count(*)
|
||||||
|
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
|
||||||
|
AND SIT.TypeName = @ItemTypeName
|
||||||
|
AND SI.ItemName = @ItemName
|
||||||
|
AND ((@GroupName IS NULL) OR (@GroupName IS NOT NULL AND RG.GroupName = @GroupName))
|
||||||
|
RETURN
|
||||||
|
GO
|
||||||
|
|
||||||
|
-- Hyper-V 2012 R2
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [ProviderName] = 'HyperV2012R2')
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[Providers] ([ProviderID], [GroupID], [ProviderName], [DisplayName], [ProviderType], [EditorControl], [DisableAutoDiscovery]) VALUES (350, 30, N'HyperV2012R2', N'Microsoft Hyper-V 2012 R2', N'WebsitePanel.Providers.Virtualization.HyperV2012R2, WebsitePanel.Providers.Virtualization.HyperV2012R2', N'HyperV', 1)
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
-- Hyper-V 2012 R2
|
-- Hyper-V 2012 R2
|
||||||
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [ProviderName] = 'HyperV2012R2')
|
IF NOT EXISTS (SELECT * FROM [dbo].[Providers] WHERE [ProviderName] = 'HyperV2012R2')
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
@ -151,6 +151,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
public const int ERROR_MAIL_LICENSE_USERS_QUOTA = -724;
|
public const int ERROR_MAIL_LICENSE_USERS_QUOTA = -724;
|
||||||
|
|
||||||
public const int ERROR_MAIL_ACCOUNT_MAX_MAILBOX_SIZE_LIMIT = -725;
|
public const int ERROR_MAIL_ACCOUNT_MAX_MAILBOX_SIZE_LIMIT = -725;
|
||||||
|
public const int ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY = -726;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region FTP
|
#region FTP
|
||||||
|
|
|
@ -69,6 +69,12 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback CheckUsersDomainExistsOperationCompleted;
|
private System.Threading.SendOrPostCallback CheckUsersDomainExistsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetWebDavPortalUserSettingsByAccountIdOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback UpdateWebDavPortalUserSettingsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SearchFilesOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetDirectoryBrowseEnabledOperationCompleted;
|
private System.Threading.SendOrPostCallback GetDirectoryBrowseEnabledOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback SetDirectoryBrowseEnabledOperationCompleted;
|
private System.Threading.SendOrPostCallback SetDirectoryBrowseEnabledOperationCompleted;
|
||||||
|
@ -145,6 +151,15 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event CheckUsersDomainExistsCompletedEventHandler CheckUsersDomainExistsCompleted;
|
public event CheckUsersDomainExistsCompletedEventHandler CheckUsersDomainExistsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetWebDavPortalUserSettingsByAccountIdCompletedEventHandler GetWebDavPortalUserSettingsByAccountIdCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event UpdateWebDavPortalUserSettingsCompletedEventHandler UpdateWebDavPortalUserSettingsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SearchFilesCompletedEventHandler SearchFilesCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetDirectoryBrowseEnabledCompletedEventHandler GetDirectoryBrowseEnabledCompleted;
|
public event GetDirectoryBrowseEnabledCompletedEventHandler GetDirectoryBrowseEnabledCompleted;
|
||||||
|
|
||||||
|
@ -928,6 +943,143 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetWebDavPortalUserSettingsByAccount" +
|
||||||
|
"Id", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string GetWebDavPortalUserSettingsByAccountId(int accountId) {
|
||||||
|
object[] results = this.Invoke("GetWebDavPortalUserSettingsByAccountId", new object[] {
|
||||||
|
accountId});
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetWebDavPortalUserSettingsByAccountId(int accountId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetWebDavPortalUserSettingsByAccountId", new object[] {
|
||||||
|
accountId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string EndGetWebDavPortalUserSettingsByAccountId(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetWebDavPortalUserSettingsByAccountIdAsync(int accountId) {
|
||||||
|
this.GetWebDavPortalUserSettingsByAccountIdAsync(accountId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetWebDavPortalUserSettingsByAccountIdAsync(int accountId, object userState) {
|
||||||
|
if ((this.GetWebDavPortalUserSettingsByAccountIdOperationCompleted == null)) {
|
||||||
|
this.GetWebDavPortalUserSettingsByAccountIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetWebDavPortalUserSettingsByAccountIdOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetWebDavPortalUserSettingsByAccountId", new object[] {
|
||||||
|
accountId}, this.GetWebDavPortalUserSettingsByAccountIdOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetWebDavPortalUserSettingsByAccountIdOperationCompleted(object arg) {
|
||||||
|
if ((this.GetWebDavPortalUserSettingsByAccountIdCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetWebDavPortalUserSettingsByAccountIdCompleted(this, new GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/UpdateWebDavPortalUserSettings", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void UpdateWebDavPortalUserSettings(int accountId, string settings) {
|
||||||
|
this.Invoke("UpdateWebDavPortalUserSettings", new object[] {
|
||||||
|
accountId,
|
||||||
|
settings});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginUpdateWebDavPortalUserSettings(int accountId, string settings, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("UpdateWebDavPortalUserSettings", new object[] {
|
||||||
|
accountId,
|
||||||
|
settings}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndUpdateWebDavPortalUserSettings(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void UpdateWebDavPortalUserSettingsAsync(int accountId, string settings) {
|
||||||
|
this.UpdateWebDavPortalUserSettingsAsync(accountId, settings, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void UpdateWebDavPortalUserSettingsAsync(int accountId, string settings, object userState) {
|
||||||
|
if ((this.UpdateWebDavPortalUserSettingsOperationCompleted == null)) {
|
||||||
|
this.UpdateWebDavPortalUserSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateWebDavPortalUserSettingsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("UpdateWebDavPortalUserSettings", new object[] {
|
||||||
|
accountId,
|
||||||
|
settings}, this.UpdateWebDavPortalUserSettingsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnUpdateWebDavPortalUserSettingsOperationCompleted(object arg) {
|
||||||
|
if ((this.UpdateWebDavPortalUserSettingsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.UpdateWebDavPortalUserSettingsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SearchFiles", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public SystemFile[] SearchFiles(int itemId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive) {
|
||||||
|
object[] results = this.Invoke("SearchFiles", new object[] {
|
||||||
|
itemId,
|
||||||
|
searchPaths,
|
||||||
|
searchText,
|
||||||
|
userPrincipalName,
|
||||||
|
recursive});
|
||||||
|
return ((SystemFile[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSearchFiles(int itemId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("SearchFiles", new object[] {
|
||||||
|
itemId,
|
||||||
|
searchPaths,
|
||||||
|
searchText,
|
||||||
|
userPrincipalName,
|
||||||
|
recursive}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public SystemFile[] EndSearchFiles(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((SystemFile[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SearchFilesAsync(int itemId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive) {
|
||||||
|
this.SearchFilesAsync(itemId, searchPaths, searchText, userPrincipalName, recursive, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SearchFilesAsync(int itemId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive, object userState) {
|
||||||
|
if ((this.SearchFilesOperationCompleted == null)) {
|
||||||
|
this.SearchFilesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSearchFilesOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SearchFiles", new object[] {
|
||||||
|
itemId,
|
||||||
|
searchPaths,
|
||||||
|
searchText,
|
||||||
|
userPrincipalName,
|
||||||
|
recursive}, this.SearchFilesOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSearchFilesOperationCompleted(object arg) {
|
||||||
|
if ((this.SearchFilesCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SearchFilesCompleted(this, new SearchFilesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetDirectoryBrowseEnabled", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetDirectoryBrowseEnabled", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public bool GetDirectoryBrowseEnabled(int itemId, string site) {
|
public bool GetDirectoryBrowseEnabled(int itemId, string site) {
|
||||||
|
@ -1811,6 +1963,62 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetWebDavPortalUserSettingsByAccountIdCompletedEventHandler(object sender, GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetWebDavPortalUserSettingsByAccountIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void UpdateWebDavPortalUserSettingsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SearchFilesCompletedEventHandler(object sender, SearchFilesCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class SearchFilesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal SearchFilesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public SystemFile[] Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((SystemFile[])(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void GetDirectoryBrowseEnabledCompletedEventHandler(object sender, GetDirectoryBrowseEnabledCompletedEventArgs e);
|
public delegate void GetDirectoryBrowseEnabledCompletedEventHandler(object sender, GetDirectoryBrowseEnabledCompletedEventArgs e);
|
||||||
|
|
|
@ -106,6 +106,20 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetRdsCollectionSessionHostsOperationCompleted;
|
private System.Threading.SendOrPostCallback GetRdsCollectionSessionHostsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsServerInfoOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsServerStatusOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback ShutDownRdsServerOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback RestartRdsServerOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SaveRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback InstallSessionHostsCertificateOperationCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public esRemoteDesktopServices() {
|
public esRemoteDesktopServices() {
|
||||||
this.Url = "http://localhost:9002/esRemoteDesktopServices.asmx";
|
this.Url = "http://localhost:9002/esRemoteDesktopServices.asmx";
|
||||||
|
@ -225,6 +239,27 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetRdsCollectionSessionHostsCompletedEventHandler GetRdsCollectionSessionHostsCompleted;
|
public event GetRdsCollectionSessionHostsCompletedEventHandler GetRdsCollectionSessionHostsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsServerInfoCompletedEventHandler GetRdsServerInfoCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsServerStatusCompletedEventHandler GetRdsServerStatusCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event ShutDownRdsServerCompletedEventHandler ShutDownRdsServerCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event RestartRdsServerCompletedEventHandler RestartRdsServerCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsCollectionLocalAdminsCompletedEventHandler GetRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SaveRdsCollectionLocalAdminsCompletedEventHandler SaveRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event InstallSessionHostsCertificateCompletedEventHandler InstallSessionHostsCertificateCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollection", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollection", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public RdsCollection GetRdsCollection(int collectionId) {
|
public RdsCollection GetRdsCollection(int collectionId) {
|
||||||
|
@ -1196,15 +1231,17 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RemoveRdsServerFromOrganization", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RemoveRdsServerFromOrganization", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public ResultObject RemoveRdsServerFromOrganization(int rdsServerId) {
|
public ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId) {
|
||||||
object[] results = this.Invoke("RemoveRdsServerFromOrganization", new object[] {
|
object[] results = this.Invoke("RemoveRdsServerFromOrganization", new object[] {
|
||||||
|
itemId,
|
||||||
rdsServerId});
|
rdsServerId});
|
||||||
return ((ResultObject)(results[0]));
|
return ((ResultObject)(results[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public System.IAsyncResult BeginRemoveRdsServerFromOrganization(int rdsServerId, System.AsyncCallback callback, object asyncState) {
|
public System.IAsyncResult BeginRemoveRdsServerFromOrganization(int itemId, int rdsServerId, System.AsyncCallback callback, object asyncState) {
|
||||||
return this.BeginInvoke("RemoveRdsServerFromOrganization", new object[] {
|
return this.BeginInvoke("RemoveRdsServerFromOrganization", new object[] {
|
||||||
|
itemId,
|
||||||
rdsServerId}, callback, asyncState);
|
rdsServerId}, callback, asyncState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1215,16 +1252,17 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void RemoveRdsServerFromOrganizationAsync(int rdsServerId) {
|
public void RemoveRdsServerFromOrganizationAsync(int itemId, int rdsServerId) {
|
||||||
this.RemoveRdsServerFromOrganizationAsync(rdsServerId, null);
|
this.RemoveRdsServerFromOrganizationAsync(itemId, rdsServerId, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void RemoveRdsServerFromOrganizationAsync(int rdsServerId, object userState) {
|
public void RemoveRdsServerFromOrganizationAsync(int itemId, int rdsServerId, object userState) {
|
||||||
if ((this.RemoveRdsServerFromOrganizationOperationCompleted == null)) {
|
if ((this.RemoveRdsServerFromOrganizationOperationCompleted == null)) {
|
||||||
this.RemoveRdsServerFromOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRdsServerFromOrganizationOperationCompleted);
|
this.RemoveRdsServerFromOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRdsServerFromOrganizationOperationCompleted);
|
||||||
}
|
}
|
||||||
this.InvokeAsync("RemoveRdsServerFromOrganization", new object[] {
|
this.InvokeAsync("RemoveRdsServerFromOrganization", new object[] {
|
||||||
|
itemId,
|
||||||
rdsServerId}, this.RemoveRdsServerFromOrganizationOperationCompleted, userState);
|
rdsServerId}, this.RemoveRdsServerFromOrganizationOperationCompleted, userState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1944,6 +1982,314 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsServerInfo", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public RdsServerInfo GetRdsServerInfo(int itemId, string fqdnName) {
|
||||||
|
object[] results = this.Invoke("GetRdsServerInfo", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName});
|
||||||
|
return ((RdsServerInfo)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsServerInfo(int itemId, string fqdnName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsServerInfo", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public RdsServerInfo EndGetRdsServerInfo(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((RdsServerInfo)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerInfoAsync(int itemId, string fqdnName) {
|
||||||
|
this.GetRdsServerInfoAsync(itemId, fqdnName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerInfoAsync(int itemId, string fqdnName, object userState) {
|
||||||
|
if ((this.GetRdsServerInfoOperationCompleted == null)) {
|
||||||
|
this.GetRdsServerInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsServerInfoOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsServerInfo", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, this.GetRdsServerInfoOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsServerInfoOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsServerInfoCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsServerInfoCompleted(this, new GetRdsServerInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsServerStatus", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string GetRdsServerStatus(int itemId, string fqdnName) {
|
||||||
|
object[] results = this.Invoke("GetRdsServerStatus", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName});
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsServerStatus(int itemId, string fqdnName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsServerStatus", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string EndGetRdsServerStatus(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerStatusAsync(int itemId, string fqdnName) {
|
||||||
|
this.GetRdsServerStatusAsync(itemId, fqdnName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerStatusAsync(int itemId, string fqdnName, object userState) {
|
||||||
|
if ((this.GetRdsServerStatusOperationCompleted == null)) {
|
||||||
|
this.GetRdsServerStatusOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsServerStatusOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsServerStatus", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, this.GetRdsServerStatusOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsServerStatusOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsServerStatusCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsServerStatusCompleted(this, new GetRdsServerStatusCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/ShutDownRdsServer", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ResultObject ShutDownRdsServer(int itemId, string fqdnName) {
|
||||||
|
object[] results = this.Invoke("ShutDownRdsServer", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName});
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginShutDownRdsServer(int itemId, string fqdnName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("ShutDownRdsServer", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject EndShutDownRdsServer(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void ShutDownRdsServerAsync(int itemId, string fqdnName) {
|
||||||
|
this.ShutDownRdsServerAsync(itemId, fqdnName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void ShutDownRdsServerAsync(int itemId, string fqdnName, object userState) {
|
||||||
|
if ((this.ShutDownRdsServerOperationCompleted == null)) {
|
||||||
|
this.ShutDownRdsServerOperationCompleted = new System.Threading.SendOrPostCallback(this.OnShutDownRdsServerOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("ShutDownRdsServer", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, this.ShutDownRdsServerOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnShutDownRdsServerOperationCompleted(object arg) {
|
||||||
|
if ((this.ShutDownRdsServerCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.ShutDownRdsServerCompleted(this, new ShutDownRdsServerCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/RestartRdsServer", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ResultObject RestartRdsServer(int itemId, string fqdnName) {
|
||||||
|
object[] results = this.Invoke("RestartRdsServer", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName});
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginRestartRdsServer(int itemId, string fqdnName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("RestartRdsServer", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject EndRestartRdsServer(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RestartRdsServerAsync(int itemId, string fqdnName) {
|
||||||
|
this.RestartRdsServerAsync(itemId, fqdnName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RestartRdsServerAsync(int itemId, string fqdnName, object userState) {
|
||||||
|
if ((this.RestartRdsServerOperationCompleted == null)) {
|
||||||
|
this.RestartRdsServerOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRestartRdsServerOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("RestartRdsServer", new object[] {
|
||||||
|
itemId,
|
||||||
|
fqdnName}, this.RestartRdsServerOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnRestartRdsServerOperationCompleted(object arg) {
|
||||||
|
if ((this.RestartRdsServerCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.RestartRdsServerCompleted(this, new RestartRdsServerCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/GetRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public OrganizationUser[] GetRdsCollectionLocalAdmins(int collectionId) {
|
||||||
|
object[] results = this.Invoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
collectionId});
|
||||||
|
return ((OrganizationUser[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsCollectionLocalAdmins(int collectionId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
collectionId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public OrganizationUser[] EndGetRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((OrganizationUser[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(int collectionId) {
|
||||||
|
this.GetRdsCollectionLocalAdminsAsync(collectionId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(int collectionId, object userState) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.GetRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
collectionId}, this.GetRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsCollectionLocalAdminsCompleted(this, new GetRdsCollectionLocalAdminsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/SaveRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int collectionId) {
|
||||||
|
object[] results = this.Invoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
collectionId});
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSaveRdsCollectionLocalAdmins(OrganizationUser[] users, int collectionId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
collectionId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject EndSaveRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(OrganizationUser[] users, int collectionId) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsAsync(users, collectionId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(OrganizationUser[] users, int collectionId, object userState) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSaveRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
collectionId}, this.SaveRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSaveRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SaveRdsCollectionLocalAdminsCompleted(this, new SaveRdsCollectionLocalAdminsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/InstallSessionHostsCertificate", RequestNamespace="http://smbsaas/websitepanel/enterpriseserver", ResponseNamespace="http://smbsaas/websitepanel/enterpriseserver", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ResultObject InstallSessionHostsCertificate(int collectionId, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] certificate, string password) {
|
||||||
|
object[] results = this.Invoke("InstallSessionHostsCertificate", new object[] {
|
||||||
|
collectionId,
|
||||||
|
certificate,
|
||||||
|
password});
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginInstallSessionHostsCertificate(int collectionId, byte[] certificate, string password, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("InstallSessionHostsCertificate", new object[] {
|
||||||
|
collectionId,
|
||||||
|
certificate,
|
||||||
|
password}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject EndInstallSessionHostsCertificate(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void InstallSessionHostsCertificateAsync(int collectionId, byte[] certificate, string password) {
|
||||||
|
this.InstallSessionHostsCertificateAsync(collectionId, certificate, password, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void InstallSessionHostsCertificateAsync(int collectionId, byte[] certificate, string password, object userState) {
|
||||||
|
if ((this.InstallSessionHostsCertificateOperationCompleted == null)) {
|
||||||
|
this.InstallSessionHostsCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallSessionHostsCertificateOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("InstallSessionHostsCertificate", new object[] {
|
||||||
|
collectionId,
|
||||||
|
certificate,
|
||||||
|
password}, this.InstallSessionHostsCertificateOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnInstallSessionHostsCertificateOperationCompleted(object arg) {
|
||||||
|
if ((this.InstallSessionHostsCertificateCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.InstallSessionHostsCertificateCompleted(this, new InstallSessionHostsCertificateCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
|
@ -2937,4 +3283,186 @@ namespace WebsitePanel.EnterpriseServer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsServerInfoCompletedEventHandler(object sender, GetRdsServerInfoCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsServerInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsServerInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public RdsServerInfo Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((RdsServerInfo)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsServerStatusCompletedEventHandler(object sender, GetRdsServerStatusCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsServerStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsServerStatusCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void ShutDownRdsServerCompletedEventHandler(object sender, ShutDownRdsServerCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class ShutDownRdsServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal ShutDownRdsServerCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ResultObject)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void RestartRdsServerCompletedEventHandler(object sender, RestartRdsServerCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class RestartRdsServerCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal RestartRdsServerCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ResultObject)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsCollectionLocalAdminsCompletedEventHandler(object sender, GetRdsCollectionLocalAdminsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsCollectionLocalAdminsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsCollectionLocalAdminsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public OrganizationUser[] Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((OrganizationUser[])(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SaveRdsCollectionLocalAdminsCompletedEventHandler(object sender, SaveRdsCollectionLocalAdminsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class SaveRdsCollectionLocalAdminsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal SaveRdsCollectionLocalAdminsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ResultObject)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void InstallSessionHostsCertificateCompletedEventHandler(object sender, InstallSessionHostsCertificateCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class InstallSessionHostsCertificateCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal InstallSessionHostsCertificateCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ResultObject)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1197,6 +1197,24 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
new SqlParameter("@itemName", itemName));
|
new SqlParameter("@itemName", itemName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int GetServiceItemsCountByNameAndServiceId(int actorId, int serviceId, string groupName,
|
||||||
|
string itemName, string itemTypeName)
|
||||||
|
{
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
object obj = SqlHelper.ExecuteScalar(ConnectionString, CommandType.StoredProcedure,
|
||||||
|
ObjectQualifier + "GetServiceItemsCountByNameAndServiceId",
|
||||||
|
new SqlParameter("@ActorID", actorId),
|
||||||
|
new SqlParameter("@ServiceId", serviceId),
|
||||||
|
new SqlParameter("@ItemName", itemName),
|
||||||
|
new SqlParameter("@GroupName", groupName),
|
||||||
|
new SqlParameter("@ItemTypeName", itemTypeName));
|
||||||
|
|
||||||
|
if (!int.TryParse(obj.ToString(), out res)) return -1;
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
public static int AddServiceItem(int actorId, int serviceId, int packageId, string itemName,
|
public static int AddServiceItem(int actorId, int serviceId, int packageId, string itemName,
|
||||||
string itemTypeName, string xmlProperties)
|
string itemTypeName, string xmlProperties)
|
||||||
{
|
{
|
||||||
|
@ -4486,6 +4504,45 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IDataReader GetWebDavPortalUserSettingsByAccountId(int accountId)
|
||||||
|
{
|
||||||
|
return SqlHelper.ExecuteReader(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"GetWebDavPortalUsersSettingsByAccountId",
|
||||||
|
new SqlParameter("@AccountId", accountId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int AddWebDavPortalUsersSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
SqlParameter settingsId = new SqlParameter("@WebDavPortalUsersSettingsId", SqlDbType.Int);
|
||||||
|
settingsId.Direction = ParameterDirection.Output;
|
||||||
|
|
||||||
|
SqlHelper.ExecuteNonQuery(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"AddWebDavPortalUsersSettings",
|
||||||
|
settingsId,
|
||||||
|
new SqlParameter("@AccountId", accountId),
|
||||||
|
new SqlParameter("@Settings", settings)
|
||||||
|
);
|
||||||
|
|
||||||
|
// read identity
|
||||||
|
return Convert.ToInt32(settingsId.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateWebDavPortalUsersSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
SqlHelper.ExecuteNonQuery(
|
||||||
|
ConnectionString,
|
||||||
|
CommandType.StoredProcedure,
|
||||||
|
"UpdateWebDavPortalUsersSettings",
|
||||||
|
new SqlParameter("@AccountId", accountId),
|
||||||
|
new SqlParameter("@Settings", settings)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Support Service Levels
|
#region Support Service Levels
|
||||||
|
|
|
@ -125,8 +125,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
if (serviceId == 0)
|
if (serviceId == 0)
|
||||||
return BusinessErrorCodes.ERROR_MSSQL_RESOURCE_UNAVAILABLE;
|
return BusinessErrorCodes.ERROR_MSSQL_RESOURCE_UNAVAILABLE;
|
||||||
|
|
||||||
// check package items
|
// check service items
|
||||||
if (PackageController.GetPackageItemByName(item.PackageId, groupName, item.Name, typeof(SqlDatabase)) != null)
|
if (PackageController.GetServiceItemsCountByNameAndServiceId(serviceId, groupName, item.Name, typeof(SqlDatabase)) > 0)
|
||||||
return BusinessErrorCodes.ERROR_MSSQL_DATABASES_PACKAGE_ITEM_EXISTS;
|
return BusinessErrorCodes.ERROR_MSSQL_DATABASES_PACKAGE_ITEM_EXISTS;
|
||||||
|
|
||||||
// place log record
|
// place log record
|
||||||
|
|
|
@ -172,6 +172,34 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return ObjectUtils.FillObjectFromDataReader<WebDavAccessToken>(DataProvider.GetWebDavAccessTokenByAccessToken(accessToken));
|
return ObjectUtils.FillObjectFromDataReader<WebDavAccessToken>(DataProvider.GetWebDavAccessTokenByAccessToken(accessToken));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SystemFile[] SearchFiles(int itemId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// load organization
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
return new SystemFile[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
int serviceId = GetEnterpriseStorageServiceID(org.PackageId);
|
||||||
|
|
||||||
|
if (serviceId == 0)
|
||||||
|
{
|
||||||
|
return new SystemFile[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
EnterpriseStorage es = GetEnterpriseStorage(serviceId);
|
||||||
|
|
||||||
|
return es.Search(org.OrganizationId, searchPaths, searchText, userPrincipalName, recursive);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region Directory Browsing
|
#region Directory Browsing
|
||||||
|
|
||||||
public static bool GetDirectoryBrowseEnabled(int itemId, string siteId)
|
public static bool GetDirectoryBrowseEnabled(int itemId, string siteId)
|
||||||
|
@ -202,6 +230,33 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private static IEnumerable<SystemFile> GetRootFolders(string userPrincipalName)
|
||||||
|
{
|
||||||
|
var rootFolders = new List<SystemFile>();
|
||||||
|
|
||||||
|
var account = ExchangeServerController.GetAccountByAccountName(userPrincipalName);
|
||||||
|
|
||||||
|
var userGroups = OrganizationController.GetSecurityGroupsByMember(account.ItemId, account.AccountId);
|
||||||
|
|
||||||
|
foreach (var folder in GetFolders(account.ItemId))
|
||||||
|
{
|
||||||
|
var permissions = GetFolderPermission(account.ItemId, folder.Name);
|
||||||
|
|
||||||
|
foreach (var permission in permissions)
|
||||||
|
{
|
||||||
|
if ((!permission.IsGroup
|
||||||
|
&& (permission.DisplayName == account.UserPrincipalName || permission.DisplayName == account.DisplayName))
|
||||||
|
|| (permission.IsGroup && userGroups.Any(x => x.DisplayName == permission.DisplayName)))
|
||||||
|
{
|
||||||
|
rootFolders.Add(folder);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return rootFolders;
|
||||||
|
}
|
||||||
|
|
||||||
protected static void StartESBackgroundTaskInternal(string taskName, int itemId, SystemFile folder, ESPermission[] permissions, bool directoyBrowsingEnabled, int quota, QuotaType quotaType)
|
protected static void StartESBackgroundTaskInternal(string taskName, int itemId, SystemFile folder, ESPermission[] permissions, bool directoyBrowsingEnabled, int quota, QuotaType quotaType)
|
||||||
{
|
{
|
||||||
// load organization
|
// load organization
|
||||||
|
@ -1210,6 +1265,37 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region WebDav portal
|
||||||
|
|
||||||
|
public static string GetWebDavPortalUserSettingsByAccountId(int accountId)
|
||||||
|
{
|
||||||
|
var dataReader = DataProvider.GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
|
||||||
|
while (dataReader.Read())
|
||||||
|
{
|
||||||
|
return (string)dataReader["Settings"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateUserSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
var oldSettings = GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(oldSettings))
|
||||||
|
{
|
||||||
|
DataProvider.AddWebDavPortalUsersSettings(accountId, settings);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DataProvider.UpdateWebDavPortalUsersSettings(accountId, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
#region Statistics
|
#region Statistics
|
||||||
|
|
||||||
public static OrganizationStatistics GetStatistics(int itemId)
|
public static OrganizationStatistics GetStatistics(int itemId)
|
||||||
|
|
|
@ -137,7 +137,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return domainResult;
|
return domainResult;
|
||||||
|
|
||||||
// create service item
|
// create service item
|
||||||
item.Enabled = true;
|
|
||||||
item.MaxMailboxSize = GetMaxMailBoxSize(item.PackageId, item);
|
item.MaxMailboxSize = GetMaxMailBoxSize(item.PackageId, item);
|
||||||
|
|
||||||
// add service item
|
// add service item
|
||||||
|
@ -159,7 +158,11 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
{
|
{
|
||||||
return BusinessErrorCodes.ERROR_MAIL_LICENSE_DOMAIN_QUOTA;
|
return BusinessErrorCodes.ERROR_MAIL_LICENSE_DOMAIN_QUOTA;
|
||||||
}
|
}
|
||||||
if (ex.Message != null && ex.Message.Contains("The maximum number of users for the server has been reached"))
|
if (ex.Message.Contains("Password doesn't meet complexity"))
|
||||||
|
{
|
||||||
|
return BusinessErrorCodes.ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY;
|
||||||
|
}
|
||||||
|
if (ex.Message.Contains("The maximum number of users for the server has been reached"))
|
||||||
{
|
{
|
||||||
return BusinessErrorCodes.ERROR_MAIL_LICENSE_USERS_QUOTA;
|
return BusinessErrorCodes.ERROR_MAIL_LICENSE_USERS_QUOTA;
|
||||||
}
|
}
|
||||||
|
@ -203,7 +206,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
MailServer mail = new MailServer();
|
MailServer mail = new MailServer();
|
||||||
ServiceProviderProxy.Init(mail, origItem.ServiceId);
|
ServiceProviderProxy.Init(mail, origItem.ServiceId);
|
||||||
item.Name = origItem.Name;
|
item.Name = origItem.Name;
|
||||||
item.Enabled = true;
|
|
||||||
|
|
||||||
item.MaxMailboxSize = GetMaxMailBoxSize(origItem.PackageId, item);
|
item.MaxMailboxSize = GetMaxMailBoxSize(origItem.PackageId, item);
|
||||||
|
|
||||||
|
@ -224,6 +226,11 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
if (ex.Message.Contains("Password doesn't meet complexity"))
|
||||||
|
{
|
||||||
|
return BusinessErrorCodes.ERROR_MAIL_ACCOUNT_PASSWORD_NOT_COMPLEXITY;
|
||||||
|
}
|
||||||
|
|
||||||
throw TaskManager.WriteError(ex);
|
throw TaskManager.WriteError(ex);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|
|
@ -1380,6 +1380,14 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return CreateServiceItem(dvItem[0], dsItem.Tables[1].DefaultView);
|
return CreateServiceItem(dvItem[0], dsItem.Tables[1].DefaultView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int GetServiceItemsCountByNameAndServiceId(int serviceId, string groupName, string itemName, Type itemType)
|
||||||
|
{
|
||||||
|
string itemTypeName = ObjectUtils.GetTypeFullName(itemType);
|
||||||
|
|
||||||
|
return DataProvider.GetServiceItemsCountByNameAndServiceId(SecurityContext.User.UserId,
|
||||||
|
serviceId, groupName, itemName, itemTypeName);
|
||||||
|
}
|
||||||
|
|
||||||
public static bool CheckServiceItemExists(string itemName, Type itemType)
|
public static bool CheckServiceItemExists(string itemName, Type itemType)
|
||||||
{
|
{
|
||||||
return CheckServiceItemExists(itemName, null, itemType);
|
return CheckServiceItemExists(itemName, null, itemType);
|
||||||
|
|
|
@ -168,9 +168,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return RemoveRdsServerFromCollectionInternal(itemId, rdsServer, rdsCollection);
|
return RemoveRdsServerFromCollectionInternal(itemId, rdsServer, rdsCollection);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResultObject RemoveRdsServerFromOrganization(int rdsServerId)
|
public static ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId)
|
||||||
{
|
{
|
||||||
return RemoveRdsServerFromOrganizationInternal(rdsServerId);
|
return RemoveRdsServerFromOrganizationInternal(itemId, rdsServerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ResultObject UpdateRdsServer(RdsServer rdsServer)
|
public static ResultObject UpdateRdsServer(RdsServer rdsServer)
|
||||||
|
@ -248,6 +248,81 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return GetRdsCollectionSessionHostsInternal(collectionId);
|
return GetRdsCollectionSessionHostsInternal(collectionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static RdsServerInfo GetRdsServerInfo(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return GetRdsServerInfoInternal(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetRdsServerStatus(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return GetRdsServerStatusInternal(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResultObject ShutDownRdsServer(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return ShutDownRdsServerInternal(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResultObject RestartRdsServer(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return RestartRdsServerInternal(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static List<OrganizationUser> GetRdsCollectionLocalAdmins(int collectionId)
|
||||||
|
{
|
||||||
|
return GetRdsCollectionLocalAdminsInternal(collectionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int collectionId)
|
||||||
|
{
|
||||||
|
return SaveRdsCollectionLocalAdminsInternal(users, collectionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ResultObject InstallSessionHostsCertificate(int collectionId, byte[] certificate, string password)
|
||||||
|
{
|
||||||
|
return InstallSessionHostsCertificateInternal(collectionId, certificate, password);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ResultObject InstallSessionHostsCertificateInternal(int collectionId, byte[] certificate, string password)
|
||||||
|
{
|
||||||
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "INSTALL_CERTIFICATE");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
Organization org = OrganizationController.GetOrganization(collection.ItemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
|
||||||
|
|
||||||
|
rds.InstallCertificate(certificate, password, servers.Select(s => s.FqdName).ToArray());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static RdsCollection GetRdsCollectionInternal(int collectionId)
|
private static RdsCollection GetRdsCollectionInternal(int collectionId)
|
||||||
{
|
{
|
||||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
@ -280,11 +355,87 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<OrganizationUser> GetRdsCollectionLocalAdminsInternal(int collectionId)
|
||||||
|
{
|
||||||
|
var result = new List<OrganizationUser>();
|
||||||
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
|
||||||
|
Organization org = OrganizationController.GetOrganization(collection.ItemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
|
||||||
|
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(collection.ItemId, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||||
|
var organizationAdmins = rds.GetRdsCollectionLocalAdmins(servers.First().FqdName);
|
||||||
|
|
||||||
|
return organizationUsers.Where(o => organizationAdmins.Select(a => a.ToLower()).Contains(o.DomainUserName.ToLower())).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ResultObject SaveRdsCollectionLocalAdminsInternal(OrganizationUser[] users, int collectionId)
|
||||||
|
{
|
||||||
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "SAVE_LOCAL_ADMINS");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
Organization org = OrganizationController.GetOrganization(collection.ItemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
|
||||||
|
|
||||||
|
rds.SaveRdsCollectionLocalAdmins(users, servers.Select(s => s.FqdName).ToArray());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw TaskManager.WriteError(ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static RdsCollectionSettings GetRdsCollectionSettingsInternal(int collectionId)
|
private static RdsCollectionSettings GetRdsCollectionSettingsInternal(int collectionId)
|
||||||
{
|
{
|
||||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
|
var settings = ObjectUtils.FillObjectFromDataReader<RdsCollectionSettings>(DataProvider.GetRdsCollectionSettingsByCollectionId(collectionId));
|
||||||
return ObjectUtils.FillObjectFromDataReader<RdsCollectionSettings>(DataProvider.GetRdsCollectionSettingsByCollectionId(collectionId));
|
|
||||||
|
if (settings.SecurityLayer == null)
|
||||||
|
{
|
||||||
|
settings.SecurityLayer = SecurityLayerValues.Negotiate.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.EncryptionLevel == null)
|
||||||
|
{
|
||||||
|
settings.EncryptionLevel = EncryptionLevel.ClientCompatible.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings.AuthenticateUsingNLA == null)
|
||||||
|
{
|
||||||
|
settings.AuthenticateUsingNLA = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<RdsCollection> GetOrganizationRdsCollectionsInternal(int itemId)
|
private static List<RdsCollection> GetOrganizationRdsCollectionsInternal(int itemId)
|
||||||
|
@ -336,7 +487,10 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
ClientPrinterRedirected = true,
|
ClientPrinterRedirected = true,
|
||||||
ClientPrinterAsDefault = true,
|
ClientPrinterAsDefault = true,
|
||||||
RDEasyPrintDriverEnabled = true,
|
RDEasyPrintDriverEnabled = true,
|
||||||
MaxRedirectedMonitors = 16
|
MaxRedirectedMonitors = 16,
|
||||||
|
EncryptionLevel = EncryptionLevel.ClientCompatible.ToString(),
|
||||||
|
SecurityLayer = SecurityLayerValues.Negotiate.ToString(),
|
||||||
|
AuthenticateUsingNLA = true
|
||||||
};
|
};
|
||||||
|
|
||||||
rds.CreateCollection(org.OrganizationId, collection);
|
rds.CreateCollection(org.OrganizationId, collection);
|
||||||
|
@ -509,8 +663,8 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToArray();
|
||||||
rds.RemoveCollection(org.OrganizationId, collection.Name);
|
rds.RemoveCollection(org.OrganizationId, collection.Name, servers);
|
||||||
|
|
||||||
DataProvider.DeleteRDSCollection(collection.Id);
|
DataProvider.DeleteRDSCollection(collection.Id);
|
||||||
}
|
}
|
||||||
|
@ -586,7 +740,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
foreach (var tmpServer in tmpServers)
|
foreach (var tmpServer in tmpServers)
|
||||||
{
|
{
|
||||||
FillRdsServerData(tmpServer);
|
FillRdsServerData(tmpServer);
|
||||||
}
|
}
|
||||||
|
|
||||||
result.Servers = tmpServers.ToArray();
|
result.Servers = tmpServers.ToArray();
|
||||||
|
@ -606,8 +760,21 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(organization.PackageId));
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(organization.PackageId));
|
||||||
|
var userSessions = rds.GetRdsUserSessions(collection.Name).ToList();
|
||||||
|
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(collection.ItemId, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||||
|
|
||||||
return rds.GetRdsUserSessions(collection.Name).ToList();
|
foreach(var userSession in userSessions)
|
||||||
|
{
|
||||||
|
var organizationUser = organizationUsers.FirstOrDefault(o => o.SamAccountName.Equals(userSession.SamAccountName, StringComparison.CurrentCultureIgnoreCase));
|
||||||
|
|
||||||
|
if (organizationUser != null)
|
||||||
|
{
|
||||||
|
userSession.IsVip = organizationUser.IsVIP;
|
||||||
|
result.Add(userSession);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static RdsServersPaged GetFreeRdsServersPagedInternal(int itemId, string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
|
private static RdsServersPaged GetFreeRdsServersPagedInternal(int itemId, string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows)
|
||||||
|
@ -940,11 +1107,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
rds.AddSessionHostFeatureToServer(rdsServer.FqdName);
|
rds.AddSessionHostFeatureToServer(rdsServer.FqdName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rds.MoveRdsServerToTenantOU(rdsServer.FqdName, org.OrganizationId);
|
||||||
DataProvider.AddRDSServerToOrganization(itemId, serverId);
|
DataProvider.AddRDSServerToOrganization(itemId, serverId);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
result.AddError("REMOTE_DESKTOP_SERVICES_ADD_RDS_SERVER_TO_ORGANIZATION", ex);
|
throw TaskManager.WriteError(ex);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -961,17 +1129,29 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ResultObject RemoveRdsServerFromOrganizationInternal(int rdsServerId)
|
private static ResultObject RemoveRdsServerFromOrganizationInternal(int itemId, int rdsServerId)
|
||||||
{
|
{
|
||||||
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "REMOVE_RDS_SERVER_FROM_ORGANIZATION");
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "REMOVE_RDS_SERVER_FROM_ORGANIZATION");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rdsServer = ObjectUtils.FillObjectFromDataReader<RdsServer>(DataProvider.GetRDSServerById(rdsServerId));
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
rds.RemoveRdsServerFromTenantOU(rdsServer.FqdName, org.OrganizationId);
|
||||||
DataProvider.RemoveRDSServerFromOrganization(rdsServerId);
|
DataProvider.RemoveRDSServerFromOrganization(rdsServerId);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
result.AddError("REMOTE_DESKTOP_SERVICES_REMOVE_RDS_SERVER_FROM_ORGANIZATION", ex);
|
throw TaskManager.WriteError(ex);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
@ -1235,6 +1415,118 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static RdsServerInfo GetRdsServerInfoInternal(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
return new RdsServerInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
var result = rds.GetRdsServerInfo(fqdnName);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string GetRdsServerStatusInternal(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
var result = "Unavailable";
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
result = rds.GetRdsServerStatus(fqdnName);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ResultObject ShutDownRdsServerInternal(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "SHUTDOWN_RDS_SERVER");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
rds.ShutDownRdsServer(fqdnName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result.AddError("REMOTE_DESKTOP_SERVICES_SHUTDOWN_RDS_SERVER", ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ResultObject RestartRdsServerInternal(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "RESTART_RDS_SERVER");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Organization org = OrganizationController.GetOrganization(itemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
result.IsSuccess = false;
|
||||||
|
result.AddError("", new NullReferenceException("Organization not found"));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
|
rds.RestartRdsServer(fqdnName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
result.AddError("REMOTE_DESKTOP_SERVICES_RESTART_RDS_SERVER", ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (!result.IsSuccess)
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask(result);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TaskManager.CompleteResultTask();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static List<RemoteApplication> GetCollectionRemoteApplicationsInternal(int itemId, string collectionName)
|
private static List<RemoteApplication> GetCollectionRemoteApplicationsInternal(int itemId, string collectionName)
|
||||||
{
|
{
|
||||||
var result = new List<RemoteApplication>();
|
var result = new List<RemoteApplication>();
|
||||||
|
@ -1410,7 +1702,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
foreach (var server in servers)
|
foreach (var server in servers)
|
||||||
{
|
{
|
||||||
RemoveRdsServerFromOrganization(server.Id);
|
RemoveRdsServerFromOrganization(itemId, server.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
@ -1074,10 +1074,14 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CheckNumericQuota(PackageContext cntx, List<string> errors, string quotaName, int currentVal, int val, string messageKey)
|
private static void CheckNumericQuota(PackageContext cntx, List<string> errors, string quotaName, long currentVal, long val, string messageKey)
|
||||||
{
|
{
|
||||||
CheckQuotaValue(cntx, errors, quotaName, currentVal, val, messageKey);
|
CheckQuotaValue(cntx, errors, quotaName, currentVal, val, messageKey);
|
||||||
}
|
}
|
||||||
|
private static void CheckNumericQuota(PackageContext cntx, List<string> errors, string quotaName, int currentVal, int val, string messageKey)
|
||||||
|
{
|
||||||
|
CheckQuotaValue(cntx, errors, quotaName, Convert.ToInt64(currentVal), Convert.ToInt64(val), messageKey);
|
||||||
|
}
|
||||||
|
|
||||||
private static void CheckNumericQuota(PackageContext cntx, List<string> errors, string quotaName, int val, string messageKey)
|
private static void CheckNumericQuota(PackageContext cntx, List<string> errors, string quotaName, int val, string messageKey)
|
||||||
{
|
{
|
||||||
|
@ -1094,7 +1098,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
CheckQuotaValue(cntx, errors, quotaName, 0, -1, messageKey);
|
CheckQuotaValue(cntx, errors, quotaName, 0, -1, messageKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CheckQuotaValue(PackageContext cntx, List<string> errors, string quotaName, int currentVal, int val, string messageKey)
|
private static void CheckQuotaValue(PackageContext cntx, List<string> errors, string quotaName, long currentVal, long val, string messageKey)
|
||||||
{
|
{
|
||||||
if (!cntx.Quotas.ContainsKey(quotaName))
|
if (!cntx.Quotas.ContainsKey(quotaName))
|
||||||
return;
|
return;
|
||||||
|
@ -1111,7 +1115,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
errors.Add(messageKey);
|
errors.Add(messageKey);
|
||||||
else if (quota.QuotaTypeId == 2)
|
else if (quota.QuotaTypeId == 2)
|
||||||
{
|
{
|
||||||
int maxValue = quota.QuotaAllocatedValue - quota.QuotaUsedValue + currentVal;
|
long maxValue = quota.QuotaAllocatedValue - quota.QuotaUsedValue + currentVal;
|
||||||
if(val > maxValue)
|
if(val > maxValue)
|
||||||
errors.Add(messageKey + ":" + maxValue);
|
errors.Add(messageKey + ":" + maxValue);
|
||||||
}
|
}
|
||||||
|
@ -1795,8 +1799,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
else if (state == VirtualMachineRequestedState.Reboot)
|
else if (state == VirtualMachineRequestedState.Reboot)
|
||||||
{
|
{
|
||||||
// shutdown first
|
// shutdown first
|
||||||
ResultObject shutdownResult = ChangeVirtualMachineState(itemId, VirtualMachineRequestedState.ShutDown);
|
ResultObject shutdownResult = ChangeVirtualMachineState(itemId,
|
||||||
if(!shutdownResult.IsSuccess)
|
VirtualMachineRequestedState.ShutDown);
|
||||||
|
if (!shutdownResult.IsSuccess)
|
||||||
{
|
{
|
||||||
TaskManager.CompleteResultTask(res);
|
TaskManager.CompleteResultTask(res);
|
||||||
return shutdownResult;
|
return shutdownResult;
|
||||||
|
@ -1817,20 +1822,29 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
|
|
||||||
JobResult result = vps.ChangeVirtualMachineState(machine.VirtualMachineId, state);
|
JobResult result = vps.ChangeVirtualMachineState(machine.VirtualMachineId, state);
|
||||||
|
|
||||||
// check return
|
if (result.Job.JobState == ConcreteJobState.Completed)
|
||||||
if (result.ReturnValue != ReturnCode.JobStarted)
|
|
||||||
{
|
{
|
||||||
LogReturnValueResult(res, result);
|
LogReturnValueResult(res, result);
|
||||||
TaskManager.CompleteResultTask(res);
|
TaskManager.CompleteTask();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
// wait for completion
|
|
||||||
if (!JobCompleted(vps, result.Job))
|
|
||||||
{
|
{
|
||||||
LogJobResult(res, result.Job);
|
// check return
|
||||||
TaskManager.CompleteResultTask(res);
|
if (result.ReturnValue != ReturnCode.JobStarted)
|
||||||
return res;
|
{
|
||||||
|
LogReturnValueResult(res, result);
|
||||||
|
TaskManager.CompleteResultTask(res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
// wait for completion
|
||||||
|
if (!JobCompleted(vps, result.Job))
|
||||||
|
{
|
||||||
|
LogJobResult(res, result.Job);
|
||||||
|
TaskManager.CompleteResultTask(res);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,6 +158,24 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return EnterpriseStorageController.CheckUsersDomainExists(itemId);
|
return EnterpriseStorageController.CheckUsersDomainExists(itemId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public string GetWebDavPortalUserSettingsByAccountId(int accountId)
|
||||||
|
{
|
||||||
|
return EnterpriseStorageController.GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public void UpdateWebDavPortalUserSettings(int accountId, string settings)
|
||||||
|
{
|
||||||
|
EnterpriseStorageController.UpdateUserSettings(accountId,settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public SystemFile[] SearchFiles(int itemId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive)
|
||||||
|
{
|
||||||
|
return EnterpriseStorageController.SearchFiles(itemId, searchPaths, searchText, userPrincipalName, recursive);
|
||||||
|
}
|
||||||
|
|
||||||
#region Directory Browsing
|
#region Directory Browsing
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
|
|
|
@ -189,9 +189,9 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
public ResultObject RemoveRdsServerFromOrganization(int rdsServerId)
|
public ResultObject RemoveRdsServerFromOrganization(int itemId, int rdsServerId)
|
||||||
{
|
{
|
||||||
return RemoteDesktopServicesController.RemoveRdsServerFromOrganization(rdsServerId);
|
return RemoteDesktopServicesController.RemoveRdsServerFromOrganization(itemId, rdsServerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
[WebMethod]
|
[WebMethod]
|
||||||
|
@ -289,5 +289,47 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
{
|
{
|
||||||
return RemoteDesktopServicesController.GetRdsCollectionSessionHosts(collectionId);
|
return RemoteDesktopServicesController.GetRdsCollectionSessionHosts(collectionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public RdsServerInfo GetRdsServerInfo(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.GetRdsServerInfo(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public string GetRdsServerStatus(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.GetRdsServerStatus(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ResultObject ShutDownRdsServer(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.ShutDownRdsServer(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ResultObject RestartRdsServer(int itemId, string fqdnName)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.RestartRdsServer(itemId, fqdnName);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public List<OrganizationUser> GetRdsCollectionLocalAdmins(int collectionId)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.GetRdsCollectionLocalAdmins(collectionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ResultObject SaveRdsCollectionLocalAdmins(OrganizationUser[] users, int collectionId)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.SaveRdsCollectionLocalAdmins(users, collectionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ResultObject InstallSessionHostsCertificate(int collectionId, byte[] certificate, string password)
|
||||||
|
{
|
||||||
|
return RemoteDesktopServicesController.InstallSessionHostsCertificate(collectionId, certificate, password);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,6 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules);
|
bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules);
|
||||||
WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting);
|
WebDavFolderRule[] GetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting);
|
||||||
bool CheckFileServicesInstallation();
|
bool CheckFileServicesInstallation();
|
||||||
|
SystemFile[] Search(string organizationId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace WebsitePanel.Providers.Mail
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class MailAccount : ServiceProviderItem
|
public class MailAccount : ServiceProviderItem
|
||||||
{
|
{
|
||||||
private bool enabled;
|
private bool enabled = true;
|
||||||
private string password;
|
private string password;
|
||||||
private string replyTo;
|
private string replyTo;
|
||||||
private bool responderEnabled;
|
private bool responderEnabled;
|
||||||
|
|
|
@ -144,6 +144,8 @@ namespace WebsitePanel.Providers.OS
|
||||||
set { this.url = value; }
|
set { this.url = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string RelativeUrl { get; set; }
|
||||||
|
|
||||||
public string DriveLetter
|
public string DriveLetter
|
||||||
{
|
{
|
||||||
get { return this.driveLetter; }
|
get { return this.driveLetter; }
|
||||||
|
|
|
@ -31,6 +31,7 @@ using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
namespace WebsitePanel.Providers.RemoteDesktopServices
|
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
{
|
{
|
||||||
|
@ -42,7 +43,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
bool CreateCollection(string organizationId, RdsCollection collection);
|
bool CreateCollection(string organizationId, RdsCollection collection);
|
||||||
bool AddRdsServersToDeployment(RdsServer[] servers);
|
bool AddRdsServersToDeployment(RdsServer[] servers);
|
||||||
RdsCollection GetCollection(string collectionName);
|
RdsCollection GetCollection(string collectionName);
|
||||||
bool RemoveCollection(string organizationId, string collectionName);
|
bool RemoveCollection(string organizationId, string collectionName, List<RdsServer> servers);
|
||||||
bool SetUsersInCollection(string organizationId, string collectionName, List<string> users);
|
bool SetUsersInCollection(string organizationId, string collectionName, List<string> users);
|
||||||
void AddSessionHostServerToCollection(string organizationId, string collectionName, RdsServer server);
|
void AddSessionHostServerToCollection(string organizationId, string collectionName, RdsServer server);
|
||||||
void AddSessionHostServersToCollection(string organizationId, string collectionName, List<RdsServer> servers);
|
void AddSessionHostServersToCollection(string organizationId, string collectionName, List<RdsServer> servers);
|
||||||
|
@ -69,5 +70,14 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
List<RdsUserSession> GetRdsUserSessions(string collectionName);
|
List<RdsUserSession> GetRdsUserSessions(string collectionName);
|
||||||
void LogOffRdsUser(string unifiedSessionId, string hostServer);
|
void LogOffRdsUser(string unifiedSessionId, string hostServer);
|
||||||
List<string> GetRdsCollectionSessionHosts(string collectionName);
|
List<string> GetRdsCollectionSessionHosts(string collectionName);
|
||||||
|
RdsServerInfo GetRdsServerInfo(string serverName);
|
||||||
|
string GetRdsServerStatus(string serverName);
|
||||||
|
void ShutDownRdsServer(string serverName);
|
||||||
|
void RestartRdsServer(string serverName);
|
||||||
|
void SaveRdsCollectionLocalAdmins(List<OrganizationUser> users, List<string> hosts);
|
||||||
|
List<string> GetRdsCollectionLocalAdmins(string hostName);
|
||||||
|
void MoveRdsServerToTenantOU(string hostName, string organizationId);
|
||||||
|
void RemoveRdsServerFromTenantOU(string hostName, string organizationId);
|
||||||
|
void InstallCertificate(byte[] certificate, string password, List<string> hostNames);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,9 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
public bool ClientPrinterRedirected { get; set; }
|
public bool ClientPrinterRedirected { get; set; }
|
||||||
public bool ClientPrinterAsDefault { get; set; }
|
public bool ClientPrinterAsDefault { get; set; }
|
||||||
public bool RDEasyPrintDriverEnabled { get; set; }
|
public bool RDEasyPrintDriverEnabled { get; set; }
|
||||||
public int MaxRedirectedMonitors { get; set; }
|
public int MaxRedirectedMonitors { get; set; }
|
||||||
|
public string SecurityLayer { get; set; }
|
||||||
|
public string EncryptionLevel { get; set; }
|
||||||
|
public bool AuthenticateUsingNLA { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,5 +47,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
public string ItemName { get; set; }
|
public string ItemName { get; set; }
|
||||||
public int? RdsCollectionId { get; set; }
|
public int? RdsCollectionId { get; set; }
|
||||||
public bool ConnectionEnabled { get; set; }
|
public bool ConnectionEnabled { get; set; }
|
||||||
|
public string Status { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
{
|
||||||
|
public class RdsServerDriveInfo
|
||||||
|
{
|
||||||
|
public string DeviceId { get; set; }
|
||||||
|
public string VolumeName { get; set; }
|
||||||
|
public double SizeMb { get; set; }
|
||||||
|
public double FreeSpaceMb { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
{
|
||||||
|
public class RdsServerInfo
|
||||||
|
{
|
||||||
|
public string Status { get; set; }
|
||||||
|
public int NumberOfCores { get; set; }
|
||||||
|
public int MaxClockSpeed { get; set; }
|
||||||
|
public int LoadPercentage { get; set; }
|
||||||
|
public double MemoryAllocatedMb { get; set; }
|
||||||
|
public double FreeMemoryMb { get; set; }
|
||||||
|
public RdsServerDriveInfo[] Drives { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,5 +13,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
public string SessionState { get; set; }
|
public string SessionState { get; set; }
|
||||||
public string HostServer { get; set; }
|
public string HostServer { get; set; }
|
||||||
public string DomainName { get; set; }
|
public string DomainName { get; set; }
|
||||||
|
public bool IsVip { get; set; }
|
||||||
|
public string SamAccountName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,5 +36,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
public string FileVirtualPath { get; set; }
|
public string FileVirtualPath { get; set; }
|
||||||
public bool ShowInWebAccess { get; set; }
|
public bool ShowInWebAccess { get; set; }
|
||||||
public string RequiredCommandLine { get; set; }
|
public string RequiredCommandLine { get; set; }
|
||||||
|
public string[] Users { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,9 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
Completed = 7,
|
Completed = 7,
|
||||||
Terminated = 8,
|
Terminated = 8,
|
||||||
Killed = 9,
|
Killed = 9,
|
||||||
Exception = 10
|
Exception = 10,
|
||||||
|
|
||||||
|
NotStarted = 11,
|
||||||
|
Failed = 12,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
// Copyright (c) 2014, Outercurve Foundation.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
// are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// - Redistributions of source code must retain the above copyright notice, this
|
||||||
|
// list of conditions and the following disclaimer.
|
||||||
|
//
|
||||||
|
// - Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
|
// and/or other materials provided with the distribution.
|
||||||
|
//
|
||||||
|
// - Neither the name of the Outercurve Foundation nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from this
|
||||||
|
// software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
|
{
|
||||||
|
public class DvdDriveInfo
|
||||||
|
{
|
||||||
|
public ControllerType ControllerType { get; set; }
|
||||||
|
public int ControllerNumber { get; set; }
|
||||||
|
public int ControllerLocation { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Id { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -35,9 +35,9 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
public class MemoryInfo
|
public class MemoryInfo
|
||||||
{
|
{
|
||||||
public bool DynamicMemoryEnabled { get; set; }
|
public bool DynamicMemoryEnabled { get; set; }
|
||||||
public Int32 Startup { get; set; }
|
public Int64 Startup { get; set; }
|
||||||
public Int32 Minimum { get; set; }
|
public Int64 Minimum { get; set; }
|
||||||
public Int32 Maximum { get; set; }
|
public Int64 Maximum { get; set; }
|
||||||
public int Buffer { get; set; }
|
public int Buffer { get; set; }
|
||||||
public int Priority { get; set; }
|
public int Priority { get; set; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,9 +35,10 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
public enum OperationalStatus
|
public enum OperationalStatus
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
OK = 2,
|
Ok = 2,
|
||||||
Error = 6,
|
Error = 6,
|
||||||
NoContact = 12,
|
NoContact = 12,
|
||||||
LostCommunication = 13
|
LostCommunication = 13,
|
||||||
|
Paused = 15
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,8 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
public string ParentPath { get; set; }
|
public string ParentPath { get; set; }
|
||||||
public VirtualHardDiskType DiskType { get; set; }
|
public VirtualHardDiskType DiskType { get; set; }
|
||||||
public bool SupportPersistentReservations { get; set; }
|
public bool SupportPersistentReservations { get; set; }
|
||||||
public long MaximumIOPS { get; set; }
|
public ulong MaximumIOPS { get; set; }
|
||||||
public long MinimumIOPS { get; set; }
|
public ulong MinimumIOPS { get; set; }
|
||||||
public ControllerType VHDControllerType { get; set; }
|
public ControllerType VHDControllerType { get; set; }
|
||||||
public int ControllerNumber { get; set; }
|
public int ControllerNumber { get; set; }
|
||||||
public int ControllerLocation { get; set; }
|
public int ControllerLocation { get; set; }
|
||||||
|
|
|
@ -69,8 +69,8 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
public int CpuUsage { get; set; }
|
public int CpuUsage { get; set; }
|
||||||
|
|
||||||
[Persistent]
|
[Persistent]
|
||||||
public int RamSize { get; set; }
|
public long RamSize { get; set; }
|
||||||
public int RamUsage { get; set; }
|
public long RamUsage { get; set; }
|
||||||
[Persistent]
|
[Persistent]
|
||||||
public int HddSize { get; set; }
|
public int HddSize { get; set; }
|
||||||
public LogicalDisk[] HddLogicalDisks { get; set; }
|
public LogicalDisk[] HddLogicalDisks { get; set; }
|
||||||
|
|
|
@ -36,5 +36,6 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
{
|
{
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string MacAddress { get; set; }
|
public string MacAddress { get; set; }
|
||||||
|
public string SwitchName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -135,6 +135,8 @@
|
||||||
<Compile Include="RemoteDesktopServices\RdsEnums.cs" />
|
<Compile Include="RemoteDesktopServices\RdsEnums.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsPolicyTypes.cs" />
|
<Compile Include="RemoteDesktopServices\RdsPolicyTypes.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsServer.cs" />
|
<Compile Include="RemoteDesktopServices\RdsServer.cs" />
|
||||||
|
<Compile Include="RemoteDesktopServices\RdsServerDriveInfo.cs" />
|
||||||
|
<Compile Include="RemoteDesktopServices\RdsServerInfo.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsServersPaged.cs" />
|
<Compile Include="RemoteDesktopServices\RdsServersPaged.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RdsUserSession.cs" />
|
<Compile Include="RemoteDesktopServices\RdsUserSession.cs" />
|
||||||
<Compile Include="RemoteDesktopServices\RemoteApplication.cs" />
|
<Compile Include="RemoteDesktopServices\RemoteApplication.cs" />
|
||||||
|
@ -307,6 +309,7 @@
|
||||||
<Compile Include="Virtualization\KvpExchangeDataItem.cs" />
|
<Compile Include="Virtualization\KvpExchangeDataItem.cs" />
|
||||||
<Compile Include="Virtualization\LibraryItem.cs" />
|
<Compile Include="Virtualization\LibraryItem.cs" />
|
||||||
<Compile Include="Virtualization\LogicalDisk.cs" />
|
<Compile Include="Virtualization\LogicalDisk.cs" />
|
||||||
|
<Compile Include="Virtualization\DvdDriveInfo.cs" />
|
||||||
<Compile Include="Virtualization\MemoryInfo.cs" />
|
<Compile Include="Virtualization\MemoryInfo.cs" />
|
||||||
<Compile Include="Virtualization\MonitoredObjectAlert.cs" />
|
<Compile Include="Virtualization\MonitoredObjectAlert.cs" />
|
||||||
<Compile Include="Virtualization\MonitoredObjectEvent.cs" />
|
<Compile Include="Virtualization\MonitoredObjectEvent.cs" />
|
||||||
|
|
|
@ -27,9 +27,12 @@
|
||||||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Data.OleDb;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security.Principal;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
|
|
||||||
|
@ -62,6 +65,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Folders
|
#region Folders
|
||||||
|
|
||||||
public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
|
public SystemFile[] GetFolders(string organizationId, WebDavSetting[] settings)
|
||||||
{
|
{
|
||||||
ArrayList items = new ArrayList();
|
ArrayList items = new ArrayList();
|
||||||
|
@ -70,7 +74,8 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
|
|
||||||
foreach (var setting in webDavSettings)
|
foreach (var setting in webDavSettings)
|
||||||
{
|
{
|
||||||
string rootPath = string.Format("{0}:\\{1}\\{2}", setting.LocationDrive, setting.HomeFolder, organizationId);
|
string rootPath = string.Format("{0}:\\{1}\\{2}", setting.LocationDrive, setting.HomeFolder,
|
||||||
|
organizationId);
|
||||||
|
|
||||||
var windows = new WebsitePanel.Providers.OS.Windows2012();
|
var windows = new WebsitePanel.Providers.OS.Windows2012();
|
||||||
|
|
||||||
|
@ -114,16 +119,17 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (SystemFile[])items.ToArray(typeof(SystemFile));
|
return (SystemFile[]) items.ToArray(typeof (SystemFile));
|
||||||
}
|
}
|
||||||
|
|
||||||
public SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting)
|
public SystemFile GetFolder(string organizationId, string folderName, WebDavSetting setting)
|
||||||
{
|
{
|
||||||
var webDavSetting = GetWebDavSetting(setting);
|
var webDavSetting = GetWebDavSetting(setting);
|
||||||
|
|
||||||
string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folderName);
|
string fullName = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder,
|
||||||
|
organizationId, folderName);
|
||||||
SystemFile folder = null;
|
SystemFile folder = null;
|
||||||
|
|
||||||
var windows = new WebsitePanel.Providers.OS.Windows2012();
|
var windows = new WebsitePanel.Providers.OS.Windows2012();
|
||||||
|
|
||||||
if (Directory.Exists(fullName))
|
if (Directory.Exists(fullName))
|
||||||
|
@ -151,7 +157,7 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
|
folder.FRSMQuotaGB = windows.ConvertMegaBytesToGB(folder.FRSMQuotaMB);
|
||||||
folder.FsrmQuotaType = quota.QuotaType;
|
folder.FsrmQuotaType = quota.QuotaType;
|
||||||
}
|
}
|
||||||
|
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,17 +165,21 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
{
|
{
|
||||||
var webDavSetting = GetWebDavSetting(setting);
|
var webDavSetting = GetWebDavSetting(setting);
|
||||||
|
|
||||||
FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder));
|
FileUtils.CreateDirectory(string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive,
|
||||||
|
webDavSetting.HomeFolder, organizationId, folder));
|
||||||
}
|
}
|
||||||
|
|
||||||
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
|
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder,
|
||||||
|
WebDavSetting setting)
|
||||||
{
|
{
|
||||||
var webDavSetting = GetWebDavSetting(setting);
|
var webDavSetting = GetWebDavSetting(setting);
|
||||||
|
|
||||||
var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, originalFolder);
|
var oldPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder,
|
||||||
var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, newFolder);
|
organizationId, originalFolder);
|
||||||
|
var newPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder,
|
||||||
|
organizationId, newFolder);
|
||||||
|
|
||||||
FileUtils.MoveFile(oldPath,newPath);
|
FileUtils.MoveFile(oldPath, newPath);
|
||||||
|
|
||||||
IWebDav webdav = new WebDav(webDavSetting);
|
IWebDav webdav = new WebDav(webDavSetting);
|
||||||
|
|
||||||
|
@ -183,17 +193,20 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
{
|
{
|
||||||
var webDavSetting = GetWebDavSetting(setting);
|
var webDavSetting = GetWebDavSetting(setting);
|
||||||
|
|
||||||
string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder);
|
string rootPath = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder,
|
||||||
|
organizationId, folder);
|
||||||
|
|
||||||
DirectoryInfo treeRoot = new DirectoryInfo(rootPath);
|
DirectoryInfo treeRoot = new DirectoryInfo(rootPath);
|
||||||
|
|
||||||
if (treeRoot.Exists)
|
if (treeRoot.Exists)
|
||||||
{
|
{
|
||||||
DirectoryInfo[] dirs = treeRoot.GetDirectories();
|
DirectoryInfo[] dirs = treeRoot.GetDirectories();
|
||||||
while (dirs.Length > 0)
|
while (dirs.Length > 0)
|
||||||
{
|
{
|
||||||
foreach (DirectoryInfo dir in dirs)
|
foreach (DirectoryInfo dir in dirs)
|
||||||
DeleteFolder(organizationId, folder != string.Empty ? string.Format("{0}\\{1}", folder, dir.Name) : dir.Name, webDavSetting);
|
DeleteFolder(organizationId,
|
||||||
|
folder != string.Empty ? string.Format("{0}\\{1}", folder, dir.Name) : dir.Name,
|
||||||
|
webDavSetting);
|
||||||
|
|
||||||
dirs = treeRoot.GetDirectories();
|
dirs = treeRoot.GetDirectories();
|
||||||
}
|
}
|
||||||
|
@ -207,14 +220,15 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
}
|
}
|
||||||
|
|
||||||
IWebDav webdav = new WebDav(webDavSetting);
|
IWebDav webdav = new WebDav(webDavSetting);
|
||||||
|
|
||||||
webdav.DeleteAllWebDavRules(organizationId, folder);
|
webdav.DeleteAllWebDavRules(organizationId, folder);
|
||||||
|
|
||||||
Directory.Delete(treeRoot.FullName, true);
|
Directory.Delete(treeRoot.FullName, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting, WebDavFolderRule[] rules)
|
public bool SetFolderWebDavRules(string organizationId, string folder, WebDavSetting setting,
|
||||||
|
WebDavFolderRule[] rules)
|
||||||
{
|
{
|
||||||
var users = new List<UserPermission>();
|
var users = new List<UserPermission>();
|
||||||
|
|
||||||
|
@ -243,14 +257,15 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
|
|
||||||
var webDavSetting = GetWebDavSetting(setting);
|
var webDavSetting = GetWebDavSetting(setting);
|
||||||
|
|
||||||
string path = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder, organizationId, folder);
|
string path = string.Format("{0}:\\{1}\\{2}\\{3}", webDavSetting.LocationDrive, webDavSetting.HomeFolder,
|
||||||
|
organizationId, folder);
|
||||||
|
|
||||||
SecurityUtils.ResetNtfsPermissions(path);
|
SecurityUtils.ResetNtfsPermissions(path);
|
||||||
|
|
||||||
SecurityUtils.GrantGroupNtfsPermissions(path, users.ToArray(), false, new RemoteServerSettings(), null, null);
|
SecurityUtils.GrantGroupNtfsPermissions(path, users.ToArray(), false, new RemoteServerSettings(), null, null);
|
||||||
|
|
||||||
IWebDav webdav = new WebDav(webDavSetting);
|
IWebDav webdav = new WebDav(webDavSetting);
|
||||||
|
|
||||||
return webdav.SetFolderWebDavRules(organizationId, folder, rules);
|
return webdav.SetFolderWebDavRules(organizationId, folder, rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,6 +285,73 @@ namespace WebsitePanel.Providers.EnterpriseStorage
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public SystemFile[] Search(string organizationId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive)
|
||||||
|
{
|
||||||
|
var settings = GetWebDavSetting(null);
|
||||||
|
var result = new List<SystemFile>();
|
||||||
|
var isRootSearch = false;
|
||||||
|
|
||||||
|
if (searchPaths.Any(string.IsNullOrEmpty))
|
||||||
|
{
|
||||||
|
isRootSearch = true;
|
||||||
|
searchPaths = searchPaths.Where(x => !string.IsNullOrEmpty(x)).ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
//using (new WindowsIdentity(userPrincipalName).Impersonate())
|
||||||
|
{
|
||||||
|
using (var conn = new OleDbConnection("Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"))
|
||||||
|
{
|
||||||
|
var rootFolder = Path.Combine(settings.LocationDrive + ":\\", settings.HomeFolder);
|
||||||
|
rootFolder = Path.Combine(rootFolder, organizationId);
|
||||||
|
|
||||||
|
var wsSql = string.Format(@"SELECT System.FileName, System.DateModified, System.Size, System.Kind, System.ItemPathDisplay, System.ItemType FROM SYSTEMINDEX WHERE System.FileName LIKE '%{0}%' AND ({1})",
|
||||||
|
searchText, string.Join(" OR ", searchPaths.Select(x => string.Format("{0} = '{1}'", recursive ? "SCOPE" : "DIRECTORY", Path.Combine(rootFolder, x))).ToArray()));
|
||||||
|
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
var cmd = new OleDbCommand(wsSql, conn);
|
||||||
|
|
||||||
|
using (OleDbDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
while (reader!= null && reader.Read())
|
||||||
|
{
|
||||||
|
var file = new SystemFile {Name = reader[0] as string};
|
||||||
|
|
||||||
|
file.Changed = file.CreatedDate = reader[1] is DateTime ? (DateTime)reader[1] : new DateTime();
|
||||||
|
file.Size = reader[2] is long ? (long) reader[2] : 0;
|
||||||
|
|
||||||
|
var kind = reader[3] is IEnumerable ? ((IEnumerable)reader[3]).Cast<string>().ToList() : null;
|
||||||
|
var itemType = reader[5] as string ?? string.Empty;
|
||||||
|
|
||||||
|
if (kind != null && kind.Any() && itemType.ToLowerInvariant() != ".zip")
|
||||||
|
{
|
||||||
|
file.IsDirectory = kind.Any(x => x == "folder");
|
||||||
|
}
|
||||||
|
|
||||||
|
file.FullName = (reader[4] as string ?? string.Empty);
|
||||||
|
|
||||||
|
if (isRootSearch)
|
||||||
|
{
|
||||||
|
file.RelativeUrl = file.FullName.Replace(rootFolder, "").Trim('\\');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach (var searchPath in searchPaths)
|
||||||
|
{
|
||||||
|
file.RelativeUrl = file.FullName.Replace(Path.Combine(rootFolder, searchPath), "").Trim('\\');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Add(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region HostingServiceProvider methods
|
#region HostingServiceProvider methods
|
||||||
|
|
||||||
public override string[] Install()
|
public override string[] Install()
|
||||||
|
|
|
@ -1171,8 +1171,13 @@ namespace WebsitePanel.Providers.Mail
|
||||||
mailbox.IsDomainAdmin // domain admin is false
|
mailbox.IsDomainAdmin // domain admin is false
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!result.Result)
|
if (!result.Result)
|
||||||
throw new Exception(result.Message);
|
{
|
||||||
|
if (result.ResultCode == -21)
|
||||||
|
throw new Exception("Password doesn't meet complexity", new Exception(result.Message));
|
||||||
|
|
||||||
|
throw new Exception(result.Message);
|
||||||
|
}
|
||||||
|
|
||||||
// set forwarding settings
|
// set forwarding settings
|
||||||
result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword,
|
result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword,
|
||||||
|
@ -1232,10 +1237,15 @@ namespace WebsitePanel.Providers.Mail
|
||||||
GenericResult result = users.UpdateUser(
|
GenericResult result = users.UpdateUser(
|
||||||
AdminUsername, AdminPassword, mailbox.Name, strPassword, mailbox.FirstName, mailbox.LastName, mailbox.IsDomainAdmin);
|
AdminUsername, AdminPassword, mailbox.Name, strPassword, mailbox.FirstName, mailbox.LastName, mailbox.IsDomainAdmin);
|
||||||
|
|
||||||
if (!result.Result)
|
if (!result.Result)
|
||||||
throw new Exception(result.Message);
|
{
|
||||||
|
if (result.ResultCode == -21)
|
||||||
|
throw new Exception("Password doesn't meet complexity", new Exception(result.Message));
|
||||||
|
|
||||||
|
throw new Exception(result.Message);
|
||||||
|
}
|
||||||
|
|
||||||
// set forwarding settings
|
// set forwarding settings
|
||||||
result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword,
|
result = users.UpdateUserForwardingInfo(AdminUsername, AdminPassword,
|
||||||
mailbox.Name, mailbox.DeleteOnForward,
|
mailbox.Name, mailbox.DeleteOnForward,
|
||||||
(mailbox.ForwardingAddresses != null ? String.Join(", ", mailbox.ForwardingAddresses) : ""));
|
(mailbox.ForwardingAddresses != null ? String.Join(", ", mailbox.ForwardingAddresses) : ""));
|
||||||
|
|
|
@ -47,6 +47,9 @@ using System.Management;
|
||||||
using System.Management.Automation;
|
using System.Management.Automation;
|
||||||
using System.Management.Automation.Runspaces;
|
using System.Management.Automation.Runspaces;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
using System.DirectoryServices;
|
||||||
|
using System.Security.Cryptography.X509Certificates;
|
||||||
|
using System.Collections;
|
||||||
|
|
||||||
|
|
||||||
namespace WebsitePanel.Providers.RemoteDesktopServices
|
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
@ -64,6 +67,13 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
private const string RdsGroupFormat = "rds-{0}-{1}";
|
private const string RdsGroupFormat = "rds-{0}-{1}";
|
||||||
private const string RdsModuleName = "RemoteDesktopServices";
|
private const string RdsModuleName = "RemoteDesktopServices";
|
||||||
private const string AddNpsString = "netsh nps add np name=\"\"{0}\"\" policysource=\"1\" processingorder=\"{1}\" conditionid=\"0x3d\" conditiondata=\"^5$\" conditionid=\"0x1fb5\" conditiondata=\"{2}\" conditionid=\"0x1e\" conditiondata=\"UserAuthType:(PW|CA)\" profileid=\"0x1005\" profiledata=\"TRUE\" profileid=\"0x100f\" profiledata=\"TRUE\" profileid=\"0x1009\" profiledata=\"0x7\" profileid=\"0x1fe6\" profiledata=\"0x40000000\"";
|
private const string AddNpsString = "netsh nps add np name=\"\"{0}\"\" policysource=\"1\" processingorder=\"{1}\" conditionid=\"0x3d\" conditiondata=\"^5$\" conditionid=\"0x1fb5\" conditiondata=\"{2}\" conditionid=\"0x1e\" conditiondata=\"UserAuthType:(PW|CA)\" profileid=\"0x1005\" profiledata=\"TRUE\" profileid=\"0x100f\" profiledata=\"TRUE\" profileid=\"0x1009\" profiledata=\"0x7\" profileid=\"0x1fe6\" profiledata=\"0x40000000\"";
|
||||||
|
private const string WspAdministratorsGroupName = "WSP-Org-Administrators";
|
||||||
|
private const string WspAdministratorsGroupDescription = "WSP Org Administrators";
|
||||||
|
private const string RdsServersOU = "RDSServers";
|
||||||
|
private const string RDSHelpDeskComputerGroup = "Websitepanel-RDSHelpDesk-Computer";
|
||||||
|
private const string RDSHelpDeskGroup = "WSP-HelpDeskAdministrators";
|
||||||
|
private const string RDSHelpDeskGroupDescription = "WSP Help Desk Administrators";
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
@ -300,6 +310,8 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
//ActiveDirectoryUtils.AddObjectToGroup(GetComputerPath(ConnectionBroker), GetComputerGroupPath(organizationId, collection.Name));
|
//ActiveDirectoryUtils.AddObjectToGroup(GetComputerPath(ConnectionBroker), GetComputerGroupPath(organizationId, collection.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CheckOrCreateHelpDeskComputerGroup();
|
||||||
|
|
||||||
if (!ActiveDirectoryUtils.AdObjectExists(GetUsersGroupPath(organizationId, collection.Name)))
|
if (!ActiveDirectoryUtils.AdObjectExists(GetUsersGroupPath(organizationId, collection.Name)))
|
||||||
{
|
{
|
||||||
//Create user group
|
//Create user group
|
||||||
|
@ -329,7 +341,13 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
//add session servers to group
|
//add session servers to group
|
||||||
foreach (var rdsServer in collection.Servers)
|
foreach (var rdsServer in collection.Servers)
|
||||||
{
|
{
|
||||||
|
if (!CheckLocalAdminsGroupExists(rdsServer.FqdName, runSpace))
|
||||||
|
{
|
||||||
|
CreateLocalAdministratorsGroup(rdsServer.FqdName, runSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddHelpDeskAdminsGroupToLocalAdmins(runSpace, rdsServer.FqdName);
|
||||||
AddComputerToCollectionAdComputerGroup(organizationId, collection.Name, rdsServer);
|
AddComputerToCollectionAdComputerGroup(organizationId, collection.Name, rdsServer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -458,7 +476,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return collection;
|
return collection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool RemoveCollection(string organizationId, string collectionName)
|
public bool RemoveCollection(string organizationId, string collectionName, List<RdsServer> servers)
|
||||||
{
|
{
|
||||||
var result = true;
|
var result = true;
|
||||||
|
|
||||||
|
@ -493,11 +511,13 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
RemoveNpsPolicy(runSpace, CentralNpsHost, capPolicyName);
|
RemoveNpsPolicy(runSpace, CentralNpsHost, capPolicyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Remove security group
|
foreach(var server in servers)
|
||||||
|
{
|
||||||
|
RemoveComputerFromCollectionAdComputerGroup(organizationId, collectionName, server);
|
||||||
|
}
|
||||||
|
|
||||||
ActiveDirectoryUtils.DeleteADObject(GetComputerGroupPath(organizationId, collectionName));
|
ActiveDirectoryUtils.DeleteADObject(GetComputerGroupPath(organizationId, collectionName));
|
||||||
|
ActiveDirectoryUtils.DeleteADObject(GetUsersGroupPath(organizationId, collectionName));
|
||||||
ActiveDirectoryUtils.DeleteADObject(GetUsersGroupPath(organizationId, collectionName));
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -553,6 +573,14 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
ExecuteShellCommand(runSpace, cmd, false);
|
ExecuteShellCommand(runSpace, cmd, false);
|
||||||
|
|
||||||
|
CheckOrCreateHelpDeskComputerGroup();
|
||||||
|
|
||||||
|
if (!CheckLocalAdminsGroupExists(server.FqdName, runSpace))
|
||||||
|
{
|
||||||
|
CreateLocalAdministratorsGroup(server.FqdName, runSpace);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddHelpDeskAdminsGroupToLocalAdmins(runSpace, server.FqdName);
|
||||||
AddComputerToCollectionAdComputerGroup(organizationId, collectionName, server);
|
AddComputerToCollectionAdComputerGroup(organizationId, collectionName, server);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
@ -948,6 +976,351 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Local Admins
|
||||||
|
|
||||||
|
public void SaveRdsCollectionLocalAdmins(List<OrganizationUser> users, List<string> hosts)
|
||||||
|
{
|
||||||
|
Runspace runspace = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
var index = ServerSettings.ADRootDomain.LastIndexOf(".");
|
||||||
|
var domainName = ServerSettings.ADRootDomain;
|
||||||
|
|
||||||
|
if (index > 0)
|
||||||
|
{
|
||||||
|
domainName = ServerSettings.ADRootDomain.Substring(0, index);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var hostName in hosts)
|
||||||
|
{
|
||||||
|
if (!CheckLocalAdminsGroupExists(hostName, runspace))
|
||||||
|
{
|
||||||
|
var errors = CreateLocalAdministratorsGroup(hostName, runspace);
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
throw new Exception(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var existingAdmins = GetExistingLocalAdmins(hostName, runspace).Select(e => e.ToLower());
|
||||||
|
var formUsers = users.Select(u => string.Format("{0}\\{1}", domainName, u.SamAccountName).ToLower());
|
||||||
|
var newUsers = users.Where(u => !existingAdmins.Contains(string.Format("{0}\\{1}", domainName, u.SamAccountName).ToLower()));
|
||||||
|
var removedUsers = existingAdmins.Where(e => !formUsers.Contains(e));
|
||||||
|
|
||||||
|
foreach (var user in newUsers)
|
||||||
|
{
|
||||||
|
AddNewLocalAdmin(hostName, user.SamAccountName, runspace);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var user in removedUsers)
|
||||||
|
{
|
||||||
|
RemoveLocalAdmin(hostName, user, runspace);
|
||||||
|
}
|
||||||
|
|
||||||
|
AddHelpDeskAdminsGroupToLocalAdmins(runspace, hostName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<string> GetRdsCollectionLocalAdmins(string hostName)
|
||||||
|
{
|
||||||
|
Runspace runspace = null;
|
||||||
|
var result = new List<string>();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
|
||||||
|
if (CheckLocalAdminsGroupExists(hostName, runspace))
|
||||||
|
{
|
||||||
|
result = GetExistingLocalAdmins(hostName, runspace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckLocalAdminsGroupExists(string hostName, Runspace runspace)
|
||||||
|
{
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("net localgroup {0}", WspAdministratorsGroupName)
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
var result = ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
|
||||||
|
if (!errors.Any())
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private object[] CreateLocalAdministratorsGroup(string hostName, Runspace runspace)
|
||||||
|
{
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("$cn = [ADSI]\"WinNT://{0}\"", hostName),
|
||||||
|
string.Format("$group = $cn.Create(\"Group\", \"{0}\")", WspAdministratorsGroupName),
|
||||||
|
"$group.setinfo()",
|
||||||
|
string.Format("$group.description = \"{0}\"", WspAdministratorsGroupDescription),
|
||||||
|
"$group.setinfo()"
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
|
||||||
|
if (!errors.Any())
|
||||||
|
{
|
||||||
|
scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("$GroupObj = [ADSI]\"WinNT://{0}/Administrators\"", hostName),
|
||||||
|
string.Format("$GroupObj.Add(\"WinNT://{0}/{1}\")", hostName.ToLower().Replace(string.Format(".{0}", ServerSettings.ADRootDomain.ToLower()), ""), WspAdministratorsGroupName)
|
||||||
|
};
|
||||||
|
|
||||||
|
errors = null;
|
||||||
|
ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<string> GetExistingLocalAdmins(string hostName, Runspace runspace)
|
||||||
|
{
|
||||||
|
var result = new List<string>();
|
||||||
|
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("net localgroup {0} | select -skip 6", WspAdministratorsGroupName)
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
var exitingAdmins = ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
|
||||||
|
if (!errors.Any())
|
||||||
|
{
|
||||||
|
foreach(var user in exitingAdmins.Take(exitingAdmins.Count - 2))
|
||||||
|
{
|
||||||
|
result.Add(user.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private object[] AddNewLocalAdmin(string hostName, string samAccountName, Runspace runspace)
|
||||||
|
{
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("$GroupObj = [ADSI]\"WinNT://{0}/{1}\"", hostName, WspAdministratorsGroupName),
|
||||||
|
string.Format("$GroupObj.Add(\"WinNT://{0}/{1}\")", ServerSettings.ADRootDomain, samAccountName)
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private object[] RemoveLocalAdmin(string hostName, string user, Runspace runspace)
|
||||||
|
{
|
||||||
|
var userObject = user.Split('\\');
|
||||||
|
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("$GroupObj = [ADSI]\"WinNT://{0}/{1}\"", hostName, WspAdministratorsGroupName),
|
||||||
|
string.Format("$GroupObj.Remove(\"WinNT://{0}/{1}\")", userObject[0], userObject[1])
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region RDS Help Desk
|
||||||
|
|
||||||
|
private string GetHelpDeskGroupPath(string groupName)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, groupName);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckOrCreateHelpDeskComputerGroup()
|
||||||
|
{
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(GetHelpDeskGroupPath(RDSHelpDeskComputerGroup)))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.CreateGroup(GetRootOUPath(), RDSHelpDeskComputerGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddHelpDeskAdminsGroupToLocalAdmins(Runspace runspace, string hostName)
|
||||||
|
{
|
||||||
|
var helpDeskAdminsGroupPath = GetHelpDeskGroupPath(RDSHelpDeskGroup);
|
||||||
|
DirectoryEntry groupEntry = null;
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(helpDeskAdminsGroupPath))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.CreateGroup(GetRootOUPath(), RDSHelpDeskGroup);
|
||||||
|
groupEntry = ActiveDirectoryUtils.GetADObject(helpDeskAdminsGroupPath);
|
||||||
|
|
||||||
|
if (groupEntry.Properties.Contains("Description"))
|
||||||
|
{
|
||||||
|
groupEntry.Properties["Description"][0] = RDSHelpDeskGroupDescription;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
groupEntry.Properties["Description"].Add(RDSHelpDeskGroupDescription);
|
||||||
|
}
|
||||||
|
|
||||||
|
groupEntry.CommitChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (groupEntry == null)
|
||||||
|
{
|
||||||
|
groupEntry = ActiveDirectoryUtils.GetADObject(helpDeskAdminsGroupPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
var samAccountName = ActiveDirectoryUtils.GetADObjectProperty(groupEntry, "sAMAccountName");
|
||||||
|
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("$GroupObj = [ADSI]\"WinNT://{0}/{1}\"", hostName, WspAdministratorsGroupName),
|
||||||
|
string.Format("$GroupObj.Add(\"WinNT://{0}/{1}\")", ServerSettings.ADRootDomain, samAccountName)
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region SSL
|
||||||
|
|
||||||
|
public void InstallCertificate(byte[] certificate, string password, List<string> hostNames)
|
||||||
|
{
|
||||||
|
Runspace runspace = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var guid = Guid.NewGuid();
|
||||||
|
var x509Cert = new X509Certificate2(certificate, password, X509KeyStorageFlags.Exportable);
|
||||||
|
//var content = x509Cert.Export(X509ContentType.Pfx);
|
||||||
|
var filePath = SaveCertificate(certificate, guid);
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
|
||||||
|
foreach (var hostName in hostNames)
|
||||||
|
{
|
||||||
|
var destinationPath = string.Format("\\\\{0}\\c$\\{1}.pfx", hostName, guid);
|
||||||
|
var errors = CopyCertificateFile(runspace, filePath, destinationPath);
|
||||||
|
|
||||||
|
if (!errors.Any())
|
||||||
|
{
|
||||||
|
errors = ImportCertificate(runspace, hostName, password, string.Format("c:\\{0}.pfx", guid), x509Cert.Thumbprint);
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteCertificateFile(destinationPath, runspace);
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
throw new Exception(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (File.Exists(filePath))
|
||||||
|
{
|
||||||
|
File.Delete(filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private object[] ImportCertificate(Runspace runspace, string hostName, string password, string certificatePath, string thumbprint)
|
||||||
|
{
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("$mypwd = ConvertTo-SecureString -String {0} -Force –AsPlainText", password),
|
||||||
|
string.Format("Import-PfxCertificate –FilePath \"{0}\" cert:\\localMachine\\my -Password $mypwd", certificatePath),
|
||||||
|
string.Format("$cert = Get-Item cert:\\LocalMachine\\My\\{0}", thumbprint),
|
||||||
|
string.Format("$path = (Get-WmiObject -class \"Win32_TSGeneralSetting\" -Namespace root\\cimv2\\terminalservices -Filter \"TerminalName='RDP-tcp'\").__path"),
|
||||||
|
string.Format("Set-WmiInstance -Path $path -argument @{0}", string.Format("{{SSLCertificateSHA1Hash=\"{0}\"}}", thumbprint))
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteRemoteShellCommand(runspace, hostName, scripts, out errors);
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string SaveCertificate(byte[] certificate, Guid guid)
|
||||||
|
{
|
||||||
|
var filePath = string.Format("{0}{1}.pfx", Path.GetTempPath(), guid);
|
||||||
|
|
||||||
|
if (File.Exists(filePath))
|
||||||
|
{
|
||||||
|
File.Delete(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
File.WriteAllBytes(filePath, certificate);
|
||||||
|
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
private object[] CopyCertificateFile(Runspace runspace, string filePath, string destinationPath)
|
||||||
|
{
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("Copy-Item \"{0}\" -Destination \"{1}\" -Force", filePath, destinationPath)
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteShellCommand(runspace, scripts, out errors);
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private object[] DeleteCertificateFile(string destinationPath, Runspace runspace)
|
||||||
|
{
|
||||||
|
var scripts = new List<string>
|
||||||
|
{
|
||||||
|
string.Format("Remove-Item -Path \"{0}\" -Force", destinationPath)
|
||||||
|
};
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
ExecuteShellCommand(runspace, scripts, out errors);
|
||||||
|
|
||||||
|
return errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
private void AddRdsServerToDeployment(Runspace runSpace, RdsServer server)
|
private void AddRdsServerToDeployment(Runspace runSpace, RdsServer server)
|
||||||
{
|
{
|
||||||
Command cmd = new Command("Add-RDserver");
|
Command cmd = new Command("Add-RDserver");
|
||||||
|
@ -956,9 +1329,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
||||||
|
|
||||||
ExecuteShellCommand(runSpace, cmd, false);
|
ExecuteShellCommand(runSpace, cmd, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private bool ExistRdsServerInDeployment(Runspace runSpace, RdsServer server)
|
private bool ExistRdsServerInDeployment(Runspace runSpace, RdsServer server)
|
||||||
{
|
{
|
||||||
|
@ -1028,7 +1399,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
}
|
}
|
||||||
|
|
||||||
return users;
|
return users;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddUserGroupsToCollection(Runspace runSpace, string collectionName, List<string> groups)
|
private void AddUserGroupsToCollection(Runspace runSpace, string collectionName, List<string> groups)
|
||||||
{
|
{
|
||||||
|
@ -1043,7 +1414,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
private void AddComputerToCollectionAdComputerGroup(string organizationId, string collectionName, RdsServer server)
|
private void AddComputerToCollectionAdComputerGroup(string organizationId, string collectionName, RdsServer server)
|
||||||
{
|
{
|
||||||
var computerPath = GetComputerPath(server.Name, false);
|
var computerPath = GetComputerPath(server.Name, false);
|
||||||
var computerGroupName = GetComputersGroupName( collectionName);
|
var computerGroupName = GetComputersGroupName( collectionName);
|
||||||
|
|
||||||
if (!ActiveDirectoryUtils.AdObjectExists(computerPath))
|
if (!ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
{
|
{
|
||||||
|
@ -1059,6 +1430,11 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
{
|
{
|
||||||
ActiveDirectoryUtils.AddObjectToGroup(computerPath, GetComputerGroupPath(organizationId, collectionName));
|
ActiveDirectoryUtils.AddObjectToGroup(computerPath, GetComputerGroupPath(organizationId, collectionName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.IsComputerInGroup(samName, RDSHelpDeskComputerGroup))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.AddObjectToGroup(computerPath, GetHelpDeskGroupPath(RDSHelpDeskComputerGroup));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetRDServerNewConnectionAllowed(false, server);
|
SetRDServerNewConnectionAllowed(false, server);
|
||||||
|
@ -1083,6 +1459,14 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
{
|
{
|
||||||
ActiveDirectoryUtils.RemoveObjectFromGroup(computerPath, GetComputerGroupPath(organizationId, collectionName));
|
ActiveDirectoryUtils.RemoveObjectFromGroup(computerPath, GetComputerGroupPath(organizationId, collectionName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(GetHelpDeskGroupPath(RDSHelpDeskComputerGroup)))
|
||||||
|
{
|
||||||
|
if (ActiveDirectoryUtils.IsComputerInGroup(samName, RDSHelpDeskComputerGroup))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(computerPath, GetHelpDeskGroupPath(RDSHelpDeskComputerGroup));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1105,6 +1489,63 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return installationResult;
|
return installationResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void MoveRdsServerToTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
var tenantComputerGroupPath = GetTenantComputerGroupPath(organizationId);
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(tenantComputerGroupPath))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.CreateGroup(GetOrganizationPath(organizationId), RdsServersOU);
|
||||||
|
}
|
||||||
|
|
||||||
|
hostName = hostName.ToLower().Replace(string.Format(".{0}", ServerSettings.ADRootDomain.ToLower()), "");
|
||||||
|
var computerPath = GetComputerPath(hostName, true);
|
||||||
|
|
||||||
|
if(!ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
computerPath = GetComputerPath(hostName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
var computerObject = ActiveDirectoryUtils.GetADObject(computerPath);
|
||||||
|
var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(computerObject, "sAMAccountName");
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.IsComputerInGroup(samName, RdsServersOU))
|
||||||
|
{
|
||||||
|
DirectoryEntry group = new DirectoryEntry(tenantComputerGroupPath);
|
||||||
|
group.Invoke("Add", computerObject.Path);
|
||||||
|
|
||||||
|
group.CommitChanges();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveRdsServerFromTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
var tenantComputerGroupPath = GetTenantComputerGroupPath(organizationId);
|
||||||
|
hostName = hostName.ToLower().Replace(string.Format(".{0}", ServerSettings.ADRootDomain.ToLower()), "");
|
||||||
|
var tenantComputerPath = GetTenantComputerPath(hostName, organizationId);
|
||||||
|
|
||||||
|
var computerPath = GetComputerPath(hostName, true);
|
||||||
|
|
||||||
|
if (!ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
computerPath = GetComputerPath(hostName, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.AdObjectExists(computerPath))
|
||||||
|
{
|
||||||
|
var computerObject = ActiveDirectoryUtils.GetADObject(computerPath);
|
||||||
|
var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(computerObject, "sAMAccountName");
|
||||||
|
|
||||||
|
if (ActiveDirectoryUtils.IsComputerInGroup(samName, RdsServersOU))
|
||||||
|
{
|
||||||
|
ActiveDirectoryUtils.RemoveObjectFromGroup(computerPath, tenantComputerGroupPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool CheckSessionHostFeatureInstallation(string hostName)
|
public bool CheckSessionHostFeatureInstallation(string hostName)
|
||||||
{
|
{
|
||||||
bool isInstalled = false;
|
bool isInstalled = false;
|
||||||
|
@ -1216,11 +1657,18 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
DisplayName = Convert.ToString(GetPSObjectProperty(psObject, "DisplayName")),
|
DisplayName = Convert.ToString(GetPSObjectProperty(psObject, "DisplayName")),
|
||||||
FilePath = Convert.ToString(GetPSObjectProperty(psObject, "FilePath")),
|
FilePath = Convert.ToString(GetPSObjectProperty(psObject, "FilePath")),
|
||||||
Alias = Convert.ToString(GetPSObjectProperty(psObject, "Alias")),
|
Alias = Convert.ToString(GetPSObjectProperty(psObject, "Alias")),
|
||||||
ShowInWebAccess = Convert.ToBoolean(GetPSObjectProperty(psObject, "ShowInWebAccess"))
|
ShowInWebAccess = Convert.ToBoolean(GetPSObjectProperty(psObject, "ShowInWebAccess")),
|
||||||
|
Users = null
|
||||||
};
|
};
|
||||||
|
|
||||||
var requiredCommandLine = GetPSObjectProperty(psObject, "RequiredCommandLine");
|
var requiredCommandLine = GetPSObjectProperty(psObject, "RequiredCommandLine");
|
||||||
remoteApp.RequiredCommandLine = requiredCommandLine == null ? null : requiredCommandLine.ToString();
|
remoteApp.RequiredCommandLine = requiredCommandLine == null ? null : requiredCommandLine.ToString();
|
||||||
|
var users = (string[])(GetPSObjectProperty(psObject, "UserGroups"));
|
||||||
|
|
||||||
|
if (users != null && users.Any())
|
||||||
|
{
|
||||||
|
remoteApp.Users = users;
|
||||||
|
}
|
||||||
|
|
||||||
return remoteApp;
|
return remoteApp;
|
||||||
}
|
}
|
||||||
|
@ -1293,7 +1741,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
internal string GetComputerGroupPath(string organizationId, string collection)
|
internal string GetComputerGroupPath(string organizationId, string collection)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
// append provider
|
|
||||||
AppendProtocol(sb);
|
AppendProtocol(sb);
|
||||||
AppendDomainController(sb);
|
AppendDomainController(sb);
|
||||||
AppendCNPath(sb, GetComputersGroupName(collection));
|
AppendCNPath(sb, GetComputersGroupName(collection));
|
||||||
|
@ -1302,16 +1750,16 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
AppendDomainPath(sb, RootDomain);
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal string GetUsersGroupPath(string organizationId, string collection)
|
internal string GetUsersGroupPath(string organizationId, string collection)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
// append provider
|
|
||||||
AppendProtocol(sb);
|
AppendProtocol(sb);
|
||||||
AppendDomainController(sb);
|
AppendDomainController(sb);
|
||||||
AppendCNPath(sb, GetUsersGroupName(collection));
|
AppendCNPath(sb, GetUsersGroupName(collection));
|
||||||
AppendOUPath(sb, organizationId);
|
AppendOUPath(sb, organizationId);
|
||||||
AppendOUPath(sb, RootOU);
|
AppendOUPath(sb, RootOU);
|
||||||
AppendDomainPath(sb, RootDomain);
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
@ -1332,6 +1780,18 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetRootOUPath()
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
// append provider
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private string GetOrganizationPath(string organizationId)
|
private string GetOrganizationPath(string organizationId)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -1350,7 +1810,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
// append provider
|
// append provider
|
||||||
AppendProtocol(sb);
|
AppendProtocol(sb);
|
||||||
AppendDomainController(sb);
|
AppendDomainController(sb);
|
||||||
AppendCNPath(sb, objName);
|
AppendCNPath(sb, objName);
|
||||||
if (domainController)
|
if (domainController)
|
||||||
{
|
{
|
||||||
|
@ -1366,6 +1826,35 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetTenantComputerPath(string objName, string organizationId)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, objName);
|
||||||
|
AppendCNPath(sb, RdsServersOU);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal string GetTenantComputerGroupPath(string organizationId)
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
|
AppendProtocol(sb);
|
||||||
|
AppendDomainController(sb);
|
||||||
|
AppendCNPath(sb, RdsServersOU);
|
||||||
|
AppendOUPath(sb, organizationId);
|
||||||
|
AppendOUPath(sb, RootOU);
|
||||||
|
AppendDomainPath(sb, RootDomain);
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
private static void AppendCNPath(StringBuilder sb, string organizationId)
|
private static void AppendCNPath(StringBuilder sb, string organizationId)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(organizationId))
|
if (string.IsNullOrEmpty(organizationId))
|
||||||
|
@ -1550,7 +2039,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
return ExecuteShellCommand(runSpace, invokeCommand, false, out errors);
|
return ExecuteShellCommand(runSpace, invokeCommand, false, out errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, List<string> scripts, params string[] moduleImports)
|
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, List<string> scripts, out object[] errors, params string[] moduleImports)
|
||||||
{
|
{
|
||||||
Command invokeCommand = new Command("Invoke-Command");
|
Command invokeCommand = new Command("Invoke-Command");
|
||||||
invokeCommand.Parameters.Add("ComputerName", hostName);
|
invokeCommand.Parameters.Add("ComputerName", hostName);
|
||||||
|
@ -1564,7 +2053,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
invokeCommand.Parameters.Add("ScriptBlock", sb);
|
invokeCommand.Parameters.Add("ScriptBlock", sb);
|
||||||
|
|
||||||
return ExecuteShellCommand(runSpace, invokeCommand, false);
|
return ExecuteShellCommand(runSpace, invokeCommand, false, out errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd)
|
internal Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd)
|
||||||
|
@ -1801,18 +2290,22 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
cmd.Parameters.Add("CollectionName", collectionName);
|
cmd.Parameters.Add("CollectionName", collectionName);
|
||||||
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
||||||
var userSessions = ExecuteShellCommand(runSpace, cmd, false, out errors);
|
var userSessions = ExecuteShellCommand(runSpace, cmd, false, out errors);
|
||||||
var properties = typeof(RdsUserSession).GetProperties();
|
var properties = typeof(RdsUserSession).GetProperties();
|
||||||
|
|
||||||
foreach(var userSession in userSessions)
|
foreach(var userSession in userSessions)
|
||||||
{
|
{
|
||||||
var session = new RdsUserSession();
|
var session = new RdsUserSession
|
||||||
|
|
||||||
foreach(var prop in properties)
|
|
||||||
{
|
{
|
||||||
prop.SetValue(session, GetPSObjectProperty(userSession, prop.Name).ToString(), null);
|
CollectionName = GetPSObjectProperty(userSession, "CollectionName").ToString(),
|
||||||
}
|
DomainName = GetPSObjectProperty(userSession, "DomainName").ToString(),
|
||||||
|
HostServer = GetPSObjectProperty(userSession, "HostServer").ToString(),
|
||||||
session.UserName = GetUserFullName(session.DomainName, session.UserName, runSpace);
|
SessionState = GetPSObjectProperty(userSession, "SessionState").ToString(),
|
||||||
|
UnifiedSessionId = GetPSObjectProperty(userSession, "UnifiedSessionId").ToString(),
|
||||||
|
SamAccountName = GetPSObjectProperty(userSession, "UserName").ToString(),
|
||||||
|
};
|
||||||
|
|
||||||
|
session.IsVip = false;
|
||||||
|
session.UserName = GetUserFullName(session.DomainName, session.SamAccountName, runSpace);
|
||||||
result.Add(session);
|
result.Add(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1835,6 +2328,238 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Server Info
|
||||||
|
|
||||||
|
public RdsServerInfo GetRdsServerInfo(string serverName)
|
||||||
|
{
|
||||||
|
var result = new RdsServerInfo();
|
||||||
|
Runspace runspace = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
result = GetServerInfo(runspace, serverName);
|
||||||
|
result.Status = GetRdsServerStatus(runspace, serverName);
|
||||||
|
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetRdsServerStatus(string serverName)
|
||||||
|
{
|
||||||
|
string result = "";
|
||||||
|
Runspace runspace = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
result = GetRdsServerStatus(runspace, serverName);
|
||||||
|
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ShutDownRdsServer(string serverName)
|
||||||
|
{
|
||||||
|
Runspace runspace = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
var command = new Command("Stop-Computer");
|
||||||
|
command.Parameters.Add("ComputerName", serverName);
|
||||||
|
command.Parameters.Add("Force", true);
|
||||||
|
object[] errors = null;
|
||||||
|
|
||||||
|
ExecuteShellCommand(runspace, command, false, out errors);
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
throw new Exception(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RestartRdsServer(string serverName)
|
||||||
|
{
|
||||||
|
Runspace runspace = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
runspace = OpenRunspace();
|
||||||
|
var command = new Command("Restart-Computer");
|
||||||
|
command.Parameters.Add("ComputerName", serverName);
|
||||||
|
command.Parameters.Add("Force", true);
|
||||||
|
object[] errors = null;
|
||||||
|
|
||||||
|
ExecuteShellCommand(runspace, command, false, out errors);
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
throw new Exception(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
CloseRunspace(runspace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private RdsServerInfo GetServerInfo(Runspace runspace, string serverName)
|
||||||
|
{
|
||||||
|
var result = new RdsServerInfo();
|
||||||
|
Command cmd = new Command("Get-WmiObject");
|
||||||
|
cmd.Parameters.Add("Class", "Win32_Processor");
|
||||||
|
cmd.Parameters.Add("ComputerName", serverName);
|
||||||
|
|
||||||
|
object[] errors = null;
|
||||||
|
var psProcInfo = ExecuteShellCommand(runspace, cmd, false, out errors).First();
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = new Command("Get-WmiObject");
|
||||||
|
cmd.Parameters.Add("Class", "Win32_OperatingSystem");
|
||||||
|
cmd.Parameters.Add("ComputerName", serverName);
|
||||||
|
|
||||||
|
var psMemoryInfo = ExecuteShellCommand(runspace, cmd, false, out errors).First();
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
result.NumberOfCores = Convert.ToInt32(GetPSObjectProperty(psProcInfo, "NumberOfCores"));
|
||||||
|
result.MaxClockSpeed = Convert.ToInt32(GetPSObjectProperty(psProcInfo, "MaxClockSpeed"));
|
||||||
|
result.LoadPercentage = Convert.ToInt32(GetPSObjectProperty(psProcInfo, "LoadPercentage"));
|
||||||
|
result.MemoryAllocatedMb = Math.Round(Convert.ToDouble(GetPSObjectProperty(psMemoryInfo, "TotalVisibleMemorySize")) / 1024, 1);
|
||||||
|
result.FreeMemoryMb = Math.Round(Convert.ToDouble(GetPSObjectProperty(psMemoryInfo, "FreePhysicalMemory")) / 1024, 1);
|
||||||
|
result.Drives = GetRdsServerDriveInfo(runspace, serverName).ToArray();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetRdsServerStatus (Runspace runspace, string serverName)
|
||||||
|
{
|
||||||
|
if (CheckServerAvailability(serverName))
|
||||||
|
{
|
||||||
|
if (CheckPendingReboot(runspace, serverName))
|
||||||
|
{
|
||||||
|
return "Online - Pending Reboot";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "Online";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Unavailable";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<RdsServerDriveInfo> GetRdsServerDriveInfo(Runspace runspace, string serverName)
|
||||||
|
{
|
||||||
|
var result = new List<RdsServerDriveInfo>();
|
||||||
|
Command cmd = new Command("Get-WmiObject");
|
||||||
|
cmd.Parameters.Add("Class", "Win32_LogicalDisk");
|
||||||
|
cmd.Parameters.Add("Filter", "DriveType=3");
|
||||||
|
cmd.Parameters.Add("ComputerName", serverName);
|
||||||
|
object[] errors = null;
|
||||||
|
var psDrives = ExecuteShellCommand(runspace, cmd, false, out errors);
|
||||||
|
|
||||||
|
if (errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var psDrive in psDrives)
|
||||||
|
{
|
||||||
|
var driveInfo = new RdsServerDriveInfo()
|
||||||
|
{
|
||||||
|
VolumeName = GetPSObjectProperty(psDrive, "VolumeName").ToString(),
|
||||||
|
DeviceId = GetPSObjectProperty(psDrive, "DeviceId").ToString(),
|
||||||
|
SizeMb = Math.Round(Convert.ToDouble(GetPSObjectProperty(psDrive, "Size"))/1024/1024, 1),
|
||||||
|
FreeSpaceMb = Math.Round(Convert.ToDouble(GetPSObjectProperty(psDrive, "FreeSpace"))/1024/1024, 1)
|
||||||
|
};
|
||||||
|
|
||||||
|
result.Add(driveInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckRDSServerAvaliability(string serverName)
|
||||||
|
{
|
||||||
|
var ping = new Ping();
|
||||||
|
var reply = ping.Send(serverName, 1000);
|
||||||
|
|
||||||
|
if (reply.Status == IPStatus.Success)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckPendingReboot(Runspace runspace, string serverName)
|
||||||
|
{
|
||||||
|
if (CheckPendingReboot(runspace, serverName, @"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing", "RebootPending"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CheckPendingReboot(runspace, serverName, @"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update", "RebootRequired"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (CheckPendingReboot(runspace, serverName, @"HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager", "PendingFileRenameOperations"))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckPendingReboot(Runspace runspace, string serverName, string registryPath, string registryKey)
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Get-ItemProperty");
|
||||||
|
cmd.Parameters.Add("Path", registryPath);
|
||||||
|
cmd.Parameters.Add("Name", registryKey);
|
||||||
|
cmd.Parameters.Add("ErrorAction", "SilentlyContinue");
|
||||||
|
|
||||||
|
var feature = ExecuteRemoteShellCommand(runspace, serverName, cmd).FirstOrDefault();
|
||||||
|
|
||||||
|
if (feature != null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management.Automation;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
|
{
|
||||||
|
static class PSObjectExtension
|
||||||
|
{
|
||||||
|
public static object GetProperty(this PSObject obj, string name)
|
||||||
|
{
|
||||||
|
return obj.Members[name].Value;
|
||||||
|
}
|
||||||
|
public static T GetProperty<T>(this PSObject obj, string name)
|
||||||
|
{
|
||||||
|
return (T)obj.Members[name].Value;
|
||||||
|
}
|
||||||
|
public static T GetEnum<T>(this PSObject obj, string name) where T : struct
|
||||||
|
{
|
||||||
|
return (T)Enum.Parse(typeof(T), GetProperty(obj, name).ToString());
|
||||||
|
}
|
||||||
|
public static int GetInt(this PSObject obj, string name)
|
||||||
|
{
|
||||||
|
return Convert.ToInt32(obj.Members[name].Value);
|
||||||
|
}
|
||||||
|
public static long GetLong(this PSObject obj, string name)
|
||||||
|
{
|
||||||
|
return Convert.ToInt64(obj.Members[name].Value);
|
||||||
|
}
|
||||||
|
public static string GetString(this PSObject obj, string name)
|
||||||
|
{
|
||||||
|
return obj.Members[name].Value == null ? "" : obj.Members[name].Value.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,83 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management.Automation;
|
||||||
|
using System.Management.Automation.Runspaces;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
|
{
|
||||||
|
public static class DvdDriveHelper
|
||||||
|
{
|
||||||
|
public static DvdDriveInfo Get(PowerShellManager powerShell, string vmName)
|
||||||
|
{
|
||||||
|
DvdDriveInfo info = new DvdDriveInfo();
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMDvdDrive");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vmName);
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
info.Id = result[0].GetString("Id");
|
||||||
|
info.Name = result[0].GetString("Name");
|
||||||
|
info.ControllerType = result[0].GetEnum<ControllerType>("ControllerType");
|
||||||
|
info.ControllerNumber = result[0].GetInt("ControllerNumber");
|
||||||
|
info.ControllerLocation = result[0].GetInt("ControllerLocation");
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Set(PowerShellManager powerShell, string vmName, string path)
|
||||||
|
{
|
||||||
|
var dvd = Get(powerShell, vmName);
|
||||||
|
|
||||||
|
Command cmd = new Command("Set-VMDvdDrive");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vmName);
|
||||||
|
cmd.Parameters.Add("Path", path);
|
||||||
|
cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
|
||||||
|
cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
|
||||||
|
|
||||||
|
powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Update(PowerShellManager powerShell, VirtualMachine vm, bool dvdDriveShouldBeInstalled)
|
||||||
|
{
|
||||||
|
if (!vm.DvdDriveInstalled && dvdDriveShouldBeInstalled)
|
||||||
|
Add(powerShell, vm.Name);
|
||||||
|
else if (vm.DvdDriveInstalled && !dvdDriveShouldBeInstalled)
|
||||||
|
Remove(powerShell, vm.Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Add(PowerShellManager powerShell, string vmName)
|
||||||
|
{
|
||||||
|
var dvd = Get(powerShell, vmName);
|
||||||
|
|
||||||
|
Command cmd = new Command("Add-VMDvdDrive");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vmName);
|
||||||
|
cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
|
||||||
|
cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
|
||||||
|
|
||||||
|
powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Remove(PowerShellManager powerShell, string vmName)
|
||||||
|
{
|
||||||
|
var dvd = Get(powerShell, vmName);
|
||||||
|
|
||||||
|
Command cmd = new Command("Remove-VMDvdDrive");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vmName);
|
||||||
|
cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
|
||||||
|
cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
|
||||||
|
|
||||||
|
powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management.Automation;
|
||||||
|
using System.Management.Automation.Runspaces;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
|
{
|
||||||
|
public static class NetworkAdapterHelper
|
||||||
|
{
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
private const string EXTERNAL_NETWORK_ADAPTER_NAME = "External Network Adapter";
|
||||||
|
private const string PRIVATE_NETWORK_ADAPTER_NAME = "Private Network Adapter";
|
||||||
|
private const string MANAGEMENT_NETWORK_ADAPTER_NAME = "Management Network Adapter";
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public static VirtualMachineNetworkAdapter[] Get(PowerShellManager powerShell, string vmName)
|
||||||
|
{
|
||||||
|
List<VirtualMachineNetworkAdapter> adapters = new List<VirtualMachineNetworkAdapter>();
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMNetworkAdapter");
|
||||||
|
if (!string.IsNullOrEmpty(vmName)) cmd.Parameters.Add("VMName", vmName);
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (PSObject psAdapter in result)
|
||||||
|
{
|
||||||
|
VirtualMachineNetworkAdapter adapter = new VirtualMachineNetworkAdapter();
|
||||||
|
|
||||||
|
adapter.Name = psAdapter.GetString("Name");
|
||||||
|
adapter.MacAddress = psAdapter.GetString("MacAddress");
|
||||||
|
adapter.SwitchName = psAdapter.GetString("SwitchName");
|
||||||
|
|
||||||
|
adapters.Add(adapter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return adapters.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VirtualMachineNetworkAdapter Get(PowerShellManager powerShell, string vmName, string macAddress)
|
||||||
|
{
|
||||||
|
var adapters = Get(powerShell, vmName);
|
||||||
|
return adapters.FirstOrDefault(a => a.MacAddress == macAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Update(PowerShellManager powerShell, VirtualMachine vm, string switchId, string portName, string macAddress, string adapterName, bool legacyAdapter)
|
||||||
|
{
|
||||||
|
// External NIC
|
||||||
|
if (!vm.ExternalNetworkEnabled && !String.IsNullOrEmpty(vm.ExternalNicMacAddress))
|
||||||
|
{
|
||||||
|
// delete adapter
|
||||||
|
Delete(powerShell, vm.Name, vm.ExternalNicMacAddress);
|
||||||
|
vm.ExternalNicMacAddress = null; // reset MAC
|
||||||
|
}
|
||||||
|
else if (vm.ExternalNetworkEnabled && !String.IsNullOrEmpty(vm.ExternalNicMacAddress))
|
||||||
|
{
|
||||||
|
// add external adapter
|
||||||
|
Add(powerShell, vm.Name, vm.ExternalSwitchId, vm.ExternalNicMacAddress, EXTERNAL_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Private NIC
|
||||||
|
if (!vm.PrivateNetworkEnabled && !String.IsNullOrEmpty(vm.PrivateNicMacAddress))
|
||||||
|
{
|
||||||
|
Delete(powerShell, vm.Name, vm.PrivateNicMacAddress);
|
||||||
|
vm.PrivateNicMacAddress = null; // reset MAC
|
||||||
|
}
|
||||||
|
else if (vm.PrivateNetworkEnabled && !String.IsNullOrEmpty(vm.PrivateNicMacAddress))
|
||||||
|
{
|
||||||
|
Add(powerShell, vm.Name, vm.ExternalSwitchId, vm.ExternalNicMacAddress, PRIVATE_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Add(PowerShellManager powerShell, string vmName, string switchId, string macAddress, string adapterName, bool legacyAdapter)
|
||||||
|
{
|
||||||
|
//var dvd = Get(powerShell, vmName);
|
||||||
|
|
||||||
|
//Command cmd = new Command("Add-VMDvdDrive");
|
||||||
|
|
||||||
|
//cmd.Parameters.Add("VMName", vmName);
|
||||||
|
//cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
|
||||||
|
//cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
|
||||||
|
|
||||||
|
//powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
public static void Delete(PowerShellManager powerShell, string vmName, string macAddress)
|
||||||
|
{
|
||||||
|
//var dvd = Get(powerShell, vmName);
|
||||||
|
|
||||||
|
//Command cmd = new Command("Add-VMDvdDrive");
|
||||||
|
|
||||||
|
//cmd.Parameters.Add("VMName", vmName);
|
||||||
|
//cmd.Parameters.Add("ControllerNumber", dvd.ControllerNumber);
|
||||||
|
//cmd.Parameters.Add("ControllerLocation", dvd.ControllerLocation);
|
||||||
|
|
||||||
|
//powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,195 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management.Automation;
|
||||||
|
using System.Management.Automation.Runspaces;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
|
{
|
||||||
|
public static class VirtualMachineHelper
|
||||||
|
{
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
private const Int64 Size1G = 0x40000000;
|
||||||
|
private const Int64 Size1M = 0x100000;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public static OperationalStatus GetVMHeartBeatStatus(PowerShellManager powerShell, string name)
|
||||||
|
{
|
||||||
|
|
||||||
|
OperationalStatus status = OperationalStatus.None;
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMIntegrationService");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", name);
|
||||||
|
cmd.Parameters.Add("Name", "HeartBeat");
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
var statusString = result[0].GetProperty("PrimaryOperationalStatus");
|
||||||
|
|
||||||
|
if (statusString != null)
|
||||||
|
status = (OperationalStatus)Enum.Parse(typeof(OperationalStatus), statusString.ToString());
|
||||||
|
}
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static int GetVMProcessors(PowerShellManager powerShell, string name)
|
||||||
|
{
|
||||||
|
|
||||||
|
int procs = 0;
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMProcessor");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", name);
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
procs = Convert.ToInt32(result[0].GetProperty("Count"));
|
||||||
|
|
||||||
|
}
|
||||||
|
return procs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MemoryInfo GetVMMemory(PowerShellManager powerShell, string name)
|
||||||
|
{
|
||||||
|
MemoryInfo info = new MemoryInfo();
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMMemory");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", name);
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
info.DynamicMemoryEnabled = Convert.ToBoolean(result[0].GetProperty("DynamicMemoryEnabled"));
|
||||||
|
info.Startup = Convert.ToInt64(result[0].GetProperty("Startup"));
|
||||||
|
info.Minimum = Convert.ToInt64(result[0].GetProperty("Minimum"));
|
||||||
|
info.Maximum = Convert.ToInt64(result[0].GetProperty("Maximum"));
|
||||||
|
info.Buffer = Convert.ToInt32(result[0].GetProperty("Buffer"));
|
||||||
|
info.Priority = Convert.ToInt32(result[0].GetProperty("Priority"));
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BiosInfo GetVMBios(PowerShellManager powerShell, string name)
|
||||||
|
{
|
||||||
|
BiosInfo info = new BiosInfo();
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMBios");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", name);
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
info.NumLockEnabled = Convert.ToBoolean(result[0].GetProperty("NumLockEnabled"));
|
||||||
|
|
||||||
|
List<string> startupOrders = new List<string>();
|
||||||
|
|
||||||
|
foreach (var item in (IEnumerable)result[0].GetProperty("StartupOrder"))
|
||||||
|
startupOrders.Add(item.ToString());
|
||||||
|
|
||||||
|
info.StartupOrder = startupOrders.ToArray();
|
||||||
|
}
|
||||||
|
return info;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VirtualHardDiskInfo[] GetVirtualHardDisks(PowerShellManager powerShell, string name)
|
||||||
|
{
|
||||||
|
|
||||||
|
List<VirtualHardDiskInfo> disks = new List<VirtualHardDiskInfo>();
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-VMHardDiskDrive");
|
||||||
|
cmd.Parameters.Add("VMName", name);
|
||||||
|
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (PSObject d in result)
|
||||||
|
{
|
||||||
|
VirtualHardDiskInfo disk = new VirtualHardDiskInfo();
|
||||||
|
|
||||||
|
disk.SupportPersistentReservations = Convert.ToBoolean(d.GetProperty("SupportPersistentReservations"));
|
||||||
|
disk.MaximumIOPS = Convert.ToUInt64(d.GetProperty("MaximumIOPS"));
|
||||||
|
disk.MinimumIOPS = Convert.ToUInt64(d.GetProperty("MinimumIOPS"));
|
||||||
|
disk.VHDControllerType = d.GetEnum<ControllerType>("ControllerType");
|
||||||
|
disk.ControllerNumber = Convert.ToInt32(d.GetProperty("ControllerNumber"));
|
||||||
|
disk.ControllerLocation = Convert.ToInt32(d.GetProperty("ControllerLocation"));
|
||||||
|
disk.Path = d.GetProperty("Path").ToString();
|
||||||
|
disk.Name = d.GetProperty("Name").ToString();
|
||||||
|
|
||||||
|
GetVirtualHardDiskDetail(powerShell, disk.Path, ref disk);
|
||||||
|
|
||||||
|
disks.Add(disk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return disks.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void GetVirtualHardDiskDetail(PowerShellManager powerShell, string path, ref VirtualHardDiskInfo disk)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(path))
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Get-VHD");
|
||||||
|
cmd.Parameters.Add("Path", path);
|
||||||
|
Collection<PSObject> result = powerShell.Execute(cmd, false);
|
||||||
|
if (result != null && result.Count > 0)
|
||||||
|
{
|
||||||
|
disk.DiskFormat = result[0].GetEnum<VirtualHardDiskFormat>("VhdFormat");
|
||||||
|
disk.DiskType = result[0].GetEnum<VirtualHardDiskType>("VhdType");
|
||||||
|
disk.ParentPath = result[0].GetProperty<string>("ParentPath");
|
||||||
|
disk.MaxInternalSize = Convert.ToInt64(result[0].GetProperty("Size")) / Size1G;
|
||||||
|
disk.FileSize = Convert.ToInt64(result[0].GetProperty("FileSize")) / Size1G;
|
||||||
|
disk.Attached = Convert.ToBoolean(result[0].GetProperty("Attached"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void UpdateBios(PowerShellManager powerShell, VirtualMachine vm, bool bootFromCD, bool numLockEnabled)
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Set-VMBios");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vm.Name);
|
||||||
|
cmd.Parameters.Add(numLockEnabled ? "EnableNumLock" : "DisableNumLock");
|
||||||
|
var bootOrder = bootFromCD
|
||||||
|
? new[] { "CD", "IDE", "LegacyNetworkAdapter", "Floppy" }
|
||||||
|
: new[] { "IDE", "CD", "LegacyNetworkAdapter", "Floppy" };
|
||||||
|
cmd.Parameters.Add("StartupOrder", bootOrder);
|
||||||
|
|
||||||
|
powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
public static void UpdateProcessors(PowerShellManager powerShell, VirtualMachine vm, int cpuCores, int cpuLimitSettings, int cpuReserveSettings, int cpuWeightSettings)
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Set-VMProcessor");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vm.Name);
|
||||||
|
cmd.Parameters.Add("Count", cpuCores);
|
||||||
|
cmd.Parameters.Add("Maximum", Convert.ToInt64(cpuLimitSettings * 1000));
|
||||||
|
cmd.Parameters.Add("Reserve", Convert.ToInt64(cpuReserveSettings * 1000));
|
||||||
|
cmd.Parameters.Add("RelativeWeight", cpuWeightSettings);
|
||||||
|
|
||||||
|
powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
public static void UpdateMemory(PowerShellManager powerShell, VirtualMachine vm, long ramMB)
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Set-VMMemory");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("VMName", vm.Name);
|
||||||
|
cmd.Parameters.Add("StartupBytes", ramMB);
|
||||||
|
|
||||||
|
powerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -51,6 +51,7 @@ using WebsitePanel.Server.Utils;
|
||||||
|
|
||||||
using Vds = Microsoft.Storage.Vds;
|
using Vds = Microsoft.Storage.Vds;
|
||||||
using System.Configuration;
|
using System.Configuration;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace WebsitePanel.Providers.Virtualization
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
{
|
{
|
||||||
|
@ -69,8 +70,6 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
private const string KVP_RAM_SUMMARY_KEY = "VM-RAM-Summary";
|
private const string KVP_RAM_SUMMARY_KEY = "VM-RAM-Summary";
|
||||||
private const string KVP_HDD_SUMMARY_KEY = "VM-HDD-Summary";
|
private const string KVP_HDD_SUMMARY_KEY = "VM-HDD-Summary";
|
||||||
private const Int64 Size1G = 0x40000000;
|
|
||||||
private const Int64 Size1M = 0x100000;
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -140,72 +139,73 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
public VirtualMachine GetVirtualMachine(string vmId)
|
public VirtualMachine GetVirtualMachine(string vmId)
|
||||||
{
|
{
|
||||||
return GetVirtualMachineInternal( vmId, false);
|
return GetVirtualMachineInternal(vmId, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public VirtualMachine GetVirtualMachineInternal(string vmId, bool extendedInfo)
|
public VirtualMachine GetVirtualMachineEx(string vmId)
|
||||||
{
|
{
|
||||||
|
return GetVirtualMachineInternal(vmId, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected VirtualMachine GetVirtualMachineInternal(string vmId, bool extendedInfo)
|
||||||
|
{
|
||||||
HostedSolutionLog.LogStart("GetVirtualMachine");
|
HostedSolutionLog.LogStart("GetVirtualMachine");
|
||||||
HostedSolutionLog.DebugInfo("Virtual Machine: {0}", vmId);
|
HostedSolutionLog.DebugInfo("Virtual Machine: {0}", vmId);
|
||||||
|
|
||||||
Runspace runSpace = null;
|
|
||||||
VirtualMachine vm = new VirtualMachine();
|
VirtualMachine vm = new VirtualMachine();
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
runSpace = OpenRunspace();
|
|
||||||
Command cmd = new Command("Get-VM");
|
Command cmd = new Command("Get-VM");
|
||||||
|
|
||||||
cmd.Parameters.Add("Id", vmId);
|
cmd.Parameters.Add("Id", vmId);
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
Collection<PSObject> result = PowerShell.Execute(cmd, false);
|
||||||
if (result != null && result.Count > 0)
|
if (result != null && result.Count > 0)
|
||||||
{
|
{
|
||||||
vm.Name = GetPSObjectProperty(result[0], "Name").ToString();
|
vm.Name = result[0].GetProperty("Name").ToString();
|
||||||
vm.State = (VirtualMachineState)Enum.Parse(typeof(VirtualMachineState), GetPSObjectProperty(result[0], "State").ToString());
|
vm.State = result[0].GetEnum<VirtualMachineState>("State");
|
||||||
vm.CpuUsage = ConvertNullableToInt32((UInt32?)GetPSObjectProperty(result[0], "CpuUsage"));
|
vm.CpuUsage = ConvertNullableToInt32(result[0].GetProperty("CpuUsage"));
|
||||||
vm.RamUsage = ConvertNullableToInt32((UInt32?)GetPSObjectProperty(result[0], "MemoryAssigned"));
|
vm.RamUsage = ConvertNullableToInt64(result[0].GetProperty("MemoryAssigned"));
|
||||||
vm.Uptime = TimeSpan.Parse(GetPSObjectProperty(result[0], "Uptime").ToString()).Ticks;
|
vm.Uptime = Convert.ToInt64(result[0].GetProperty<TimeSpan>("UpTime").TotalMilliseconds);
|
||||||
vm.Status = GetPSObjectProperty(result[0], "Status").ToString();
|
vm.Status = result[0].GetProperty("Status").ToString();
|
||||||
vm.ReplicationState = GetPSObjectProperty(result[0], "ReplicationState").ToString();
|
vm.ReplicationState = result[0].GetProperty("ReplicationState").ToString();
|
||||||
|
|
||||||
vm.Heartbeat = GetVMHeartBeatStatus(runSpace, vm.Name);
|
vm.Heartbeat = VirtualMachineHelper.GetVMHeartBeatStatus(PowerShell, vm.Name);
|
||||||
|
|
||||||
vm.CreatedDate = DateTime.Now;
|
vm.CreatedDate = DateTime.Now;
|
||||||
|
|
||||||
if (extendedInfo)
|
if (extendedInfo)
|
||||||
{
|
{
|
||||||
vm.CpuCores = GetVMProcessors(runSpace, vm.Name);
|
vm.CpuCores = VirtualMachineHelper.GetVMProcessors(PowerShell, vm.Name);
|
||||||
|
|
||||||
MemoryInfo memoryInfo = GetVMMemory(runSpace, vm.Name);
|
MemoryInfo memoryInfo = VirtualMachineHelper.GetVMMemory(PowerShell, vm.Name);
|
||||||
vm.RamSize = memoryInfo.Startup;
|
vm.RamSize = memoryInfo.Startup;
|
||||||
|
|
||||||
BiosInfo biosInfo = GetVMBios(runSpace, vm.Name);
|
// BIOS
|
||||||
|
BiosInfo biosInfo = VirtualMachineHelper.GetVMBios(PowerShell, vm.Name);
|
||||||
vm.NumLockEnabled = biosInfo.NumLockEnabled;
|
vm.NumLockEnabled = biosInfo.NumLockEnabled;
|
||||||
|
|
||||||
vm.BootFromCD = false;
|
vm.BootFromCD = false;
|
||||||
if ((biosInfo.StartupOrder != null) && (biosInfo.StartupOrder.Length > 0))
|
if ((biosInfo.StartupOrder != null) && (biosInfo.StartupOrder.Length > 0))
|
||||||
vm.BootFromCD = (biosInfo.StartupOrder[0] == "CD");
|
vm.BootFromCD = (biosInfo.StartupOrder[0] == "CD");
|
||||||
|
|
||||||
cmd = new Command("Get-VMDvdDrive");
|
// DVD drive
|
||||||
cmd.Parameters.Add("VMName", vm.Name);
|
var dvdInfo = DvdDriveHelper.Get(PowerShell, vm.Name);
|
||||||
|
vm.DvdDriveInstalled = dvdInfo != null;
|
||||||
|
|
||||||
result = ExecuteShellCommand(runSpace, cmd, false);
|
// HDD
|
||||||
vm.DvdDriveInstalled = (result != null && result.Count > 0);
|
vm.Disks = VirtualMachineHelper.GetVirtualHardDisks(PowerShell, vm.Name);
|
||||||
|
|
||||||
vm.Disks = GetVirtualHardDisks(runSpace, vm.Name);
|
|
||||||
|
|
||||||
if ((vm.Disks != null) & (vm.Disks.GetLength(0) > 0))
|
if (vm.Disks != null && vm.Disks.GetLength(0) > 0)
|
||||||
{
|
{
|
||||||
vm.VirtualHardDrivePath = vm.Disks[0].Path;
|
vm.VirtualHardDrivePath = vm.Disks[0].Path;
|
||||||
vm.HddSize = Convert.ToInt32(vm.Disks[0].FileSize);
|
vm.HddSize = Convert.ToInt32(vm.Disks[0].FileSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// network adapters
|
||||||
|
vm.Adapters = NetworkAdapterHelper.Get(PowerShell, vm.Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -213,192 +213,52 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
HostedSolutionLog.LogError("GetVirtualMachine", ex);
|
HostedSolutionLog.LogError("GetVirtualMachine", ex);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
CloseRunspace(runSpace);
|
|
||||||
}
|
|
||||||
|
|
||||||
HostedSolutionLog.LogEnd("GetVirtualMachine");
|
HostedSolutionLog.LogEnd("GetVirtualMachine");
|
||||||
return vm;
|
return vm;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal OperationalStatus GetVMHeartBeatStatus(Runspace runSpace, string name)
|
|
||||||
{
|
|
||||||
|
|
||||||
OperationalStatus status = OperationalStatus.None;
|
|
||||||
|
|
||||||
Command cmd = new Command("Get-VMIntegrationService");
|
|
||||||
|
|
||||||
cmd.Parameters.Add("VMName", name);
|
|
||||||
cmd.Parameters.Add("Name", "HeartBeat");
|
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
if (result != null && result.Count > 0)
|
|
||||||
{
|
|
||||||
status = (OperationalStatus)Enum.Parse(typeof(OperationalStatus), GetPSObjectProperty(result[0], "PrimaryOperationalStatus").ToString());
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
public VirtualMachine GetVirtualMachineEx(string vmId)
|
|
||||||
{
|
|
||||||
return GetVirtualMachineInternal( vmId, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
internal int GetVMProcessors(Runspace runSpace, string name)
|
|
||||||
{
|
|
||||||
|
|
||||||
int procs = 0;
|
|
||||||
|
|
||||||
Command cmd = new Command("Get-VMProcessor");
|
|
||||||
|
|
||||||
cmd.Parameters.Add("VMName", name);
|
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
if (result != null && result.Count > 0)
|
|
||||||
{
|
|
||||||
procs = Convert.ToInt32(GetPSObjectProperty(result[0], "Count"));
|
|
||||||
|
|
||||||
}
|
|
||||||
return procs;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal MemoryInfo GetVMMemory(Runspace runSpace, string name)
|
|
||||||
{
|
|
||||||
|
|
||||||
MemoryInfo info = new MemoryInfo();
|
|
||||||
|
|
||||||
Command cmd = new Command("Get-VMMemory");
|
|
||||||
|
|
||||||
cmd.Parameters.Add("VMName", name);
|
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
if (result != null && result.Count > 0)
|
|
||||||
{
|
|
||||||
info.DynamicMemoryEnabled = Convert.ToBoolean(GetPSObjectProperty(result[0], "DynamicMemoryEnabled"));
|
|
||||||
info.Startup = Convert.ToInt32(GetPSObjectProperty(result[0], "Startup"));
|
|
||||||
info.Minimum = Convert.ToInt32(GetPSObjectProperty(result[0], "Minimum"));
|
|
||||||
info.Maximum = Convert.ToInt32(GetPSObjectProperty(result[0], "Maximum"));
|
|
||||||
info.Buffer = Convert.ToInt16(GetPSObjectProperty(result[0], "Buffer"));
|
|
||||||
info.Priority = Convert.ToInt16(GetPSObjectProperty(result[0], "Prioriy"));
|
|
||||||
}
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal BiosInfo GetVMBios(Runspace runSpace, string name)
|
|
||||||
{
|
|
||||||
|
|
||||||
BiosInfo info = new BiosInfo();
|
|
||||||
|
|
||||||
Command cmd = new Command("Get-VMBios");
|
|
||||||
|
|
||||||
cmd.Parameters.Add("VMName", name);
|
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
if (result != null && result.Count > 0)
|
|
||||||
{
|
|
||||||
info.NumLockEnabled = Convert.ToBoolean(GetPSObjectProperty(result[0], "NumLockEnabled"));
|
|
||||||
info.StartupOrder = (string[])GetPSObjectProperty(result[0], "StartupOrder");
|
|
||||||
}
|
|
||||||
return info;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal VirtualHardDiskInfo[] GetVirtualHardDisks(Runspace runSpace, string name)
|
|
||||||
{
|
|
||||||
|
|
||||||
List<VirtualHardDiskInfo> disks = new List<VirtualHardDiskInfo>();
|
|
||||||
|
|
||||||
Command cmd = new Command("Get-VMHardDiskDrive");
|
|
||||||
cmd.Parameters.Add("VMName", name);
|
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
if (result != null && result.Count > 0)
|
|
||||||
{
|
|
||||||
foreach(PSObject d in result)
|
|
||||||
{
|
|
||||||
VirtualHardDiskInfo disk = new VirtualHardDiskInfo();
|
|
||||||
|
|
||||||
disk.SupportPersistentReservations = Convert.ToBoolean(GetPSObjectProperty(d, "SupportPersistentReservations"));
|
|
||||||
disk.MaximumIOPS= Convert.ToInt32(GetPSObjectProperty(d, "MaximumIOPS"));
|
|
||||||
disk.MinimumIOPS= Convert.ToInt32(GetPSObjectProperty(d, "MinimumIOPS"));
|
|
||||||
disk.VHDControllerType = (ControllerType)Enum.Parse(typeof(ControllerType), GetPSObjectProperty(d, "ControllerType").ToString());
|
|
||||||
disk.ControllerNumber = Convert.ToInt16(GetPSObjectProperty(d, "ControllerNumber"));
|
|
||||||
disk.ControllerLocation = Convert.ToInt16(GetPSObjectProperty(d, "ControllerLocation"));
|
|
||||||
disk.Path = GetPSObjectProperty(d, "Path").ToString();
|
|
||||||
disk.Name = GetPSObjectProperty(d, "Name").ToString();
|
|
||||||
|
|
||||||
GetVirtualHardDiskDetail(runSpace, disk.Path, ref disk);
|
|
||||||
|
|
||||||
disks.Add(disk);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return disks.ToArray();
|
|
||||||
}
|
|
||||||
|
|
||||||
internal void GetVirtualHardDiskDetail(Runspace runSpace, string path, ref VirtualHardDiskInfo disk)
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(path))
|
|
||||||
{
|
|
||||||
Command cmd = new Command("Get-VHD");
|
|
||||||
cmd.Parameters.Add("Path", path);
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd, false);
|
|
||||||
if (result != null && result.Count > 0)
|
|
||||||
{
|
|
||||||
disk.DiskFormat = (VirtualHardDiskFormat)Enum.Parse(typeof(VirtualHardDiskFormat), GetPSObjectProperty(result[0], "VhdFormat").ToString());
|
|
||||||
disk.DiskType = (VirtualHardDiskType)Enum.Parse(typeof(VirtualHardDiskType), GetPSObjectProperty(result[0], "Type").ToString());
|
|
||||||
disk.ParentPath = GetPSObjectProperty(result[0], "ParentPath").ToString();
|
|
||||||
disk.MaxInternalSize = Convert.ToInt32(GetPSObjectProperty(result[0], "Size")) / Size1G;
|
|
||||||
disk.FileSize = Convert.ToInt32(GetPSObjectProperty(result[0], "FileSize")) / Size1G;
|
|
||||||
disk.Attached = Convert.ToBoolean(GetPSObjectProperty(result[0], "Attached"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
public VirtualMachine GetVirtualMachineExInternal(runSpace, string vmId)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// network adapters
|
|
||||||
List<VirtualMachineNetworkAdapter> nics = new List<VirtualMachineNetworkAdapter>();
|
|
||||||
ManagementObject objVM = GetVirtualMachineObject(vmId);
|
|
||||||
|
|
||||||
// synthetic adapters
|
|
||||||
foreach (ManagementObject objNic in wmi.GetWmiObjects("Msvm_SyntheticEthernetPortSettingData", "InstanceID like 'Microsoft:{0}%'", vmId))
|
|
||||||
nics.Add(new VirtualMachineNetworkAdapter() { Name = (string)objNic["ElementName"], MacAddress = (string)objNic["Address"] });
|
|
||||||
|
|
||||||
// legacy adapters
|
|
||||||
foreach (ManagementObject objNic in wmi.GetWmiObjects("Msvm_EmulatedEthernetPortSettingData", "InstanceID like 'Microsoft:{0}%'", vmId))
|
|
||||||
nics.Add(new VirtualMachineNetworkAdapter() { Name = (string)objNic["ElementName"], MacAddress = (string)objNic["Address"] });
|
|
||||||
|
|
||||||
vm.Adapters = nics.ToArray();
|
|
||||||
|
|
||||||
return vm;
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
public List<VirtualMachine> GetVirtualMachines()
|
public List<VirtualMachine> GetVirtualMachines()
|
||||||
{
|
{
|
||||||
List<VirtualMachine> vms = new List<VirtualMachine>();
|
HostedSolutionLog.LogStart("GetVirtualMachines");
|
||||||
/*
|
|
||||||
ManagementObjectCollection objVms = wmi.ExecuteWmiQuery("select * from msvm_ComputerSystem where Name <> ElementName");
|
List<VirtualMachine> vmachines = new List<VirtualMachine>();
|
||||||
foreach (ManagementObject objVm in objVms)
|
|
||||||
vms.Add(CreateVirtualMachineFromWmiObject(objVm));
|
try
|
||||||
*/
|
{
|
||||||
return vms;
|
Command cmd = new Command("Get-VM");
|
||||||
|
|
||||||
|
Collection<PSObject> result = PowerShell.Execute(cmd, false);
|
||||||
|
foreach (PSObject current in result)
|
||||||
|
{
|
||||||
|
VirtualMachine vm = new VirtualMachine
|
||||||
|
{
|
||||||
|
VirtualMachineId = current.GetProperty("Id").ToString(),
|
||||||
|
Name = current.GetProperty("Name").ToString(),
|
||||||
|
State = (VirtualMachineState)Enum.Parse(typeof(VirtualMachineState), current.GetProperty("State").ToString()),
|
||||||
|
Uptime = Convert.ToInt64(current.GetProperty<TimeSpan>("UpTime").TotalMilliseconds)
|
||||||
|
};
|
||||||
|
vmachines.Add(vm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError("GetVirtualMachines", ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("GetVirtualMachines");
|
||||||
|
return vmachines;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] GetVirtualMachineThumbnailImage(string vmId, ThumbnailSize size)
|
public byte[] GetVirtualMachineThumbnailImage(string vmId, ThumbnailSize size)
|
||||||
{
|
{
|
||||||
ManagementBaseObject objSummary = GetVirtualMachineSummaryInformation(vmId, (SummaryInformationRequest)size);
|
//ManagementBaseObject objSummary = GetVirtualMachineSummaryInformation(vmId, (SummaryInformationRequest)size);
|
||||||
wmi.Dump(objSummary);
|
//wmi.Dump(objSummary);
|
||||||
return GetTumbnailFromSummaryInformation(objSummary, size);
|
//return GetTumbnailFromSummaryInformation(objSummary, size);
|
||||||
|
// TODO:
|
||||||
|
return (byte[]) (new ImageConverter()).ConvertTo(new Bitmap(80, 60), typeof (byte[]));
|
||||||
}
|
}
|
||||||
|
|
||||||
private byte[] GetTumbnailFromSummaryInformation(ManagementBaseObject objSummary, ThumbnailSize size)
|
private byte[] GetTumbnailFromSummaryInformation(ManagementBaseObject objSummary, ThumbnailSize size)
|
||||||
|
@ -508,11 +368,11 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
vmID = (string)objVM["Name"];
|
vmID = (string)objVM["Name"];
|
||||||
|
|
||||||
// update general settings
|
// update general settings
|
||||||
UpdateVirtualMachineGeneralSettings(vmID, objVM,
|
//UpdateVirtualMachineGeneralSettings(vmID, objVM,
|
||||||
vm.CpuCores,
|
// vm.CpuCores,
|
||||||
vm.RamSize,
|
// vm.RamSize,
|
||||||
vm.BootFromCD,
|
// vm.BootFromCD,
|
||||||
vm.NumLockEnabled);
|
// vm.NumLockEnabled);
|
||||||
|
|
||||||
// hard disks
|
// hard disks
|
||||||
// load IDE 0 controller
|
// load IDE 0 controller
|
||||||
|
@ -567,113 +427,32 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
public VirtualMachine UpdateVirtualMachine(VirtualMachine vm)
|
public VirtualMachine UpdateVirtualMachine(VirtualMachine vm)
|
||||||
{
|
{
|
||||||
string vmId = vm.VirtualMachineId;
|
HostedSolutionLog.LogStart("UpdateVirtualMachine");
|
||||||
|
HostedSolutionLog.DebugInfo("Virtual Machine: {0}", vm.VirtualMachineId);
|
||||||
|
|
||||||
// get VM object
|
Runspace runSpace = null;
|
||||||
ManagementObject objVM = GetVirtualMachineObject(vmId);
|
|
||||||
|
|
||||||
// update general settings
|
try
|
||||||
UpdateVirtualMachineGeneralSettings(vmId, objVM,
|
|
||||||
vm.CpuCores,
|
|
||||||
vm.RamSize,
|
|
||||||
vm.BootFromCD,
|
|
||||||
vm.NumLockEnabled);
|
|
||||||
|
|
||||||
// check DVD drive
|
|
||||||
ManagementObject objDvdDrive = wmi.GetWmiObject(
|
|
||||||
"Msvm_ResourceAllocationSettingData", "ResourceSubType = 'Microsoft Synthetic DVD Drive'"
|
|
||||||
+ " and InstanceID like 'Microsoft:{0}%' and Address = 0", vmId);
|
|
||||||
|
|
||||||
if (vm.DvdDriveInstalled && objDvdDrive == null)
|
|
||||||
AddVirtualMachineDvdDrive(vmId, objVM);
|
|
||||||
else if (!vm.DvdDriveInstalled && objDvdDrive != null)
|
|
||||||
RemoveVirtualMachineResources(objVM, objDvdDrive);
|
|
||||||
|
|
||||||
// External NIC
|
|
||||||
if (!vm.ExternalNetworkEnabled
|
|
||||||
&& !String.IsNullOrEmpty(vm.ExternalNicMacAddress))
|
|
||||||
{
|
{
|
||||||
// delete adapter
|
var realVm = GetVirtualMachine(vm.VirtualMachineId);
|
||||||
DeleteNetworkAdapter(objVM, vm.ExternalNicMacAddress);
|
|
||||||
|
VirtualMachineHelper.UpdateBios(PowerShell, realVm, vm.BootFromCD, vm.NumLockEnabled);
|
||||||
|
VirtualMachineHelper.UpdateProcessors(PowerShell, realVm, vm.CpuCores, CpuLimitSettings, CpuReserveSettings, CpuWeightSettings);
|
||||||
|
VirtualMachineHelper.UpdateMemory(PowerShell, realVm, vm.RamSize);
|
||||||
|
DvdDriveHelper.Update(PowerShell, realVm, vm.DvdDriveInstalled);
|
||||||
|
|
||||||
// reset MAC
|
|
||||||
vm.ExternalNicMacAddress = null;
|
|
||||||
}
|
}
|
||||||
else if (vm.ExternalNetworkEnabled
|
catch (Exception ex)
|
||||||
&& !String.IsNullOrEmpty(vm.ExternalNicMacAddress))
|
|
||||||
{
|
{
|
||||||
// add external adapter
|
HostedSolutionLog.LogError("UpdateVirtualMachine", ex);
|
||||||
AddNetworkAdapter(objVM, vm.ExternalSwitchId, vm.Name, vm.ExternalNicMacAddress, EXTERNAL_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
throw;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Private NIC
|
|
||||||
if (!vm.PrivateNetworkEnabled
|
|
||||||
&& !String.IsNullOrEmpty(vm.PrivateNicMacAddress))
|
|
||||||
{
|
|
||||||
// delete adapter
|
|
||||||
DeleteNetworkAdapter(objVM, vm.PrivateNicMacAddress);
|
|
||||||
|
|
||||||
// reset MAC
|
|
||||||
vm.PrivateNicMacAddress = null;
|
|
||||||
}
|
|
||||||
else if (vm.PrivateNetworkEnabled
|
|
||||||
&& !String.IsNullOrEmpty(vm.PrivateNicMacAddress))
|
|
||||||
{
|
|
||||||
// add private adapter
|
|
||||||
AddNetworkAdapter(objVM, vm.PrivateSwitchId, vm.Name, vm.PrivateNicMacAddress, PRIVATE_NETWORK_ADAPTER_NAME, vm.LegacyNetworkAdapter);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("UpdateVirtualMachine");
|
||||||
|
|
||||||
return vm;
|
return vm;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateVirtualMachineGeneralSettings(string vmId, ManagementObject objVM, int cpuCores, int ramMB, bool bootFromCD, bool numLockEnabled)
|
|
||||||
{
|
|
||||||
// request management service
|
|
||||||
ManagementObject objVmsvc = GetVirtualSystemManagementService();
|
|
||||||
|
|
||||||
// VM resources
|
|
||||||
List<string> vmConfig = new List<string>();
|
|
||||||
|
|
||||||
// get system settings
|
|
||||||
ManagementObject objSettings = GetVirtualMachineSettingsObject(vmId);
|
|
||||||
|
|
||||||
// BIOS (num lock)
|
|
||||||
objSettings["BIOSNumLock"] = numLockEnabled;
|
|
||||||
|
|
||||||
// BIOS (boot order)
|
|
||||||
// BootOrder = 0 - Boot from floppy, 1 - Boot from CD, 2 - Boot from disk, 3 - PXE Boot
|
|
||||||
objSettings["BootOrder"] = bootFromCD ? new int[] { 1, 2, 3, 0 } : new int[] { 2, 1, 3, 0 };
|
|
||||||
|
|
||||||
// modify machine settings
|
|
||||||
ManagementBaseObject inParams = objVmsvc.GetMethodParameters("ModifyVirtualSystem");
|
|
||||||
inParams["ComputerSystem"] = objVM;
|
|
||||||
inParams["SystemSettingData"] = objSettings.GetText(TextFormat.CimDtd20);
|
|
||||||
ManagementBaseObject outParams = objVmsvc.InvokeMethod("ModifyVirtualSystem", inParams, null);
|
|
||||||
JobResult job = CreateJobResultFromWmiMethodResults(outParams);
|
|
||||||
|
|
||||||
// setup CPU
|
|
||||||
ManagementObject objCpu = wmi.GetWmiObject("Msvm_ProcessorSettingData", "InstanceID Like 'Microsoft:{0}%'", vmId);
|
|
||||||
objCpu["VirtualQuantity"] = cpuCores;
|
|
||||||
objCpu["Limit"] = Convert.ToInt64(CpuLimitSettings * 1000);
|
|
||||||
objCpu["Reservation"] = Convert.ToInt64(CpuReserveSettings * 1000);
|
|
||||||
objCpu["Weight"] = CpuWeightSettings;
|
|
||||||
vmConfig.Add(objCpu.GetText(TextFormat.CimDtd20));
|
|
||||||
|
|
||||||
// setup RAM
|
|
||||||
ManagementObject objRam = wmi.GetWmiObject("Msvm_MemorySettingData", "InstanceID Like 'Microsoft:{0}%'", vmId);
|
|
||||||
objRam["VirtualQuantity"] = ramMB.ToString();
|
|
||||||
objRam["Reservation"] = ramMB.ToString();
|
|
||||||
objRam["Limit"] = ramMB.ToString();
|
|
||||||
vmConfig.Add(objRam.GetText(TextFormat.CimDtd20));
|
|
||||||
|
|
||||||
// modify machine resources
|
|
||||||
inParams = objVmsvc.GetMethodParameters("ModifyVirtualSystemResources");
|
|
||||||
inParams["ComputerSystem"] = objVM;
|
|
||||||
inParams["ResourceSettingData"] = vmConfig.ToArray();
|
|
||||||
outParams = objVmsvc.InvokeMethod("ModifyVirtualSystemResources", inParams, null);
|
|
||||||
job = CreateJobResultFromWmiMethodResults(outParams);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AddVirtualMachineDvdDrive(string vmId, ManagementObject objVM)
|
private void AddVirtualMachineDvdDrive(string vmId, ManagementObject objVM)
|
||||||
{
|
{
|
||||||
|
@ -838,32 +617,90 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
public JobResult ChangeVirtualMachineState(string vmId, VirtualMachineRequestedState newState)
|
public JobResult ChangeVirtualMachineState(string vmId, VirtualMachineRequestedState newState)
|
||||||
{
|
{
|
||||||
// target computer
|
HostedSolutionLog.LogStart("ChangeVirtualMachineState");
|
||||||
ManagementObject objVm = GetVirtualMachineObject(vmId);
|
var jobResult = new JobResult();
|
||||||
|
|
||||||
// get method
|
var vm = GetVirtualMachine(vmId);
|
||||||
ManagementBaseObject inParams = objVm.GetMethodParameters("RequestStateChange");
|
|
||||||
inParams["RequestedState"] = (Int32)newState;
|
|
||||||
|
|
||||||
// invoke method
|
try
|
||||||
ManagementBaseObject outParams = objVm.InvokeMethod("RequestStateChange", inParams, null);
|
{
|
||||||
return CreateJobResultFromWmiMethodResults(outParams);
|
string cmdTxt;
|
||||||
|
List<string> paramList = new List<string>();
|
||||||
|
|
||||||
|
switch (newState)
|
||||||
|
{
|
||||||
|
case VirtualMachineRequestedState.Start:
|
||||||
|
cmdTxt = "Start-VM";
|
||||||
|
break;
|
||||||
|
case VirtualMachineRequestedState.Pause:
|
||||||
|
cmdTxt = "Suspend-VM";
|
||||||
|
break;
|
||||||
|
case VirtualMachineRequestedState.Reset:
|
||||||
|
cmdTxt = "Restart-VM";
|
||||||
|
break;
|
||||||
|
case VirtualMachineRequestedState.Resume:
|
||||||
|
cmdTxt = "Resume-VM";
|
||||||
|
break;
|
||||||
|
case VirtualMachineRequestedState.ShutDown:
|
||||||
|
cmdTxt = "Stop-VM";
|
||||||
|
break;
|
||||||
|
case VirtualMachineRequestedState.TurnOff:
|
||||||
|
cmdTxt = "Stop-VM";
|
||||||
|
paramList.Add("TurnOff");
|
||||||
|
break;
|
||||||
|
case VirtualMachineRequestedState.Save:
|
||||||
|
cmdTxt = "Save-VM";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException("newState");
|
||||||
|
}
|
||||||
|
|
||||||
|
Command cmd = new Command(cmdTxt);
|
||||||
|
|
||||||
|
cmd.Parameters.Add("Name", vm.Name);
|
||||||
|
//cmd.Parameters.Add("AsJob");
|
||||||
|
paramList.ForEach(p => cmd.Parameters.Add(p));
|
||||||
|
|
||||||
|
PowerShell.Execute(cmd, false);
|
||||||
|
jobResult = CreateSuccessJobResult();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError("ChangeVirtualMachineState", ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("ChangeVirtualMachineState");
|
||||||
|
|
||||||
|
return jobResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ReturnCode ShutDownVirtualMachine(string vmId, bool force, string reason)
|
public ReturnCode ShutDownVirtualMachine(string vmId, bool force, string reason)
|
||||||
{
|
{
|
||||||
// load virtual machine object
|
HostedSolutionLog.LogStart("ShutDownVirtualMachine");
|
||||||
ManagementObject objVm = GetVirtualMachineObject(vmId);
|
ReturnCode returnCode = ReturnCode.OK;
|
||||||
ManagementObject objShutdown = wmi.GetRelatedWmiObject(objVm, "msvm_ShutdownComponent");
|
|
||||||
|
|
||||||
// execute InitiateShutdown method
|
var vm = GetVirtualMachine(vmId);
|
||||||
ManagementBaseObject inParams = objShutdown.GetMethodParameters("InitiateShutdown");
|
|
||||||
inParams["Force"] = force;
|
|
||||||
inParams["Reason"] = reason;
|
|
||||||
|
|
||||||
// invoke method
|
try
|
||||||
ManagementBaseObject outParams = objShutdown.InvokeMethod("InitiateShutdown", inParams, null);
|
{
|
||||||
return (ReturnCode)Convert.ToInt32(outParams["ReturnValue"]);
|
Command cmd = new Command("Stop-VM");
|
||||||
|
|
||||||
|
cmd.Parameters.Add("Name", vm.Name);
|
||||||
|
if (force) cmd.Parameters.Add("Force");
|
||||||
|
//if (!string.IsNullOrEmpty(reason)) cmd.Parameters.Add("Reason", reason);
|
||||||
|
|
||||||
|
PowerShell.Execute(cmd, false);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError("ShutDownVirtualMachine", ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("ShutDownVirtualMachine");
|
||||||
|
|
||||||
|
return returnCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ConcreteJob> GetVirtualMachineJobs(string vmId)
|
public List<ConcreteJob> GetVirtualMachineJobs(string vmId)
|
||||||
|
@ -1221,14 +1058,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
#region Virtual Switches
|
#region Virtual Switches
|
||||||
public List<VirtualSwitch> GetSwitches()
|
public List<VirtualSwitch> GetSwitches()
|
||||||
{
|
{
|
||||||
List<VirtualSwitch> switches = new List<VirtualSwitch>();
|
return GetSwitches(null, null);
|
||||||
|
|
||||||
// load wmi objects
|
|
||||||
ManagementObjectCollection objSwitches = wmi.GetWmiObjects("msvm_VirtualSwitch");
|
|
||||||
foreach (ManagementObject objSwitch in objSwitches)
|
|
||||||
switches.Add(CreateSwitchFromWmiObject(objSwitch));
|
|
||||||
|
|
||||||
return switches;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<VirtualSwitch> GetExternalSwitches(string computerName)
|
public List<VirtualSwitch> GetExternalSwitches(string computerName)
|
||||||
|
@ -1246,19 +1076,19 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
runSpace = OpenRunspace();
|
|
||||||
Command cmd = new Command("Get-VMSwitch");
|
Command cmd = new Command("Get-VMSwitch");
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(computerName)) cmd.Parameters.Add("ComputerName", computerName);
|
if (!string.IsNullOrEmpty(computerName)) cmd.Parameters.Add("ComputerName", computerName);
|
||||||
if (!string.IsNullOrEmpty(type)) cmd.Parameters.Add("SwitchType", type);
|
if (!string.IsNullOrEmpty(type)) cmd.Parameters.Add("SwitchType", type);
|
||||||
|
|
||||||
Collection<PSObject> result = ExecuteShellCommand(runSpace, cmd,false);
|
Collection<PSObject> result = PowerShell.Execute(cmd,false);
|
||||||
foreach (PSObject current in result)
|
foreach (PSObject current in result)
|
||||||
{
|
{
|
||||||
VirtualSwitch sw = new VirtualSwitch();
|
VirtualSwitch sw = new VirtualSwitch();
|
||||||
sw.SwitchId = GetPSObjectProperty(current, "Id").ToString();
|
sw.SwitchId = current.GetProperty("Name").ToString();
|
||||||
sw.Name = GetPSObjectProperty(current, "Name").ToString();
|
sw.Name = current.GetProperty("Name").ToString();
|
||||||
sw.SwitchType = GetPSObjectProperty(current, "SwitchType").ToString();
|
sw.SwitchType = current.GetProperty("SwitchType").ToString();
|
||||||
switches.Add(sw);
|
switches.Add(sw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1267,10 +1097,6 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
HostedSolutionLog.LogError("GetSwitches", ex);
|
HostedSolutionLog.LogError("GetSwitches", ex);
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
finally
|
|
||||||
{
|
|
||||||
CloseRunspace(runSpace);
|
|
||||||
}
|
|
||||||
|
|
||||||
HostedSolutionLog.LogEnd("GetSwitches");
|
HostedSolutionLog.LogEnd("GetSwitches");
|
||||||
return switches;
|
return switches;
|
||||||
|
@ -1987,8 +1813,30 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
#region Jobs
|
#region Jobs
|
||||||
public ConcreteJob GetJob(string jobId)
|
public ConcreteJob GetJob(string jobId)
|
||||||
{
|
{
|
||||||
ManagementObject objJob = wmi.GetWmiObject("CIM_ConcreteJob", "InstanceID = '{0}'", jobId);
|
HostedSolutionLog.LogStart("GetJob");
|
||||||
return CreateJobFromWmiObject(objJob);
|
HostedSolutionLog.DebugInfo("jobId: {0}", jobId);
|
||||||
|
|
||||||
|
Runspace runSpace = null;
|
||||||
|
ConcreteJob job;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
Command cmd = new Command("Get-Job");
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(jobId)) cmd.Parameters.Add("Id", jobId);
|
||||||
|
|
||||||
|
Collection<PSObject> result = PowerShell.Execute( cmd, false);
|
||||||
|
job = CreateJobFromPSObject(result);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError("GetJob", ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("GetJob");
|
||||||
|
return job;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ConcreteJob> GetAllJobs()
|
public List<ConcreteJob> GetAllJobs()
|
||||||
|
@ -2254,6 +2102,35 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Private Methods
|
#region Private Methods
|
||||||
|
protected JobResult CreateSuccessJobResult()
|
||||||
|
{
|
||||||
|
JobResult result = new JobResult();
|
||||||
|
|
||||||
|
result.Job = new ConcreteJob(){JobState = ConcreteJobState.Completed};
|
||||||
|
result.ReturnValue = ReturnCode.OK;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
protected JobResult CreateJobResultFromPSResults(Collection<PSObject> objJob)
|
||||||
|
{
|
||||||
|
if (objJob == null || objJob.Count == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
JobResult result = new JobResult();
|
||||||
|
|
||||||
|
result.Job = CreateJobFromPSObject(objJob);
|
||||||
|
|
||||||
|
result.ReturnValue = ReturnCode.JobStarted;
|
||||||
|
switch (result.Job.JobState)
|
||||||
|
{
|
||||||
|
case ConcreteJobState.Failed:
|
||||||
|
result.ReturnValue = ReturnCode.Failed;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
protected JobResult CreateJobResultFromWmiMethodResults(ManagementBaseObject outParams)
|
protected JobResult CreateJobResultFromWmiMethodResults(ManagementBaseObject outParams)
|
||||||
{
|
{
|
||||||
JobResult result = new JobResult();
|
JobResult result = new JobResult();
|
||||||
|
@ -2337,6 +2214,36 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
return sw;
|
return sw;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ConcreteJob CreateJobFromPSObject(Collection<PSObject> objJob)
|
||||||
|
{
|
||||||
|
if (objJob == null || objJob.Count == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
ConcreteJob job = new ConcreteJob();
|
||||||
|
job.Id = objJob[0].GetProperty<int>("Id").ToString();
|
||||||
|
job.JobState = objJob[0].GetEnum<ConcreteJobState>("JobStateInfo");
|
||||||
|
job.Caption = objJob[0].GetProperty<string>("Name");
|
||||||
|
job.Description = objJob[0].GetProperty<string>("Command");
|
||||||
|
job.StartTime = objJob[0].GetProperty<DateTime>("PSBeginTime");
|
||||||
|
job.ElapsedTime = objJob[0].GetProperty<DateTime?>("PSEndTime") ?? DateTime.Now;
|
||||||
|
|
||||||
|
// PercentComplete
|
||||||
|
job.PercentComplete = 0;
|
||||||
|
var progress = (PSDataCollection<ProgressRecord>)objJob[0].GetProperty("Progress");
|
||||||
|
if (progress != null && progress.Count > 0)
|
||||||
|
job.PercentComplete = progress[0].PercentComplete;
|
||||||
|
|
||||||
|
// Errors
|
||||||
|
var errors = (PSDataCollection<ErrorRecord>)objJob[0].GetProperty("Error");
|
||||||
|
if (errors != null && errors.Count > 0)
|
||||||
|
{
|
||||||
|
job.ErrorDescription = errors[0].ErrorDetails.Message + ". " + errors[0].ErrorDetails.RecommendedAction;
|
||||||
|
job.ErrorCode = errors[0].Exception != null ? -1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return job;
|
||||||
|
}
|
||||||
|
|
||||||
private ConcreteJob CreateJobFromWmiObject(ManagementBaseObject objJob)
|
private ConcreteJob CreateJobFromWmiObject(ManagementBaseObject objJob)
|
||||||
{
|
{
|
||||||
if (objJob == null || objJob.Properties.Count == 0)
|
if (objJob == null || objJob.Properties.Count == 0)
|
||||||
|
@ -2623,155 +2530,24 @@ exit", Convert.ToInt32(objDisk["Index"])));
|
||||||
#endregion Hyper-V Cloud
|
#endregion Hyper-V Cloud
|
||||||
|
|
||||||
#region PowerShell integration
|
#region PowerShell integration
|
||||||
private static InitialSessionState session = null;
|
|
||||||
|
|
||||||
internal virtual Runspace OpenRunspace()
|
private PowerShellManager _powerShell;
|
||||||
|
protected PowerShellManager PowerShell
|
||||||
{
|
{
|
||||||
HostedSolutionLog.LogStart("OpenRunspace");
|
get { return _powerShell ?? (_powerShell = new PowerShellManager()); }
|
||||||
|
|
||||||
if (session == null)
|
|
||||||
{
|
|
||||||
session = InitialSessionState.CreateDefault();
|
|
||||||
session.ImportPSModule(new string[] { "Hyper-V" });
|
|
||||||
}
|
|
||||||
Runspace runSpace = RunspaceFactory.CreateRunspace(session);
|
|
||||||
//
|
|
||||||
runSpace.Open();
|
|
||||||
//
|
|
||||||
runSpace.SessionStateProxy.SetVariable("ConfirmPreference", "none");
|
|
||||||
HostedSolutionLog.LogEnd("OpenRunspace");
|
|
||||||
return runSpace;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void CloseRunspace(Runspace runspace)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (runspace != null && runspace.RunspaceStateInfo.State == RunspaceState.Opened)
|
|
||||||
{
|
|
||||||
runspace.Close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
HostedSolutionLog.LogError("Runspace error", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd)
|
|
||||||
{
|
|
||||||
return ExecuteShellCommand(runSpace, cmd, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd, bool useDomainController)
|
|
||||||
{
|
|
||||||
object[] errors;
|
|
||||||
return ExecuteShellCommand(runSpace, cmd, useDomainController, out errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd, out object[] errors)
|
|
||||||
{
|
|
||||||
return ExecuteShellCommand(runSpace, cmd, true, out errors);
|
|
||||||
}
|
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd, bool useDomainController, out object[] errors)
|
|
||||||
{
|
|
||||||
HostedSolutionLog.LogStart("ExecuteShellCommand");
|
|
||||||
List<object> errorList = new List<object>();
|
|
||||||
|
|
||||||
HostedSolutionLog.DebugCommand(cmd);
|
|
||||||
Collection<PSObject> results = null;
|
|
||||||
// Create a pipeline
|
|
||||||
Pipeline pipeLine = runSpace.CreatePipeline();
|
|
||||||
using (pipeLine)
|
|
||||||
{
|
|
||||||
// Add the command
|
|
||||||
pipeLine.Commands.Add(cmd);
|
|
||||||
// Execute the pipeline and save the objects returned.
|
|
||||||
results = pipeLine.Invoke();
|
|
||||||
|
|
||||||
// Log out any errors in the pipeline execution
|
|
||||||
// NOTE: These errors are NOT thrown as exceptions!
|
|
||||||
// Be sure to check this to ensure that no errors
|
|
||||||
// happened while executing the command.
|
|
||||||
if (pipeLine.Error != null && pipeLine.Error.Count > 0)
|
|
||||||
{
|
|
||||||
foreach (object item in pipeLine.Error.ReadToEnd())
|
|
||||||
{
|
|
||||||
errorList.Add(item);
|
|
||||||
string errorMessage = string.Format("Invoke error: {0}", item);
|
|
||||||
HostedSolutionLog.LogWarning(errorMessage);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pipeLine = null;
|
|
||||||
errors = errorList.ToArray();
|
|
||||||
HostedSolutionLog.LogEnd("ExecuteShellCommand");
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal object GetPSObjectProperty(PSObject obj, string name)
|
|
||||||
{
|
|
||||||
return obj.Members[name].Value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Returns the identity of the object from the shell execution result
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="result"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
internal string GetResultObjectIdentity(Collection<PSObject> result)
|
|
||||||
{
|
|
||||||
HostedSolutionLog.LogStart("GetResultObjectIdentity");
|
|
||||||
if (result == null)
|
|
||||||
throw new ArgumentNullException("result", "Execution result is not specified");
|
|
||||||
|
|
||||||
if (result.Count < 1)
|
|
||||||
throw new ArgumentException("Execution result is empty", "result");
|
|
||||||
|
|
||||||
if (result.Count > 1)
|
|
||||||
throw new ArgumentException("Execution result contains more than one object", "result");
|
|
||||||
|
|
||||||
PSMemberInfo info = result[0].Members["Identity"];
|
|
||||||
if (info == null)
|
|
||||||
throw new ArgumentException("Execution result does not contain Identity property", "result");
|
|
||||||
|
|
||||||
string ret = info.Value.ToString();
|
|
||||||
HostedSolutionLog.LogEnd("GetResultObjectIdentity");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal string GetResultObjectDN(Collection<PSObject> result)
|
|
||||||
{
|
|
||||||
HostedSolutionLog.LogStart("GetResultObjectDN");
|
|
||||||
if (result == null)
|
|
||||||
throw new ArgumentNullException("result", "Execution result is not specified");
|
|
||||||
|
|
||||||
if (result.Count < 1)
|
|
||||||
throw new ArgumentException("Execution result does not contain any object");
|
|
||||||
|
|
||||||
if (result.Count > 1)
|
|
||||||
throw new ArgumentException("Execution result contains more than one object");
|
|
||||||
|
|
||||||
PSMemberInfo info = result[0].Members["DistinguishedName"];
|
|
||||||
if (info == null)
|
|
||||||
throw new ArgumentException("Execution result does not contain DistinguishedName property", "result");
|
|
||||||
|
|
||||||
string ret = info.Value.ToString();
|
|
||||||
HostedSolutionLog.LogEnd("GetResultObjectDN");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
internal int ConvertNullableToInt32<T>(Nullable<T> value) where T : struct
|
internal int ConvertNullableToInt32(object value)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
return value == null ? 0 : Convert.ToInt32(value);
|
||||||
if (value.HasValue)
|
}
|
||||||
{
|
|
||||||
ret = Convert.ToInt32(value.Value);
|
internal long ConvertNullableToInt64(object value)
|
||||||
}
|
{
|
||||||
return ret;
|
return value == null ? 0 : Convert.ToInt64(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,159 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.ObjectModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Management.Automation;
|
||||||
|
using System.Management.Automation.Runspaces;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Providers.Virtualization
|
||||||
|
{
|
||||||
|
public class PowerShellManager : IDisposable
|
||||||
|
{
|
||||||
|
protected static InitialSessionState session = null;
|
||||||
|
|
||||||
|
protected Runspace RunSpace { get; set; }
|
||||||
|
|
||||||
|
public PowerShellManager()
|
||||||
|
{
|
||||||
|
OpenRunspace();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void OpenRunspace()
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("OpenRunspace");
|
||||||
|
|
||||||
|
if (session == null)
|
||||||
|
{
|
||||||
|
session = InitialSessionState.CreateDefault();
|
||||||
|
session.ImportPSModule(new[] {"Hyper-V"});
|
||||||
|
}
|
||||||
|
|
||||||
|
Runspace runSpace = RunspaceFactory.CreateRunspace(session);
|
||||||
|
runSpace.Open();
|
||||||
|
runSpace.SessionStateProxy.SetVariable("ConfirmPreference", "none");
|
||||||
|
|
||||||
|
RunSpace = runSpace;
|
||||||
|
|
||||||
|
HostedSolutionLog.LogEnd("OpenRunspace");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (RunSpace != null && RunSpace.RunspaceStateInfo.State == RunspaceState.Opened)
|
||||||
|
{
|
||||||
|
RunSpace.Close();
|
||||||
|
RunSpace = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogError("Runspace error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<PSObject> Execute(Command cmd)
|
||||||
|
{
|
||||||
|
return Execute(cmd, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<PSObject> Execute(Command cmd, bool useDomainController)
|
||||||
|
{
|
||||||
|
object[] errors;
|
||||||
|
return Execute(cmd, useDomainController, out errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<PSObject> Execute(Command cmd, out object[] errors)
|
||||||
|
{
|
||||||
|
return Execute(cmd, true, out errors);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<PSObject> Execute(Command cmd, bool useDomainController, out object[] errors)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("Execute");
|
||||||
|
List<object> errorList = new List<object>();
|
||||||
|
|
||||||
|
HostedSolutionLog.DebugCommand(cmd);
|
||||||
|
Collection<PSObject> results = null;
|
||||||
|
// Create a pipeline
|
||||||
|
Pipeline pipeLine = RunSpace.CreatePipeline();
|
||||||
|
using (pipeLine)
|
||||||
|
{
|
||||||
|
// Add the command
|
||||||
|
pipeLine.Commands.Add(cmd);
|
||||||
|
// Execute the pipeline and save the objects returned.
|
||||||
|
results = pipeLine.Invoke();
|
||||||
|
|
||||||
|
// Log out any errors in the pipeline execution
|
||||||
|
// NOTE: These errors are NOT thrown as exceptions!
|
||||||
|
// Be sure to check this to ensure that no errors
|
||||||
|
// happened while executing the command.
|
||||||
|
if (pipeLine.Error != null && pipeLine.Error.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (object item in pipeLine.Error.ReadToEnd())
|
||||||
|
{
|
||||||
|
errorList.Add(item);
|
||||||
|
string errorMessage = string.Format("Invoke error: {0}", item);
|
||||||
|
HostedSolutionLog.LogWarning(errorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pipeLine = null;
|
||||||
|
errors = errorList.ToArray();
|
||||||
|
HostedSolutionLog.LogEnd("Execute");
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the identity of the object from the shell execution result
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="result"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string GetResultObjectIdentity(Collection<PSObject> result)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("GetResultObjectIdentity");
|
||||||
|
if (result == null)
|
||||||
|
throw new ArgumentNullException("result", "Execution result is not specified");
|
||||||
|
|
||||||
|
if (result.Count < 1)
|
||||||
|
throw new ArgumentException("Execution result is empty", "result");
|
||||||
|
|
||||||
|
if (result.Count > 1)
|
||||||
|
throw new ArgumentException("Execution result contains more than one object", "result");
|
||||||
|
|
||||||
|
PSMemberInfo info = result[0].Members["Identity"];
|
||||||
|
if (info == null)
|
||||||
|
throw new ArgumentException("Execution result does not contain Identity property", "result");
|
||||||
|
|
||||||
|
string ret = info.Value.ToString();
|
||||||
|
HostedSolutionLog.LogEnd("GetResultObjectIdentity");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string GetResultObjectDN(Collection<PSObject> result)
|
||||||
|
{
|
||||||
|
HostedSolutionLog.LogStart("GetResultObjectDN");
|
||||||
|
if (result == null)
|
||||||
|
throw new ArgumentNullException("result", "Execution result is not specified");
|
||||||
|
|
||||||
|
if (result.Count < 1)
|
||||||
|
throw new ArgumentException("Execution result does not contain any object");
|
||||||
|
|
||||||
|
if (result.Count > 1)
|
||||||
|
throw new ArgumentException("Execution result contains more than one object");
|
||||||
|
|
||||||
|
PSMemberInfo info = result[0].Members["DistinguishedName"];
|
||||||
|
if (info == null)
|
||||||
|
throw new ArgumentException("Execution result does not contain DistinguishedName property", "result");
|
||||||
|
|
||||||
|
string ret = info.Value.ToString();
|
||||||
|
HostedSolutionLog.LogEnd("GetResultObjectDN");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -53,8 +53,13 @@
|
||||||
<Compile Include="..\VersionInfo.cs">
|
<Compile Include="..\VersionInfo.cs">
|
||||||
<Link>VersionInfo.cs</Link>
|
<Link>VersionInfo.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Extensions\PSObjectExtension.cs" />
|
||||||
|
<Compile Include="Helpers\NetworkAdapterHelper.cs" />
|
||||||
|
<Compile Include="Helpers\DvdDriveHelper.cs" />
|
||||||
|
<Compile Include="PowerShellManager.cs" />
|
||||||
<Compile Include="HyperV2012R2.cs" />
|
<Compile Include="HyperV2012R2.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Helpers\VirtualMachineHelper.cs" />
|
||||||
<Compile Include="Wmi.cs" />
|
<Compile Include="Wmi.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -488,7 +488,7 @@ namespace WebsitePanel.Providers.Virtualization
|
||||||
return vm;
|
return vm;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateVirtualMachineGeneralSettings(string vmId, ManagementObject objVM, int cpuCores, int ramMB, bool bootFromCD, bool numLockEnabled)
|
private void UpdateVirtualMachineGeneralSettings(string vmId, ManagementObject objVM, int cpuCores, long ramMB, bool bootFromCD, bool numLockEnabled)
|
||||||
{
|
{
|
||||||
// request management service
|
// request management service
|
||||||
ManagementObject objVmsvc = GetVirtualSystemManagementService();
|
ManagementObject objVmsvc = GetVirtualSystemManagementService();
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -18,6 +18,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
using System.Web.Services.Protocols;
|
using System.Web.Services.Protocols;
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
|
@ -81,6 +82,24 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetRdsCollectionSessionHostsOperationCompleted;
|
private System.Threading.SendOrPostCallback GetRdsCollectionSessionHostsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsServerInfoOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsServerStatusOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback ShutDownRdsServerOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback RestartRdsServerOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SaveRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetRdsCollectionLocalAdminsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback MoveRdsServerToTenantOUOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback RemoveRdsServerFromTenantOUOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback InstallCertificateOperationCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public RemoteDesktopServices() {
|
public RemoteDesktopServices() {
|
||||||
this.Url = "http://localhost:9003/RemoteDesktopServices.asmx";
|
this.Url = "http://localhost:9003/RemoteDesktopServices.asmx";
|
||||||
|
@ -164,6 +183,33 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetRdsCollectionSessionHostsCompletedEventHandler GetRdsCollectionSessionHostsCompleted;
|
public event GetRdsCollectionSessionHostsCompletedEventHandler GetRdsCollectionSessionHostsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsServerInfoCompletedEventHandler GetRdsServerInfoCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsServerStatusCompletedEventHandler GetRdsServerStatusCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event ShutDownRdsServerCompletedEventHandler ShutDownRdsServerCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event RestartRdsServerCompletedEventHandler RestartRdsServerCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SaveRdsCollectionLocalAdminsCompletedEventHandler SaveRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetRdsCollectionLocalAdminsCompletedEventHandler GetRdsCollectionLocalAdminsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event MoveRdsServerToTenantOUCompletedEventHandler MoveRdsServerToTenantOUCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event RemoveRdsServerFromTenantOUCompletedEventHandler RemoveRdsServerFromTenantOUCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event InstallCertificateCompletedEventHandler InstallCertificateCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
@ -378,18 +424,20 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveCollection", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public bool RemoveCollection(string organizationId, string collectionName) {
|
public bool RemoveCollection(string organizationId, string collectionName, RdsServer[] servers) {
|
||||||
object[] results = this.Invoke("RemoveCollection", new object[] {
|
object[] results = this.Invoke("RemoveCollection", new object[] {
|
||||||
organizationId,
|
organizationId,
|
||||||
collectionName});
|
collectionName,
|
||||||
|
servers});
|
||||||
return ((bool)(results[0]));
|
return ((bool)(results[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public System.IAsyncResult BeginRemoveCollection(string organizationId, string collectionName, System.AsyncCallback callback, object asyncState) {
|
public System.IAsyncResult BeginRemoveCollection(string organizationId, string collectionName, RdsServer[] servers, System.AsyncCallback callback, object asyncState) {
|
||||||
return this.BeginInvoke("RemoveCollection", new object[] {
|
return this.BeginInvoke("RemoveCollection", new object[] {
|
||||||
organizationId,
|
organizationId,
|
||||||
collectionName}, callback, asyncState);
|
collectionName,
|
||||||
|
servers}, callback, asyncState);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
|
@ -399,18 +447,19 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void RemoveCollectionAsync(string organizationId, string collectionName) {
|
public void RemoveCollectionAsync(string organizationId, string collectionName, RdsServer[] servers) {
|
||||||
this.RemoveCollectionAsync(organizationId, collectionName, null);
|
this.RemoveCollectionAsync(organizationId, collectionName, servers, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public void RemoveCollectionAsync(string organizationId, string collectionName, object userState) {
|
public void RemoveCollectionAsync(string organizationId, string collectionName, RdsServer[] servers, object userState) {
|
||||||
if ((this.RemoveCollectionOperationCompleted == null)) {
|
if ((this.RemoveCollectionOperationCompleted == null)) {
|
||||||
this.RemoveCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveCollectionOperationCompleted);
|
this.RemoveCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveCollectionOperationCompleted);
|
||||||
}
|
}
|
||||||
this.InvokeAsync("RemoveCollection", new object[] {
|
this.InvokeAsync("RemoveCollection", new object[] {
|
||||||
organizationId,
|
organizationId,
|
||||||
collectionName}, this.RemoveCollectionOperationCompleted, userState);
|
collectionName,
|
||||||
|
servers}, this.RemoveCollectionOperationCompleted, userState);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRemoveCollectionOperationCompleted(object arg) {
|
private void OnRemoveCollectionOperationCompleted(object arg) {
|
||||||
|
@ -1299,6 +1348,387 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetRdsServerInfo", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public RdsServerInfo GetRdsServerInfo(string serverName) {
|
||||||
|
object[] results = this.Invoke("GetRdsServerInfo", new object[] {
|
||||||
|
serverName});
|
||||||
|
return ((RdsServerInfo)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsServerInfo(string serverName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsServerInfo", new object[] {
|
||||||
|
serverName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public RdsServerInfo EndGetRdsServerInfo(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((RdsServerInfo)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerInfoAsync(string serverName) {
|
||||||
|
this.GetRdsServerInfoAsync(serverName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerInfoAsync(string serverName, object userState) {
|
||||||
|
if ((this.GetRdsServerInfoOperationCompleted == null)) {
|
||||||
|
this.GetRdsServerInfoOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsServerInfoOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsServerInfo", new object[] {
|
||||||
|
serverName}, this.GetRdsServerInfoOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsServerInfoOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsServerInfoCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsServerInfoCompleted(this, new GetRdsServerInfoCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetRdsServerStatus", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string GetRdsServerStatus(string serverName) {
|
||||||
|
object[] results = this.Invoke("GetRdsServerStatus", new object[] {
|
||||||
|
serverName});
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsServerStatus(string serverName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsServerStatus", new object[] {
|
||||||
|
serverName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string EndGetRdsServerStatus(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerStatusAsync(string serverName) {
|
||||||
|
this.GetRdsServerStatusAsync(serverName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsServerStatusAsync(string serverName, object userState) {
|
||||||
|
if ((this.GetRdsServerStatusOperationCompleted == null)) {
|
||||||
|
this.GetRdsServerStatusOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsServerStatusOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsServerStatus", new object[] {
|
||||||
|
serverName}, this.GetRdsServerStatusOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsServerStatusOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsServerStatusCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsServerStatusCompleted(this, new GetRdsServerStatusCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ShutDownRdsServer", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void ShutDownRdsServer(string serverName) {
|
||||||
|
this.Invoke("ShutDownRdsServer", new object[] {
|
||||||
|
serverName});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginShutDownRdsServer(string serverName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("ShutDownRdsServer", new object[] {
|
||||||
|
serverName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndShutDownRdsServer(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void ShutDownRdsServerAsync(string serverName) {
|
||||||
|
this.ShutDownRdsServerAsync(serverName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void ShutDownRdsServerAsync(string serverName, object userState) {
|
||||||
|
if ((this.ShutDownRdsServerOperationCompleted == null)) {
|
||||||
|
this.ShutDownRdsServerOperationCompleted = new System.Threading.SendOrPostCallback(this.OnShutDownRdsServerOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("ShutDownRdsServer", new object[] {
|
||||||
|
serverName}, this.ShutDownRdsServerOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnShutDownRdsServerOperationCompleted(object arg) {
|
||||||
|
if ((this.ShutDownRdsServerCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.ShutDownRdsServerCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RestartRdsServer", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void RestartRdsServer(string serverName) {
|
||||||
|
this.Invoke("RestartRdsServer", new object[] {
|
||||||
|
serverName});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginRestartRdsServer(string serverName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("RestartRdsServer", new object[] {
|
||||||
|
serverName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndRestartRdsServer(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RestartRdsServerAsync(string serverName) {
|
||||||
|
this.RestartRdsServerAsync(serverName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RestartRdsServerAsync(string serverName, object userState) {
|
||||||
|
if ((this.RestartRdsServerOperationCompleted == null)) {
|
||||||
|
this.RestartRdsServerOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRestartRdsServerOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("RestartRdsServer", new object[] {
|
||||||
|
serverName}, this.RestartRdsServerOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnRestartRdsServerOperationCompleted(object arg) {
|
||||||
|
if ((this.RestartRdsServerCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.RestartRdsServerCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SaveRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void SaveRdsCollectionLocalAdmins(OrganizationUser[] users, string[] hosts) {
|
||||||
|
this.Invoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
hosts});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSaveRdsCollectionLocalAdmins(OrganizationUser[] users, string[] hosts, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
hosts}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndSaveRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(OrganizationUser[] users, string[] hosts) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsAsync(users, hosts, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SaveRdsCollectionLocalAdminsAsync(OrganizationUser[] users, string[] hosts, object userState) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.SaveRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSaveRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SaveRdsCollectionLocalAdmins", new object[] {
|
||||||
|
users,
|
||||||
|
hosts}, this.SaveRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSaveRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.SaveRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SaveRdsCollectionLocalAdminsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetRdsCollectionLocalAdmins", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public string[] GetRdsCollectionLocalAdmins(string hostName) {
|
||||||
|
object[] results = this.Invoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
hostName});
|
||||||
|
return ((string[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetRdsCollectionLocalAdmins(string hostName, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
hostName}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string[] EndGetRdsCollectionLocalAdmins(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((string[])(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(string hostName) {
|
||||||
|
this.GetRdsCollectionLocalAdminsAsync(hostName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetRdsCollectionLocalAdminsAsync(string hostName, object userState) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsOperationCompleted == null)) {
|
||||||
|
this.GetRdsCollectionLocalAdminsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetRdsCollectionLocalAdminsOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetRdsCollectionLocalAdmins", new object[] {
|
||||||
|
hostName}, this.GetRdsCollectionLocalAdminsOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetRdsCollectionLocalAdminsOperationCompleted(object arg) {
|
||||||
|
if ((this.GetRdsCollectionLocalAdminsCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetRdsCollectionLocalAdminsCompleted(this, new GetRdsCollectionLocalAdminsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/MoveRdsServerToTenantOU", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void MoveRdsServerToTenantOU(string hostName, string organizationId) {
|
||||||
|
this.Invoke("MoveRdsServerToTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginMoveRdsServerToTenantOU(string hostName, string organizationId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("MoveRdsServerToTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndMoveRdsServerToTenantOU(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void MoveRdsServerToTenantOUAsync(string hostName, string organizationId) {
|
||||||
|
this.MoveRdsServerToTenantOUAsync(hostName, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void MoveRdsServerToTenantOUAsync(string hostName, string organizationId, object userState) {
|
||||||
|
if ((this.MoveRdsServerToTenantOUOperationCompleted == null)) {
|
||||||
|
this.MoveRdsServerToTenantOUOperationCompleted = new System.Threading.SendOrPostCallback(this.OnMoveRdsServerToTenantOUOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("MoveRdsServerToTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, this.MoveRdsServerToTenantOUOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnMoveRdsServerToTenantOUOperationCompleted(object arg) {
|
||||||
|
if ((this.MoveRdsServerToTenantOUCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.MoveRdsServerToTenantOUCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/RemoveRdsServerFromTenantOU", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void RemoveRdsServerFromTenantOU(string hostName, string organizationId) {
|
||||||
|
this.Invoke("RemoveRdsServerFromTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginRemoveRdsServerFromTenantOU(string hostName, string organizationId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("RemoveRdsServerFromTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndRemoveRdsServerFromTenantOU(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RemoveRdsServerFromTenantOUAsync(string hostName, string organizationId) {
|
||||||
|
this.RemoveRdsServerFromTenantOUAsync(hostName, organizationId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void RemoveRdsServerFromTenantOUAsync(string hostName, string organizationId, object userState) {
|
||||||
|
if ((this.RemoveRdsServerFromTenantOUOperationCompleted == null)) {
|
||||||
|
this.RemoveRdsServerFromTenantOUOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveRdsServerFromTenantOUOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("RemoveRdsServerFromTenantOU", new object[] {
|
||||||
|
hostName,
|
||||||
|
organizationId}, this.RemoveRdsServerFromTenantOUOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnRemoveRdsServerFromTenantOUOperationCompleted(object arg) {
|
||||||
|
if ((this.RemoveRdsServerFromTenantOUCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.RemoveRdsServerFromTenantOUCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/InstallCertificate", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public void InstallCertificate([System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] certificate, string password, string[] hostNames) {
|
||||||
|
this.Invoke("InstallCertificate", new object[] {
|
||||||
|
certificate,
|
||||||
|
password,
|
||||||
|
hostNames});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginInstallCertificate(byte[] certificate, string password, string[] hostNames, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("InstallCertificate", new object[] {
|
||||||
|
certificate,
|
||||||
|
password,
|
||||||
|
hostNames}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void EndInstallCertificate(System.IAsyncResult asyncResult) {
|
||||||
|
this.EndInvoke(asyncResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void InstallCertificateAsync(byte[] certificate, string password, string[] hostNames) {
|
||||||
|
this.InstallCertificateAsync(certificate, password, hostNames, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void InstallCertificateAsync(byte[] certificate, string password, string[] hostNames, object userState) {
|
||||||
|
if ((this.InstallCertificateOperationCompleted == null)) {
|
||||||
|
this.InstallCertificateOperationCompleted = new System.Threading.SendOrPostCallback(this.OnInstallCertificateOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("InstallCertificate", new object[] {
|
||||||
|
certificate,
|
||||||
|
password,
|
||||||
|
hostNames}, this.InstallCertificateOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnInstallCertificateOperationCompleted(object arg) {
|
||||||
|
if ((this.InstallCertificateCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.InstallCertificateCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
|
@ -1826,4 +2256,106 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsServerInfoCompletedEventHandler(object sender, GetRdsServerInfoCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsServerInfoCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsServerInfoCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public RdsServerInfo Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((RdsServerInfo)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsServerStatusCompletedEventHandler(object sender, GetRdsServerStatusCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsServerStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsServerStatusCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void ShutDownRdsServerCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void RestartRdsServerCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SaveRdsCollectionLocalAdminsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetRdsCollectionLocalAdminsCompletedEventHandler(object sender, GetRdsCollectionLocalAdminsCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetRdsCollectionLocalAdminsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetRdsCollectionLocalAdminsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public string[] Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((string[])(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void MoveRdsServerToTenantOUCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void RemoveRdsServerFromTenantOUCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void InstallCertificateCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 2013
|
# Visual Studio 2013
|
||||||
VisualStudioVersion = 12.0.30723.0
|
VisualStudioVersion = 12.0.21005.1
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Caching Application Block", "Caching Application Block", "{C8E6F2E4-A5B8-486A-A56E-92D864524682}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
|
|
@ -175,6 +175,23 @@ namespace WebsitePanel.Server
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public SystemFile[] Search(string organizationId, string[] searchPaths, string searchText, string userPrincipalName, bool recursive)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' Search", ProviderSettings.ProviderName);
|
||||||
|
var searchResults = EnterpriseStorageProvider.Search(organizationId, searchPaths, searchText, userPrincipalName, recursive);
|
||||||
|
Log.WriteEnd("'{0}' Search", ProviderSettings.ProviderName);
|
||||||
|
return searchResults;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' Search", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
[WebMethod, SoapHeader("settings")]
|
||||||
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
|
public SystemFile RenameFolder(string organizationId, string originalFolder, string newFolder, WebDavSetting setting)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,6 +42,7 @@ using WebsitePanel.Providers;
|
||||||
using WebsitePanel.Providers.OS;
|
using WebsitePanel.Providers.OS;
|
||||||
using WebsitePanel.Providers.RemoteDesktopServices;
|
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||||
using WebsitePanel.Server.Utils;
|
using WebsitePanel.Server.Utils;
|
||||||
|
using WebsitePanel.Providers.HostedSolution;
|
||||||
|
|
||||||
namespace WebsitePanel.Server
|
namespace WebsitePanel.Server
|
||||||
{
|
{
|
||||||
|
@ -145,12 +146,12 @@ namespace WebsitePanel.Server
|
||||||
}
|
}
|
||||||
|
|
||||||
[WebMethod, SoapHeader("settings")]
|
[WebMethod, SoapHeader("settings")]
|
||||||
public bool RemoveCollection(string organizationId, string collectionName)
|
public bool RemoveCollection(string organizationId, string collectionName, List<RdsServer> servers)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Log.WriteStart("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
Log.WriteStart("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
||||||
var result = RDSProvider.RemoveCollection(organizationId, collectionName);
|
var result = RDSProvider.RemoveCollection(organizationId, collectionName, servers);
|
||||||
Log.WriteEnd("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
Log.WriteEnd("'{0}' RemoveCollection", ProviderSettings.ProviderName);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -495,5 +496,155 @@ namespace WebsitePanel.Server
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public RdsServerInfo GetRdsServerInfo(string serverName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' GetRdsServerInfo", ProviderSettings.ProviderName);
|
||||||
|
var result = RDSProvider.GetRdsServerInfo(serverName);
|
||||||
|
Log.WriteEnd("'{0}' GetRdsServerInfo", ProviderSettings.ProviderName);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' GetRdsServerInfo", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public string GetRdsServerStatus(string serverName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' GetRdsServerStatus", ProviderSettings.ProviderName);
|
||||||
|
var result = RDSProvider.GetRdsServerStatus(serverName);
|
||||||
|
Log.WriteEnd("'{0}' GetRdsServerStatus", ProviderSettings.ProviderName);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' GetRdsServerStatus", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void ShutDownRdsServer(string serverName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' ShutDownRdsServer", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.ShutDownRdsServer(serverName);
|
||||||
|
Log.WriteEnd("'{0}' ShutDownRdsServer", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' ShutDownRdsServer", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void RestartRdsServer(string serverName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' RestartRdsServer", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.RestartRdsServer(serverName);
|
||||||
|
Log.WriteEnd("'{0}' RestartRdsServer", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' RestartRdsServer", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void SaveRdsCollectionLocalAdmins(List<OrganizationUser> users, List<string> hosts)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' SaveRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.SaveRdsCollectionLocalAdmins(users, hosts);
|
||||||
|
Log.WriteEnd("'{0}' SaveRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' SaveRdsCollectionLocalAdmins", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public List<string> GetRdsCollectionLocalAdmins(string hostName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' GetRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
var result = RDSProvider.GetRdsCollectionLocalAdmins(hostName);
|
||||||
|
Log.WriteEnd("'{0}' GetRdsCollectionLocalAdmins", ProviderSettings.ProviderName);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' GetRdsCollectionLocalAdmins", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void MoveRdsServerToTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' MoveRdsServerToTenantOU", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.MoveRdsServerToTenantOU(hostName, organizationId);
|
||||||
|
Log.WriteEnd("'{0}' MoveRdsServerToTenantOU", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' MoveRdsServerToTenantOU", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void RemoveRdsServerFromTenantOU(string hostName, string organizationId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' RemoveRdsServerFromTenantOU", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.RemoveRdsServerFromTenantOU(hostName, organizationId);
|
||||||
|
Log.WriteEnd("'{0}' RemoveRdsServerFromTenantOU", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' RemoveRdsServerFromTenantOU", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[WebMethod, SoapHeader("settings")]
|
||||||
|
public void InstallCertificate(byte[] certificate, string password, List<string> hostNames)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Log.WriteStart("'{0}' InstallCertificate", ProviderSettings.ProviderName);
|
||||||
|
RDSProvider.InstallCertificate(certificate, password, hostNames);
|
||||||
|
Log.WriteEnd("'{0}' InstallCertificate", ProviderSettings.ProviderName);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Log.WriteError(String.Format("'{0}' InstallCertificate", ProviderSettings.ProviderName), ex);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Resources;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Attributes.Resources
|
||||||
|
{
|
||||||
|
public class LocalizedDescriptionAttribute : DescriptionAttribute
|
||||||
|
{
|
||||||
|
private readonly string _resourceKey;
|
||||||
|
private readonly ResourceManager _resource;
|
||||||
|
public LocalizedDescriptionAttribute(Type resourceType, string resourceKey)
|
||||||
|
{
|
||||||
|
_resource = new ResourceManager(resourceType);
|
||||||
|
_resourceKey = resourceKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Description
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string displayName = _resource.GetString(_resourceKey);
|
||||||
|
|
||||||
|
return string.IsNullOrEmpty(displayName)
|
||||||
|
? string.Format("[[{0}]]", _resourceKey)
|
||||||
|
: displayName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,13 +7,11 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
{
|
{
|
||||||
public int DefaultCount { get; private set; }
|
public int DefaultCount { get; private set; }
|
||||||
public int AddElementsCount { get; private set; }
|
public int AddElementsCount { get; private set; }
|
||||||
public List<string> ElementsToIgnore { get; private set; }
|
|
||||||
|
|
||||||
public ElementsRendering()
|
public ElementsRendering()
|
||||||
{
|
{
|
||||||
DefaultCount = ConfigSection.ElementsRendering.DefaultCount;
|
DefaultCount = ConfigSection.ElementsRendering.DefaultCount;
|
||||||
AddElementsCount = ConfigSection.ElementsRendering.AddElementsCount;
|
AddElementsCount = ConfigSection.ElementsRendering.AddElementsCount;
|
||||||
ElementsToIgnore = ConfigSection.ElementsRendering.ElementsToIgnore.Split(',').ToList();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -12,10 +12,12 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
public FileIconsDictionary()
|
public FileIconsDictionary()
|
||||||
{
|
{
|
||||||
DefaultPath = ConfigSection.FileIcons.DefaultPath;
|
DefaultPath = ConfigSection.FileIcons.DefaultPath;
|
||||||
|
FolderPath = ConfigSection.FileIcons.FolderPath;
|
||||||
_fileIcons = ConfigSection.FileIcons.Cast<FileIconsElement>().ToDictionary(x => x.Extension, y => y.Path);
|
_fileIcons = ConfigSection.FileIcons.Cast<FileIconsElement>().ToDictionary(x => x.Extension, y => y.Path);
|
||||||
}
|
}
|
||||||
|
|
||||||
public string DefaultPath { get; private set; }
|
public string DefaultPath { get; private set; }
|
||||||
|
public string FolderPath { get; private set; }
|
||||||
|
|
||||||
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
|
public IEnumerator<KeyValuePair<string, string>> GetEnumerator()
|
||||||
{
|
{
|
||||||
|
@ -57,4 +59,4 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
get { return _fileIcons.Values; }
|
get { return _fileIcons.Values; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using WebsitePanel.WebDav.Core.Config.WebConfigSections;
|
||||||
|
using WebsitePanel.WebDavPortal.WebConfigSections;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
|
{
|
||||||
|
public class FilesToIgnoreCollection : AbstractConfigCollection, IReadOnlyCollection<FilesToIgnoreElement>
|
||||||
|
{
|
||||||
|
private readonly IList<FilesToIgnoreElement> _filesToIgnore;
|
||||||
|
|
||||||
|
public FilesToIgnoreCollection()
|
||||||
|
{
|
||||||
|
_filesToIgnore = ConfigSection.FilesToIgnore.Cast<FilesToIgnoreElement>().ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<FilesToIgnoreElement> GetEnumerator()
|
||||||
|
{
|
||||||
|
return _filesToIgnore.GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get { return _filesToIgnore.Count; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(string name)
|
||||||
|
{
|
||||||
|
return _filesToIgnore.Any(x => x.Name == name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using WebsitePanel.WebDav.Core.Config.WebConfigSections;
|
||||||
|
using WebsitePanel.WebDavPortal.WebConfigSections;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
|
{
|
||||||
|
public class OpenerCollection : AbstractConfigCollection, IReadOnlyCollection<OpenerElement>
|
||||||
|
{
|
||||||
|
private readonly IList<OpenerElement> _targetBlankMimeTypeExtensions;
|
||||||
|
|
||||||
|
public OpenerCollection()
|
||||||
|
{
|
||||||
|
_targetBlankMimeTypeExtensions = ConfigSection.TypeOpener.Cast<OpenerElement>().ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<OpenerElement> GetEnumerator()
|
||||||
|
{
|
||||||
|
return _targetBlankMimeTypeExtensions.GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
return GetEnumerator();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
get { return _targetBlankMimeTypeExtensions.Count; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Contains(string extension)
|
||||||
|
{
|
||||||
|
return _targetBlankMimeTypeExtensions.Any(x => x.Extension == extension);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -13,5 +13,7 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
HttpErrorsCollection HttpErrors { get; }
|
HttpErrorsCollection HttpErrors { get; }
|
||||||
OfficeOnlineCollection OfficeOnline { get; }
|
OfficeOnlineCollection OfficeOnline { get; }
|
||||||
OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; }
|
OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; }
|
||||||
|
FilesToIgnoreCollection FilesToIgnore { get; }
|
||||||
|
OpenerCollection FileOpener { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,7 +6,6 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
{
|
{
|
||||||
private const string DefaultCountKey = "defaultCount";
|
private const string DefaultCountKey = "defaultCount";
|
||||||
private const string AddElementsCountKey = "addElementsCount";
|
private const string AddElementsCountKey = "addElementsCount";
|
||||||
private const string ElementsToIgnoreKey = "elementsToIgnoreKey";
|
|
||||||
|
|
||||||
[ConfigurationProperty(DefaultCountKey, IsKey = true, IsRequired = true, DefaultValue = 30)]
|
[ConfigurationProperty(DefaultCountKey, IsKey = true, IsRequired = true, DefaultValue = 30)]
|
||||||
public int DefaultCount
|
public int DefaultCount
|
||||||
|
@ -21,12 +20,5 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
get { return (int)this[AddElementsCountKey]; }
|
get { return (int)this[AddElementsCountKey]; }
|
||||||
set { this[AddElementsCountKey] = value; }
|
set { this[AddElementsCountKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[ConfigurationProperty(ElementsToIgnoreKey, IsKey = true, IsRequired = true, DefaultValue = "")]
|
|
||||||
public string ElementsToIgnore
|
|
||||||
{
|
|
||||||
get { return (string)this[ElementsToIgnoreKey]; }
|
|
||||||
set { this[ElementsToIgnoreKey] = value; }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
public class EnterpriseServerElement : ConfigurationElement
|
||||||
|
{
|
||||||
|
private const string ValueKey = "url";
|
||||||
|
|
||||||
|
[ConfigurationProperty(ValueKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
get { return (string)this[ValueKey]; }
|
||||||
|
set { this[ValueKey] = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,7 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
public class FileIconsElementCollection : ConfigurationElementCollection
|
public class FileIconsElementCollection : ConfigurationElementCollection
|
||||||
{
|
{
|
||||||
private const string DefaultPathKey = "defaultPath";
|
private const string DefaultPathKey = "defaultPath";
|
||||||
|
private const string FolderPathKey = "folderPath";
|
||||||
|
|
||||||
[ConfigurationProperty(DefaultPathKey, IsRequired = false, DefaultValue = "/")]
|
[ConfigurationProperty(DefaultPathKey, IsRequired = false, DefaultValue = "/")]
|
||||||
public string DefaultPath
|
public string DefaultPath
|
||||||
|
@ -14,6 +15,13 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
set { this[DefaultPathKey] = value; }
|
set { this[DefaultPathKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(FolderPathKey, IsRequired = false)]
|
||||||
|
public string FolderPath
|
||||||
|
{
|
||||||
|
get { return (string)this[FolderPathKey]; }
|
||||||
|
set { this[FolderPathKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
protected override ConfigurationElement CreateNewElement()
|
protected override ConfigurationElement CreateNewElement()
|
||||||
{
|
{
|
||||||
return new FileIconsElement();
|
return new FileIconsElement();
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
public class FilesToIgnoreElement : ConfigurationElement
|
||||||
|
{
|
||||||
|
private const string NameKey = "name";
|
||||||
|
private const string RegexKey = "regex";
|
||||||
|
|
||||||
|
[ConfigurationProperty(NameKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get { return this[NameKey].ToString(); }
|
||||||
|
set { this[NameKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(RegexKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string Regex
|
||||||
|
{
|
||||||
|
get { return this[RegexKey].ToString(); }
|
||||||
|
set { this[RegexKey] = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
[ConfigurationCollection(typeof(FilesToIgnoreElement))]
|
||||||
|
public class FilesToIgnoreElementCollection : ConfigurationElementCollection
|
||||||
|
{
|
||||||
|
protected override ConfigurationElement CreateNewElement()
|
||||||
|
{
|
||||||
|
return new FilesToIgnoreElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override object GetElementKey(ConfigurationElement element)
|
||||||
|
{
|
||||||
|
return ((FilesToIgnoreElement)element).Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -7,6 +7,7 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
private const string ExtensionKey = "extension";
|
private const string ExtensionKey = "extension";
|
||||||
private const string OwaViewKey = "OwaView";
|
private const string OwaViewKey = "OwaView";
|
||||||
private const string OwaEditorKey = "OwaEditor";
|
private const string OwaEditorKey = "OwaEditor";
|
||||||
|
private const string OwaMobileViewKey = "OwaMobileView";
|
||||||
|
|
||||||
[ConfigurationProperty(ExtensionKey, IsKey = true, IsRequired = true)]
|
[ConfigurationProperty(ExtensionKey, IsKey = true, IsRequired = true)]
|
||||||
public string Extension
|
public string Extension
|
||||||
|
@ -28,5 +29,13 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
get { return this[OwaEditorKey].ToString(); }
|
get { return this[OwaEditorKey].ToString(); }
|
||||||
set { this[OwaEditorKey] = value; }
|
set { this[OwaEditorKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[ConfigurationProperty(OwaMobileViewKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string OwaMobileViev
|
||||||
|
{
|
||||||
|
get { return this[OwaMobileViewKey].ToString(); }
|
||||||
|
set { this[OwaMobileViewKey] = value; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
public class OpenerElement : ConfigurationElement
|
||||||
|
{
|
||||||
|
private const string ExtensionKey = "extension";
|
||||||
|
private const string MemeTypeKey = "mimeType";
|
||||||
|
private const string TargetBlankKey = "isTargetBlank";
|
||||||
|
|
||||||
|
[ConfigurationProperty(ExtensionKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string Extension
|
||||||
|
{
|
||||||
|
get { return this[ExtensionKey].ToString(); }
|
||||||
|
set { this[ExtensionKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(MemeTypeKey, IsKey = true, IsRequired = true)]
|
||||||
|
public string MimeType
|
||||||
|
{
|
||||||
|
get { return this[MemeTypeKey].ToString(); }
|
||||||
|
set { this[MemeTypeKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(TargetBlankKey, IsKey = true, IsRequired = true)]
|
||||||
|
public bool IstargetBlank
|
||||||
|
{
|
||||||
|
get { return Convert.ToBoolean(this[TargetBlankKey]); }
|
||||||
|
set { this[TargetBlankKey] = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Configuration;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
|
{
|
||||||
|
[ConfigurationCollection(typeof(OpenerElement))]
|
||||||
|
public class OpenerElementCollection : ConfigurationElementCollection
|
||||||
|
{
|
||||||
|
protected override ConfigurationElement CreateNewElement()
|
||||||
|
{
|
||||||
|
return new OpenerElement();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override object GetElementKey(ConfigurationElement element)
|
||||||
|
{
|
||||||
|
return ((OpenerElement)element).Extension;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
private const string WebdavRootKey = "webdavRoot";
|
private const string WebdavRootKey = "webdavRoot";
|
||||||
private const string AuthTimeoutCookieNameKey = "authTimeoutCookieName";
|
private const string AuthTimeoutCookieNameKey = "authTimeoutCookieName";
|
||||||
private const string AppName = "applicationName";
|
private const string AppName = "applicationName";
|
||||||
|
private const string EnterpriseServerUrlNameKey = "enterpriseServer";
|
||||||
private const string WebsitePanelConstantUserKey = "websitePanelConstantUser";
|
private const string WebsitePanelConstantUserKey = "websitePanelConstantUser";
|
||||||
private const string ElementsRenderingKey = "elementsRendering";
|
private const string ElementsRenderingKey = "elementsRendering";
|
||||||
private const string Rfc2898CryptographyKey = "rfc2898Cryptography";
|
private const string Rfc2898CryptographyKey = "rfc2898Cryptography";
|
||||||
|
@ -17,6 +18,8 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
private const string FileIconsKey = "fileIcons";
|
private const string FileIconsKey = "fileIcons";
|
||||||
private const string OwaSupportedBrowsersKey = "owaSupportedBrowsers";
|
private const string OwaSupportedBrowsersKey = "owaSupportedBrowsers";
|
||||||
private const string OfficeOnlineKey = "officeOnline";
|
private const string OfficeOnlineKey = "officeOnline";
|
||||||
|
private const string FilesToIgnoreKey = "filesToIgnore";
|
||||||
|
private const string TypeOpenerKey = "typeOpener";
|
||||||
|
|
||||||
public const string SectionName = "webDavExplorerConfigurationSettings";
|
public const string SectionName = "webDavExplorerConfigurationSettings";
|
||||||
|
|
||||||
|
@ -27,6 +30,13 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
set { this[AuthTimeoutCookieNameKey] = value; }
|
set { this[AuthTimeoutCookieNameKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(EnterpriseServerUrlNameKey, IsRequired = true)]
|
||||||
|
public EnterpriseServerElement EnterpriseServerUrl
|
||||||
|
{
|
||||||
|
get { return (EnterpriseServerElement)this[EnterpriseServerUrlNameKey]; }
|
||||||
|
set { this[EnterpriseServerUrlNameKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
[ConfigurationProperty(WebdavRootKey, IsRequired = true)]
|
[ConfigurationProperty(WebdavRootKey, IsRequired = true)]
|
||||||
public WebdavRootElement WebdavRoot
|
public WebdavRootElement WebdavRoot
|
||||||
{
|
{
|
||||||
|
@ -89,5 +99,19 @@ namespace WebsitePanel.WebDavPortal.WebConfigSections
|
||||||
get { return (OfficeOnlineElementCollection)this[OfficeOnlineKey]; }
|
get { return (OfficeOnlineElementCollection)this[OfficeOnlineKey]; }
|
||||||
set { this[OfficeOnlineKey] = value; }
|
set { this[OfficeOnlineKey] = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(TypeOpenerKey, IsDefaultCollection = false)]
|
||||||
|
public OpenerElementCollection TypeOpener
|
||||||
|
{
|
||||||
|
get { return (OpenerElementCollection)this[TypeOpenerKey]; }
|
||||||
|
set { this[TypeOpenerKey] = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[ConfigurationProperty(FilesToIgnoreKey, IsDefaultCollection = false)]
|
||||||
|
public FilesToIgnoreElementCollection FilesToIgnore
|
||||||
|
{
|
||||||
|
get { return (FilesToIgnoreElementCollection)this[FilesToIgnoreKey]; }
|
||||||
|
set { this[FilesToIgnoreKey] = value; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -19,6 +19,8 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
HttpErrors = new HttpErrorsCollection();
|
HttpErrors = new HttpErrorsCollection();
|
||||||
OfficeOnline = new OfficeOnlineCollection();
|
OfficeOnline = new OfficeOnlineCollection();
|
||||||
OwaSupportedBrowsers = new OwaSupportedBrowsersCollection();
|
OwaSupportedBrowsers = new OwaSupportedBrowsersCollection();
|
||||||
|
FilesToIgnore = new FilesToIgnoreCollection();
|
||||||
|
FileOpener = new OpenerCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WebDavAppConfigManager Instance
|
public static WebDavAppConfigManager Instance
|
||||||
|
@ -46,6 +48,11 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
get { return _configSection.AuthTimeoutCookieName.Value; }
|
get { return _configSection.AuthTimeoutCookieName.Value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string EnterpriseServerUrl
|
||||||
|
{
|
||||||
|
get { return _configSection.EnterpriseServerUrl.Value; }
|
||||||
|
}
|
||||||
|
|
||||||
public ElementsRendering ElementsRendering { get; private set; }
|
public ElementsRendering ElementsRendering { get; private set; }
|
||||||
public WebsitePanelConstantUserParameters WebsitePanelConstantUserParameters { get; private set; }
|
public WebsitePanelConstantUserParameters WebsitePanelConstantUserParameters { get; private set; }
|
||||||
public SessionKeysCollection SessionKeys { get; private set; }
|
public SessionKeysCollection SessionKeys { get; private set; }
|
||||||
|
@ -53,5 +60,7 @@ namespace WebsitePanel.WebDav.Core.Config
|
||||||
public HttpErrorsCollection HttpErrors { get; private set; }
|
public HttpErrorsCollection HttpErrors { get; private set; }
|
||||||
public OfficeOnlineCollection OfficeOnline { get; private set; }
|
public OfficeOnlineCollection OfficeOnline { get; private set; }
|
||||||
public OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; private set; }
|
public OwaSupportedBrowsersCollection OwaSupportedBrowsers { get; private set; }
|
||||||
|
public FilesToIgnoreCollection FilesToIgnore { get; private set; }
|
||||||
|
public OpenerCollection FileOpener { get; private set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace WebsitePanel.WebDav.Core.Entities.Account.Enums
|
||||||
|
{
|
||||||
|
public enum FolderViewTypes
|
||||||
|
{
|
||||||
|
BigIcons,
|
||||||
|
Table
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Entities.Account
|
||||||
|
{
|
||||||
|
public class UserPortalSettings
|
||||||
|
{
|
||||||
|
public FolderViewTypes WebDavViewType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Resources;
|
||||||
|
using WebsitePanel.WebDav.Core.Attributes.Resources;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Extensions
|
||||||
|
{
|
||||||
|
public static class EnumExtensions
|
||||||
|
{
|
||||||
|
public static string GetDescription(this Enum value)
|
||||||
|
{
|
||||||
|
FieldInfo field = value.GetType().GetField(value.ToString());
|
||||||
|
|
||||||
|
DescriptionAttribute attribute
|
||||||
|
= Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))
|
||||||
|
as DescriptionAttribute;
|
||||||
|
|
||||||
|
return attribute == null ? value.ToString() : attribute.Description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
using System.IO;
|
||||||
|
using System.Xml;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Helper
|
||||||
|
{
|
||||||
|
public class SerializeHelper
|
||||||
|
{
|
||||||
|
public static TResult Deserialize<TResult>(string inputString)
|
||||||
|
{
|
||||||
|
TResult result;
|
||||||
|
|
||||||
|
var serializer = new XmlSerializer(typeof(TResult));
|
||||||
|
|
||||||
|
using (TextReader reader = new StringReader(inputString))
|
||||||
|
{
|
||||||
|
result = (TResult)serializer.Deserialize(reader);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string Serialize<TEntity>(TEntity entity)
|
||||||
|
{
|
||||||
|
string result = string.Empty;
|
||||||
|
|
||||||
|
var xmlSerializer = new XmlSerializer(typeof(TEntity));
|
||||||
|
|
||||||
|
using (var stringWriter = new StringWriter())
|
||||||
|
{
|
||||||
|
using (XmlWriter writer = XmlWriter.Create(stringWriter))
|
||||||
|
{
|
||||||
|
xmlSerializer.Serialize(writer, entity);
|
||||||
|
result = stringWriter.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -218,6 +218,68 @@ namespace WebsitePanel.WebDav.Core
|
||||||
Open();
|
Open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenPaged(string path)
|
||||||
|
{
|
||||||
|
_path = new Uri(path);
|
||||||
|
OpenPaged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenPaged()
|
||||||
|
{
|
||||||
|
var request = (HttpWebRequest)WebRequest.Create(_path);
|
||||||
|
//request.PreAuthenticate = true;
|
||||||
|
request.Method = "SEARCH";
|
||||||
|
|
||||||
|
//TODO Disable SSL
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
|
||||||
|
|
||||||
|
var credentials = (NetworkCredential)_credentials;
|
||||||
|
if (credentials != null && credentials.UserName != null)
|
||||||
|
{
|
||||||
|
request.Credentials = _credentials;
|
||||||
|
|
||||||
|
string auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(credentials.UserName + ":" + credentials.Password));
|
||||||
|
request.Headers.Add("Authorization", auth);
|
||||||
|
}
|
||||||
|
|
||||||
|
var strQuery = "<?xml version=\"1.0\"?><D:searchrequest xmlns:D = \"DAV:\" >"
|
||||||
|
+ "<D:sql>SELECT \"DAV:displayname\" FROM \"" + _path + "\""
|
||||||
|
+ "WHERE \"DAV:ishidden\" = false"
|
||||||
|
+ "</D:sql></D:searchrequest>";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var bytes = Encoding.UTF8.GetBytes(strQuery);
|
||||||
|
|
||||||
|
request.ContentLength = bytes.Length;
|
||||||
|
|
||||||
|
using (var requestStream = request.GetRequestStream())
|
||||||
|
{
|
||||||
|
// Write the SQL query to the request stream.
|
||||||
|
requestStream.Write(bytes, 0, bytes.Length);
|
||||||
|
}
|
||||||
|
|
||||||
|
request.ContentType = "text/xml";
|
||||||
|
|
||||||
|
using (var response = (HttpWebResponse)request.GetResponse())
|
||||||
|
{
|
||||||
|
using (var responseStream = new StreamReader(response.GetResponseStream()))
|
||||||
|
{
|
||||||
|
string responseString = responseStream.ReadToEnd();
|
||||||
|
ProcessResponse(responseString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (WebException e)
|
||||||
|
{
|
||||||
|
if (e.Status == WebExceptionStatus.ProtocolError)
|
||||||
|
{
|
||||||
|
throw new UnauthorizedException();
|
||||||
|
}
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Processes the response from the server.
|
/// Processes the response from the server.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -356,6 +418,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
SetComment(item.Comment);
|
SetComment(item.Comment);
|
||||||
SetCreatorDisplayName(item.CreatorDisplayName);
|
SetCreatorDisplayName(item.CreatorDisplayName);
|
||||||
SetLastModified(item.LastModified);
|
SetLastModified(item.LastModified);
|
||||||
|
|
||||||
foreach (Property property in item.Properties)
|
foreach (Property property in item.Properties)
|
||||||
{
|
{
|
||||||
SetProperty(property);
|
SetProperty(property);
|
||||||
|
|
|
@ -159,7 +159,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
{
|
{
|
||||||
_creationDate = DateTime.Parse(creationDate);
|
_creationDate = DateTime.Parse(creationDate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetCreationDate(DateTime creationDate)
|
public void SetCreationDate(DateTime creationDate)
|
||||||
{
|
{
|
||||||
_creationDate = creationDate;
|
_creationDate = creationDate;
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Net.Mime;
|
||||||
using System.Net.Security;
|
using System.Net.Security;
|
||||||
using System.Net.Sockets;
|
using System.Net.Sockets;
|
||||||
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
@ -27,7 +29,6 @@ namespace WebsitePanel.WebDav.Core
|
||||||
private bool _checkedOut = false;
|
private bool _checkedOut = false;
|
||||||
private string _comment = "";
|
private string _comment = "";
|
||||||
private long _contentLength;
|
private long _contentLength;
|
||||||
private string _contentType = "";
|
|
||||||
private DateTime _creationDate = new DateTime(0);
|
private DateTime _creationDate = new DateTime(0);
|
||||||
private string _creatorDisplayName = "";
|
private string _creatorDisplayName = "";
|
||||||
private ICredentials _credentials = new NetworkCredential();
|
private ICredentials _credentials = new NetworkCredential();
|
||||||
|
@ -44,6 +45,15 @@ namespace WebsitePanel.WebDav.Core
|
||||||
AllowWriteStreamBuffering = false;
|
AllowWriteStreamBuffering = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public WebDavResource(ICredentials credentials, IHierarchyItem item)
|
||||||
|
{
|
||||||
|
SendChunked = false;
|
||||||
|
AllowWriteStreamBuffering = false;
|
||||||
|
|
||||||
|
SetCredentials(credentials);
|
||||||
|
SetHierarchyItem(item);
|
||||||
|
}
|
||||||
|
|
||||||
public Uri BaseUri
|
public Uri BaseUri
|
||||||
{
|
{
|
||||||
get { return _baseUri; }
|
get { return _baseUri; }
|
||||||
|
@ -69,7 +79,13 @@ namespace WebsitePanel.WebDav.Core
|
||||||
|
|
||||||
public string ContentType
|
public string ContentType
|
||||||
{
|
{
|
||||||
get { return _contentType; }
|
get
|
||||||
|
{
|
||||||
|
{
|
||||||
|
var property = _properties.FirstOrDefault(x => x.Name.Name == "getcontenttype");
|
||||||
|
return property == null ? MediaTypeNames.Application.Octet : property.StringValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -124,7 +140,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
var webClient = new WebClient();
|
var webClient = new WebClient();
|
||||||
webClient.Credentials = credentials;
|
webClient.Credentials = credentials;
|
||||||
webClient.Headers.Add("Authorization", auth);
|
webClient.Headers.Add("Authorization", auth);
|
||||||
|
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
|
||||||
webClient.UploadData(Href, "PUT", data);
|
webClient.UploadData(Href, "PUT", data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,6 +159,7 @@ namespace WebsitePanel.WebDav.Core
|
||||||
webClient.Headers.Add("Authorization", auth);
|
webClient.Headers.Add("Authorization", auth);
|
||||||
//TODO Disable SSL
|
//TODO Disable SSL
|
||||||
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate{ return true; });
|
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate{ return true; });
|
||||||
|
|
||||||
return webClient.OpenRead(_href);
|
return webClient.OpenRead(_href);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,14 +257,14 @@ namespace WebsitePanel.WebDav.Core
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
string displayName = _href.AbsoluteUri.Replace(_baseUri.AbsoluteUri, "");
|
string displayName = _href.AbsoluteUri.Trim('/').Replace(_baseUri.AbsoluteUri.Trim('/'), "");
|
||||||
displayName = Regex.Replace(displayName, "\\/$", "");
|
displayName = Regex.Replace(displayName, "\\/$", "");
|
||||||
Match displayNameMatch = Regex.Match(displayName, "([\\/]+)$");
|
Match displayNameMatch = Regex.Match(displayName, "([\\/]+)$");
|
||||||
if (displayNameMatch.Success)
|
if (displayNameMatch.Success)
|
||||||
{
|
{
|
||||||
displayName = displayNameMatch.Groups[1].Value;
|
displayName = displayNameMatch.Groups[1].Value;
|
||||||
}
|
}
|
||||||
return HttpUtility.UrlDecode(displayName);
|
return HttpUtility.UrlDecode(displayName.Trim('/'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -462,15 +479,10 @@ namespace WebsitePanel.WebDav.Core
|
||||||
public void SetHref(Uri href)
|
public void SetHref(Uri href)
|
||||||
{
|
{
|
||||||
_href = href;
|
_href = href;
|
||||||
string baseUri = _href.Scheme + "://" + _href.Host;
|
|
||||||
for (int i = 0; i < _href.Segments.Length - 1; i++)
|
var baseUrl = href.AbsoluteUri.Remove(href.AbsoluteUri.Length - href.Segments.Last().Length);
|
||||||
{
|
|
||||||
if (_href.Segments[i] != "/")
|
_baseUri = new Uri(baseUrl);
|
||||||
{
|
|
||||||
baseUri += "/" + _href.Segments[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_baseUri = new Uri(baseUri);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -14,6 +14,7 @@ namespace WebsitePanel.WebDav.Core.Interfaces.Managers
|
||||||
void UploadFile(string path, HttpPostedFileBase file);
|
void UploadFile(string path, HttpPostedFileBase file);
|
||||||
void UploadFile(string path, byte[] bytes);
|
void UploadFile(string path, byte[] bytes);
|
||||||
void UploadFile(string path, Stream stream);
|
void UploadFile(string path, Stream stream);
|
||||||
|
IEnumerable<IHierarchyItem> SearchFiles(int itemId, string pathPart, string searchValue, string uesrPrincipalName, bool recursive);
|
||||||
IResource GetResource(string path);
|
IResource GetResource(string path);
|
||||||
string GetFileUrl(string path);
|
string GetFileUrl(string path);
|
||||||
void DeleteResource(string path);
|
void DeleteResource(string path);
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account;
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Interfaces.Managers.Users
|
||||||
|
{
|
||||||
|
public interface IUserSettingsManager
|
||||||
|
{
|
||||||
|
UserPortalSettings GetUserSettings(int accountId);
|
||||||
|
void UpdateSettings(int accountId, UserPortalSettings settings);
|
||||||
|
void ChangeWebDavViewType(int accountId, FolderViewTypes type);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,4 @@
|
||||||
using WebsitePanel.Ecommerce.EnterpriseServer;
|
namespace WebsitePanel.WebDav.Core.Interfaces.Storages
|
||||||
|
|
||||||
namespace WebsitePanel.WebDav.Core.Interfaces.Storages
|
|
||||||
{
|
{
|
||||||
public interface ITtlStorage : IKeyValueStorage
|
public interface ITtlStorage : IKeyValueStorage
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,10 +1,15 @@
|
||||||
|
using WebsitePanel.WebDav.Core.Attributes.Resources;
|
||||||
|
using WebsitePanel.WebDav.Core.Resources;
|
||||||
|
|
||||||
namespace WebsitePanel.WebDav.Core
|
namespace WebsitePanel.WebDav.Core
|
||||||
{
|
{
|
||||||
namespace Client
|
namespace Client
|
||||||
{
|
{
|
||||||
public enum ItemType
|
public enum ItemType
|
||||||
{
|
{
|
||||||
|
[LocalizedDescription(typeof(WebDavResources), "ItemTypeResource")]
|
||||||
Resource,
|
Resource,
|
||||||
|
[LocalizedDescription(typeof(WebDavResources), "ItemTypeFolder")]
|
||||||
Folder,
|
Folder,
|
||||||
Version,
|
Version,
|
||||||
VersionHistory
|
VersionHistory
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account;
|
||||||
|
using WebsitePanel.WebDav.Core.Entities.Account.Enums;
|
||||||
|
using WebsitePanel.WebDav.Core.Helper;
|
||||||
|
using WebsitePanel.WebDav.Core.Interfaces.Managers.Users;
|
||||||
|
using WebsitePanel.WebDav.Core.Wsp.Framework;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDav.Core.Managers.Users
|
||||||
|
{
|
||||||
|
public class UserSettingsManager : IUserSettingsManager
|
||||||
|
{
|
||||||
|
public UserPortalSettings GetUserSettings(int accountId)
|
||||||
|
{
|
||||||
|
string xml = WSP.Services.EnterpriseStorage.GetWebDavPortalUserSettingsByAccountId(accountId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(xml))
|
||||||
|
{
|
||||||
|
return new UserPortalSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
return SerializeHelper.Deserialize<UserPortalSettings>(xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateSettings(int accountId, UserPortalSettings settings)
|
||||||
|
{
|
||||||
|
var xml = SerializeHelper.Serialize(settings);
|
||||||
|
|
||||||
|
WSP.Services.EnterpriseStorage.UpdateWebDavPortalUserSettings(accountId, xml);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeWebDavViewType(int accountId, FolderViewTypes type)
|
||||||
|
{
|
||||||
|
var settings = GetUserSettings(accountId);
|
||||||
|
|
||||||
|
settings.WebDavViewType = type;
|
||||||
|
|
||||||
|
UpdateSettings(accountId, settings);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
@ -13,6 +14,7 @@ using WebsitePanel.WebDav.Core.Config;
|
||||||
using WebsitePanel.WebDav.Core.Exceptions;
|
using WebsitePanel.WebDav.Core.Exceptions;
|
||||||
using WebsitePanel.WebDav.Core.Extensions;
|
using WebsitePanel.WebDav.Core.Extensions;
|
||||||
using WebsitePanel.WebDav.Core.Interfaces.Managers;
|
using WebsitePanel.WebDav.Core.Interfaces.Managers;
|
||||||
|
using WebsitePanel.WebDav.Core.Interfaces.Security;
|
||||||
using WebsitePanel.WebDav.Core.Resources;
|
using WebsitePanel.WebDav.Core.Resources;
|
||||||
using WebsitePanel.WebDav.Core.Security.Cryptography;
|
using WebsitePanel.WebDav.Core.Security.Cryptography;
|
||||||
using WebsitePanel.WebDav.Core.Wsp.Framework;
|
using WebsitePanel.WebDav.Core.Wsp.Framework;
|
||||||
|
@ -23,15 +25,17 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
{
|
{
|
||||||
private readonly ICryptography _cryptography;
|
private readonly ICryptography _cryptography;
|
||||||
private readonly WebDavSession _webDavSession;
|
private readonly WebDavSession _webDavSession;
|
||||||
|
private readonly IWebDavAuthorizationService _webDavAuthorizationService;
|
||||||
|
|
||||||
private readonly ILog Log;
|
private readonly ILog Log;
|
||||||
|
|
||||||
private bool _isRoot = true;
|
private bool _isRoot = true;
|
||||||
private IFolder _currentFolder;
|
private IFolder _currentFolder;
|
||||||
|
|
||||||
public WebDavManager(ICryptography cryptography)
|
public WebDavManager(ICryptography cryptography, IWebDavAuthorizationService webDavAuthorizationService)
|
||||||
{
|
{
|
||||||
_cryptography = cryptography;
|
_cryptography = cryptography;
|
||||||
|
_webDavAuthorizationService = webDavAuthorizationService;
|
||||||
Log = LogManager.GetLogger(this.GetType());
|
Log = LogManager.GetLogger(this.GetType());
|
||||||
|
|
||||||
_webDavSession = new WebDavSession();
|
_webDavSession = new WebDavSession();
|
||||||
|
@ -43,25 +47,14 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(pathPart))
|
if (string.IsNullOrWhiteSpace(pathPart))
|
||||||
{
|
{
|
||||||
var resources = ConnectToWebDavServer().Select(x => new WebDavResource { Href = new Uri(x.Url), ItemType = ItemType.Folder }).ToArray();
|
children = ConnectToWebDavServer().Select(x => new WebDavResource
|
||||||
|
|
||||||
var items = WSP.Services.EnterpriseStorage.GetEnterpriseFolders(WspContext.User.ItemId);
|
|
||||||
|
|
||||||
foreach (var resource in resources)
|
|
||||||
{
|
{
|
||||||
var folder = items.FirstOrDefault(x => x.Name == resource.DisplayName);
|
Href = new Uri(x.Url),
|
||||||
|
ItemType = ItemType.Folder,
|
||||||
if (folder == null)
|
ContentLength = x.Size,
|
||||||
{
|
AllocatedSpace = x.FRSMQuotaMB,
|
||||||
continue;
|
IsRootItem = true
|
||||||
}
|
}).ToArray();
|
||||||
|
|
||||||
resource.ContentLength = folder.Size;
|
|
||||||
resource.AllocatedSpace = folder.FRSMQuotaMB;
|
|
||||||
resource.IsRootItem = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
children = resources;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -74,7 +67,7 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
_currentFolder = _webDavSession.OpenFolder(string.Format("{0}{1}/{2}", WebDavAppConfigManager.Instance.WebdavRoot, WspContext.User.OrganizationId, pathPart.TrimStart('/')));
|
_currentFolder = _webDavSession.OpenFolder(string.Format("{0}{1}/{2}", WebDavAppConfigManager.Instance.WebdavRoot, WspContext.User.OrganizationId, pathPart.TrimStart('/')));
|
||||||
}
|
}
|
||||||
|
|
||||||
children = _currentFolder.GetChildren().Where(x => !WebDavAppConfigManager.Instance.ElementsRendering.ElementsToIgnore.Contains(x.DisplayName.Trim('/'))).ToArray();
|
children = FilterResult(_currentFolder.GetChildren()).ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<IHierarchyItem> sortedChildren = children.Where(x => x.ItemType == ItemType.Folder).OrderBy(x => x.DisplayName).ToList();
|
List<IHierarchyItem> sortedChildren = children.Where(x => x.ItemType == ItemType.Folder).OrderBy(x => x.DisplayName).ToList();
|
||||||
|
@ -83,6 +76,31 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
return sortedChildren;
|
return sortedChildren;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEnumerable<IHierarchyItem> SearchFiles(int itemId, string pathPart, string searchValue, string uesrPrincipalName, bool recursive)
|
||||||
|
{
|
||||||
|
pathPart = (pathPart ?? string.Empty).Replace("/","\\");
|
||||||
|
|
||||||
|
SystemFile[] items;
|
||||||
|
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(pathPart))
|
||||||
|
{
|
||||||
|
var rootItems = ConnectToWebDavServer().Select(x => x.Name).ToList();
|
||||||
|
rootItems.Insert(0, string.Empty);
|
||||||
|
|
||||||
|
items = WspContext.Services.EnterpriseStorage.SearchFiles(itemId, rootItems.ToArray(), searchValue, uesrPrincipalName, recursive);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
items = WspContext.Services.EnterpriseStorage.SearchFiles(itemId, new []{pathPart}, searchValue, uesrPrincipalName, recursive);
|
||||||
|
}
|
||||||
|
|
||||||
|
var resources = Convert(items, new Uri(WebDavAppConfigManager.Instance.WebdavRoot).Append(WspContext.User.OrganizationId, pathPart));
|
||||||
|
|
||||||
|
|
||||||
|
return FilterResult(resources);
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsFile(string path)
|
public bool IsFile(string path)
|
||||||
{
|
{
|
||||||
string folder = GetFileFolder(path);
|
string folder = GetFileFolder(path);
|
||||||
|
@ -289,6 +307,7 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rootFolders;
|
return rootFolders;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,6 +325,33 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
return pathPart.StartsWith('/' + toRemove) ? pathPart.Substring(toRemove.Length + 1) : pathPart;
|
return pathPart.StartsWith('/' + toRemove) ? pathPart.Substring(toRemove.Length + 1) : pathPart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<WebDavResource> Convert(IEnumerable<SystemFile> files, Uri baseUri)
|
||||||
|
{
|
||||||
|
var convertResult = new List<WebDavResource>();
|
||||||
|
|
||||||
|
var credentials = new NetworkCredential(WspContext.User.Login,
|
||||||
|
_cryptography.Decrypt(WspContext.User.EncryptedPassword),
|
||||||
|
WebDavAppConfigManager.Instance.UserDomain);
|
||||||
|
|
||||||
|
foreach (var file in files)
|
||||||
|
{
|
||||||
|
var webDavitem = new WebDavResource();
|
||||||
|
|
||||||
|
webDavitem.SetCredentials(credentials);
|
||||||
|
|
||||||
|
webDavitem.SetHref(baseUri.Append(file.RelativeUrl.Replace("\\","/")));
|
||||||
|
|
||||||
|
webDavitem.SetItemType(file.IsDirectory? ItemType.Folder : ItemType.Resource);
|
||||||
|
webDavitem.SetLastModified(file.Changed);
|
||||||
|
webDavitem.ContentLength = file.Size;
|
||||||
|
webDavitem.AllocatedSpace = file.FRSMQuotaMB;
|
||||||
|
|
||||||
|
convertResult.Add(webDavitem);
|
||||||
|
}
|
||||||
|
|
||||||
|
return convertResult;
|
||||||
|
}
|
||||||
|
|
||||||
private byte[] ReadFully(Stream input)
|
private byte[] ReadFully(Stream input)
|
||||||
{
|
{
|
||||||
var buffer = new byte[16 * 1024];
|
var buffer = new byte[16 * 1024];
|
||||||
|
@ -352,7 +398,31 @@ namespace WebsitePanel.WebDav.Core.Managers
|
||||||
}
|
}
|
||||||
|
|
||||||
return path.Split('/').Last(); ;
|
return path.Split('/').Last(); ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private IEnumerable<IHierarchyItem> FilterResult(IEnumerable<IHierarchyItem> items)
|
||||||
|
{
|
||||||
|
var result = items.ToList();
|
||||||
|
|
||||||
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
foreach (var itemToIgnore in WebDavAppConfigManager.Instance.FilesToIgnore)
|
||||||
|
{
|
||||||
|
var regex = new Regex(itemToIgnore.Regex);
|
||||||
|
|
||||||
|
Match match = regex.Match(item.DisplayName.Trim('/'));
|
||||||
|
|
||||||
|
if (match.Success && result.Contains(item))
|
||||||
|
{
|
||||||
|
result.Remove(item);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,5 +68,23 @@ namespace WebsitePanel.WebDav.Core.Resources {
|
||||||
return ResourceManager.GetString("FolderIsNotEmptyFormat", resourceCulture);
|
return ResourceManager.GetString("FolderIsNotEmptyFormat", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Folder.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemTypeFolder {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemTypeFolder", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Document.
|
||||||
|
/// </summary>
|
||||||
|
internal static string ItemTypeResource {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ItemTypeResource", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -120,4 +120,10 @@
|
||||||
<data name="FolderIsNotEmptyFormat" xml:space="preserve">
|
<data name="FolderIsNotEmptyFormat" xml:space="preserve">
|
||||||
<value>Folder {0} is not empty.</value>
|
<value>Folder {0} is not empty.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ItemTypeFolder" xml:space="preserve">
|
||||||
|
<value>Folder</value>
|
||||||
|
</data>
|
||||||
|
<data name="ItemTypeResource" xml:space="preserve">
|
||||||
|
<value>Document</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -39,6 +39,19 @@ namespace WebsitePanel.WebDav.Core
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns IFolder corresponding to path.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">Path to the folder.</param>
|
||||||
|
/// <returns>Folder corresponding to requested path.</returns>
|
||||||
|
public IFolder OpenFolderPaged(string path)
|
||||||
|
{
|
||||||
|
var folder = new WebDavFolder();
|
||||||
|
folder.SetCredentials(Credentials);
|
||||||
|
folder.OpenPaged(path);
|
||||||
|
return folder;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns IResource corresponding to path.
|
/// Returns IResource corresponding to path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -44,8 +44,7 @@
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\..\..\Scheduler Domains\WebsitePanel\Bin\Microsoft.Web.Services3.dll</HintPath>
|
<HintPath>..\..\Bin\Microsoft.Web.Services3.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
|
@ -89,41 +88,51 @@
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="WebsitePanel.EnterpriseServer.Base">
|
<Reference Include="WebsitePanel.EnterpriseServer.Base">
|
||||||
<HintPath>..\WebsitePanel.WebPortal\Bin\WebsitePanel.EnterpriseServer.Base.dll</HintPath>
|
<HintPath>..\..\Bin\WebsitePanel.EnterpriseServer.Base.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="WebsitePanel.EnterpriseServer.Client">
|
<Reference Include="WebsitePanel.EnterpriseServer.Client">
|
||||||
<HintPath>..\WebsitePanel.WebPortal\Bin\WebsitePanel.EnterpriseServer.Client.dll</HintPath>
|
<HintPath>..\..\Bin\WebsitePanel.EnterpriseServer.Client.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="WebsitePanel.Providers.Base">
|
<Reference Include="WebsitePanel.Providers.Base">
|
||||||
<HintPath>..\WebsitePanel.WebPortal\Bin\WebsitePanel.Providers.Base.dll</HintPath>
|
<HintPath>..\..\Bin\WebsitePanel.Providers.Base.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="Attributes\Resources\LocalizedDescriptionAttribute.cs" />
|
||||||
<Compile Include="Config\Entities\AbstractConfigCollection.cs" />
|
<Compile Include="Config\Entities\AbstractConfigCollection.cs" />
|
||||||
<Compile Include="Config\Entities\ElementsRendering.cs" />
|
<Compile Include="Config\Entities\ElementsRendering.cs" />
|
||||||
<Compile Include="Config\Entities\FileIconsDictionary.cs" />
|
<Compile Include="Config\Entities\FileIconsDictionary.cs" />
|
||||||
<Compile Include="Config\Entities\HttpErrorsCollection.cs" />
|
<Compile Include="Config\Entities\HttpErrorsCollection.cs" />
|
||||||
|
<Compile Include="Config\Entities\FilesToIgnoreCollection.cs" />
|
||||||
<Compile Include="Config\Entities\OfficeOnlineCollection.cs" />
|
<Compile Include="Config\Entities\OfficeOnlineCollection.cs" />
|
||||||
<Compile Include="Config\Entities\OwaSupportedBrowsersCollection.cs" />
|
<Compile Include="Config\Entities\OwaSupportedBrowsersCollection.cs" />
|
||||||
<Compile Include="Config\Entities\SessionKeysCollection.cs" />
|
<Compile Include="Config\Entities\SessionKeysCollection.cs" />
|
||||||
|
<Compile Include="Config\Entities\OpenerCollection.cs" />
|
||||||
<Compile Include="Config\Entities\WebsitePanelConstantUserParameters.cs" />
|
<Compile Include="Config\Entities\WebsitePanelConstantUserParameters.cs" />
|
||||||
<Compile Include="Config\IWebDavAppConfig.cs" />
|
<Compile Include="Config\IWebDavAppConfig.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\ApplicationNameElement.cs" />
|
<Compile Include="Config\WebConfigSections\ApplicationNameElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\AuthTimeoutCookieNameElement.cs" />
|
<Compile Include="Config\WebConfigSections\AuthTimeoutCookieNameElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\ElementsRenderingElement.cs" />
|
<Compile Include="Config\WebConfigSections\ElementsRenderingElement.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\EnterpriseServerElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\FileIconsElement.cs" />
|
<Compile Include="Config\WebConfigSections\FileIconsElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\FileIconsElementCollection.cs" />
|
<Compile Include="Config\WebConfigSections\FileIconsElementCollection.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\FilesToIgnoreElement.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\FilesToIgnoreElementCollection.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OfficeOnlineElement.cs" />
|
<Compile Include="Config\WebConfigSections\OfficeOnlineElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OfficeOnlineElementCollection.cs" />
|
<Compile Include="Config\WebConfigSections\OfficeOnlineElementCollection.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\OpenerElementCollection.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OwaSupportedBrowsersElement.cs" />
|
<Compile Include="Config\WebConfigSections\OwaSupportedBrowsersElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\OwaSupportedBrowsersElementCollection.cs" />
|
<Compile Include="Config\WebConfigSections\OwaSupportedBrowsersElementCollection.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\SessionKeysElement.cs" />
|
<Compile Include="Config\WebConfigSections\SessionKeysElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\SessionKeysElementCollection.cs" />
|
<Compile Include="Config\WebConfigSections\SessionKeysElementCollection.cs" />
|
||||||
|
<Compile Include="Config\WebConfigSections\OpenerElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\UserDomainElement.cs" />
|
<Compile Include="Config\WebConfigSections\UserDomainElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\WebDavExplorerConfigurationSettingsSection.cs" />
|
<Compile Include="Config\WebConfigSections\WebDavExplorerConfigurationSettingsSection.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\WebdavRootElement.cs" />
|
<Compile Include="Config\WebConfigSections\WebdavRootElement.cs" />
|
||||||
<Compile Include="Config\WebConfigSections\WebsitePanelConstantUserElement.cs" />
|
<Compile Include="Config\WebConfigSections\WebsitePanelConstantUserElement.cs" />
|
||||||
<Compile Include="Config\WebDavAppConfigManager.cs" />
|
<Compile Include="Config\WebDavAppConfigManager.cs" />
|
||||||
|
<Compile Include="Entities\Account\Enums\FolderViewTypes.cs" />
|
||||||
|
<Compile Include="Entities\Account\UserPortalSettings.cs" />
|
||||||
<Compile Include="Entities\Owa\CheckFileInfo.cs" />
|
<Compile Include="Entities\Owa\CheckFileInfo.cs" />
|
||||||
<Compile Include="Entities\Owa\PutRelativeFile.cs" />
|
<Compile Include="Entities\Owa\PutRelativeFile.cs" />
|
||||||
<Compile Include="Exceptions\ConnectToWebDavServerException.cs" />
|
<Compile Include="Exceptions\ConnectToWebDavServerException.cs" />
|
||||||
|
@ -131,14 +140,18 @@
|
||||||
<Compile Include="Exceptions\UnauthorizedException.cs" />
|
<Compile Include="Exceptions\UnauthorizedException.cs" />
|
||||||
<Compile Include="Exceptions\WebDavException.cs" />
|
<Compile Include="Exceptions\WebDavException.cs" />
|
||||||
<Compile Include="Exceptions\WebDavHttpException.cs" />
|
<Compile Include="Exceptions\WebDavHttpException.cs" />
|
||||||
|
<Compile Include="Extensions\EnumExtensions.cs" />
|
||||||
<Compile Include="Extensions\StringExtensions.cs" />
|
<Compile Include="Extensions\StringExtensions.cs" />
|
||||||
<Compile Include="Extensions\UriExtensions.cs" />
|
<Compile Include="Extensions\UriExtensions.cs" />
|
||||||
|
<Compile Include="Helper\SerializeHelper.cs" />
|
||||||
<Compile Include="IConnectionSettings.cs" />
|
<Compile Include="IConnectionSettings.cs" />
|
||||||
<Compile Include="IFolder.cs" />
|
<Compile Include="IFolder.cs" />
|
||||||
<Compile Include="IHierarchyItem.cs" />
|
<Compile Include="IHierarchyItem.cs" />
|
||||||
<Compile Include="IItemContent.cs" />
|
<Compile Include="IItemContent.cs" />
|
||||||
|
<Compile Include="Interfaces\Managers\Users\IUserSettingsManager.cs" />
|
||||||
<Compile Include="Interfaces\Storages\IKeyValueStorage.cs" />
|
<Compile Include="Interfaces\Storages\IKeyValueStorage.cs" />
|
||||||
<Compile Include="Interfaces\Storages\ITtlStorage.cs" />
|
<Compile Include="Interfaces\Storages\ITtlStorage.cs" />
|
||||||
|
<Compile Include="Managers\Users\UserSettingsManager.cs" />
|
||||||
<Compile Include="Owa\CobaltManager.cs" />
|
<Compile Include="Owa\CobaltManager.cs" />
|
||||||
<Compile Include="Interfaces\Owa\ICobaltManager.cs" />
|
<Compile Include="Interfaces\Owa\ICobaltManager.cs" />
|
||||||
<Compile Include="Interfaces\Owa\IWopiFileManager.cs" />
|
<Compile Include="Interfaces\Owa\IWopiFileManager.cs" />
|
||||||
|
@ -186,12 +199,6 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\WebsitePanel.WebPortal\WebsitePanel.WebPortal.csproj">
|
|
||||||
<Project>{C99EFB18-FFE7-45BB-8CA8-29336F3E8C68}</Project>
|
|
||||||
<Name>WebsitePanel.WebPortal</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Resources\HttpErrors.resx">
|
<EmbeddedResource Include="Resources\HttpErrors.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
|
|
@ -34,7 +34,6 @@ using WebsitePanel.EnterpriseServer;
|
||||||
using WebsitePanel.EnterpriseServer.HostedSolution;
|
using WebsitePanel.EnterpriseServer.HostedSolution;
|
||||||
using WebsitePanel.WebDav.Core.Config;
|
using WebsitePanel.WebDav.Core.Config;
|
||||||
using WebsitePanel.WebDav.Core.Security.Cryptography;
|
using WebsitePanel.WebDav.Core.Security.Cryptography;
|
||||||
using WebsitePanel.WebPortal;
|
|
||||||
|
|
||||||
namespace WebsitePanel.WebDav.Core.Wsp.Framework
|
namespace WebsitePanel.WebDav.Core.Wsp.Framework
|
||||||
{
|
{
|
||||||
|
@ -268,7 +267,7 @@ namespace WebsitePanel.WebDav.Core.Wsp.Framework
|
||||||
public void ConfigureEnterpriseServerProxy(WebServicesClientProtocol proxy, bool applyPolicy)
|
public void ConfigureEnterpriseServerProxy(WebServicesClientProtocol proxy, bool applyPolicy)
|
||||||
{
|
{
|
||||||
// load ES properties
|
// load ES properties
|
||||||
string serverUrl = PortalConfiguration.SiteSettings["EnterpriseServer"];
|
string serverUrl = WebDavAppConfigManager.Instance.EnterpriseServerUrl;
|
||||||
|
|
||||||
EnterpriseServerProxyConfigurator cnfg = new EnterpriseServerProxyConfigurator();
|
EnterpriseServerProxyConfigurator cnfg = new EnterpriseServerProxyConfigurator();
|
||||||
cnfg.EnterpriseServerUrl = serverUrl;
|
cnfg.EnterpriseServerUrl = serverUrl;
|
||||||
|
|
|
@ -5,11 +5,13 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using WebsitePanel.WebDav.Core.Security.Authentication.Principals;
|
using WebsitePanel.WebDav.Core.Security.Authentication.Principals;
|
||||||
|
using WebsitePanel.WebDav.Core.Wsp.Framework;
|
||||||
|
|
||||||
namespace WebsitePanel.WebDav.Core
|
namespace WebsitePanel.WebDav.Core
|
||||||
{
|
{
|
||||||
public class WspContext
|
public class WspContext
|
||||||
{
|
{
|
||||||
public static WspPrincipal User { get { return HttpContext.Current.User as WspPrincipal; } }
|
public static WspPrincipal User { get { return HttpContext.Current.User as WspPrincipal; } }
|
||||||
|
public static WSP Services { get { return WSP.Services; } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,249 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<Countries>
|
|
||||||
<Country name="Afghanistan" key="AF" />
|
|
||||||
<Country name="Aland Islands" key="AX" />
|
|
||||||
<Country name="Albania" key="AL" />
|
|
||||||
<Country name="Algeria" key="DZ" />
|
|
||||||
<Country name="American Samoa" key="AS" />
|
|
||||||
<Country name="Andorra" key="AD" />
|
|
||||||
<Country name="Angola" key="AO" />
|
|
||||||
<Country name="Anguilla" key="AI" />
|
|
||||||
<Country name="Antarctica" key="AQ" />
|
|
||||||
<Country name="Antigua and Barbuda" key="AG" />
|
|
||||||
<Country name="Argentina" key="AR" />
|
|
||||||
<Country name="Armenia" key="AM" />
|
|
||||||
<Country name="Aruba" key="AW" />
|
|
||||||
<Country name="Australia" key="AU" />
|
|
||||||
<Country name="Austria" key="AT" />
|
|
||||||
<Country name="Azerbaijan" key="AZ" />
|
|
||||||
<Country name="Bahamas" key="BS" />
|
|
||||||
<Country name="Bahrain" key="BH" />
|
|
||||||
<Country name="Bangladesh" key="BD" />
|
|
||||||
<Country name="Barbados" key="BB" />
|
|
||||||
<Country name="Belarus" key="BY" />
|
|
||||||
<Country name="Belgium" key="BE" />
|
|
||||||
<Country name="Belize" key="BZ" />
|
|
||||||
<Country name="Benin" key="BJ" />
|
|
||||||
<Country name="Bermuda" key="BM" />
|
|
||||||
<Country name="Bhutan" key="BT" />
|
|
||||||
<Country name="Bolivia, Plurinational State of" key="BO" />
|
|
||||||
<Country name="Bosnia and Herzegovina" key="BA" />
|
|
||||||
<Country name="Botswana" key="BW" />
|
|
||||||
<Country name="Bouvet Island" key="BV" />
|
|
||||||
<Country name="Brazil" key="BR" />
|
|
||||||
<Country name="British Indian Ocean Territory" key="IO" />
|
|
||||||
<Country name="Brunei Darussalam" key="BN" />
|
|
||||||
<Country name="Bulgaria" key="BG" />
|
|
||||||
<Country name="Burkina Faso" key="BF" />
|
|
||||||
<Country name="Burundi" key="BI" />
|
|
||||||
<Country name="Cambodia" key="KH" />
|
|
||||||
<Country name="Cameroon" key="CM" />
|
|
||||||
<Country name="Canada" key="CA" />
|
|
||||||
<Country name="Cape Verde" key="CV" />
|
|
||||||
<Country name="Cayman Islands" key="KY" />
|
|
||||||
<Country name="Central African Republic" key="CF" />
|
|
||||||
<Country name="Chad" key="TD" />
|
|
||||||
<Country name="Chile" key="CL" />
|
|
||||||
<Country name="China" key="CN" />
|
|
||||||
<Country name="Christmas Island" key="CX" />
|
|
||||||
<Country name="Cocos (Keeling) Islands" key="CC" />
|
|
||||||
<Country name="Colombia" key="CO" />
|
|
||||||
<Country name="Comoros" key="KM" />
|
|
||||||
<Country name="Congo" key="CG" />
|
|
||||||
<Country name="Congo, the Democratic Republic of the" key="CD" />
|
|
||||||
<Country name="Cook Islands" key="CK" />
|
|
||||||
<Country name="Costa Rica" key="CR" />
|
|
||||||
<Country name="Cote D'Ivoire" key="CI" />
|
|
||||||
<Country name="Croatia" key="HR" />
|
|
||||||
<Country name="Cuba" key="CU" />
|
|
||||||
<Country name="Cyprus" key="CY" />
|
|
||||||
<Country name="Czech Republic" key="CZ" />
|
|
||||||
<Country name="Denmark" key="DK" />
|
|
||||||
<Country name="Djibouti" key="DJ" />
|
|
||||||
<Country name="Dominica" key="DM" />
|
|
||||||
<Country name="Dominican Republic" key="DO" />
|
|
||||||
<Country name="Ecuador" key="EC" />
|
|
||||||
<Country name="Egypt" key="EG" />
|
|
||||||
<Country name="El Salvador" key="SV" />
|
|
||||||
<Country name="Equatorial Guinea" key="GQ" />
|
|
||||||
<Country name="Eritrea" key="ER" />
|
|
||||||
<Country name="Estonia" key="EE" />
|
|
||||||
<Country name="Ethiopia" key="ET" />
|
|
||||||
<Country name="Falkland Islands (Malvinas)" key="FK" />
|
|
||||||
<Country name="Faroe Islands" key="FO" />
|
|
||||||
<Country name="Fiji" key="FJ" />
|
|
||||||
<Country name="Finland" key="FI" />
|
|
||||||
<Country name="France" key="FR" />
|
|
||||||
<Country name="French Guiana" key="GF" />
|
|
||||||
<Country name="French Polynesia" key="PF" />
|
|
||||||
<Country name="French Southern Territories" key="TF" />
|
|
||||||
<Country name="Gabon" key="GA" />
|
|
||||||
<Country name="Gambia" key="GM" />
|
|
||||||
<Country name="Georgia" key="GE" />
|
|
||||||
<Country name="Germany" key="DE" />
|
|
||||||
<Country name="Ghana" key="GH" />
|
|
||||||
<Country name="Gibraltar" key="GI" />
|
|
||||||
<Country name="Greece" key="GR" />
|
|
||||||
<Country name="Greenland" key="GL" />
|
|
||||||
<Country name="Grenada" key="GD" />
|
|
||||||
<Country name="Guadeloupe" key="GP" />
|
|
||||||
<Country name="Guam" key="GU" />
|
|
||||||
<Country name="Guatemala" key="GT" />
|
|
||||||
<Country name="Guernsey" key="GG" />
|
|
||||||
<Country name="Guinea" key="GN" />
|
|
||||||
<Country name="Guinea-Bissau" key="GW" />
|
|
||||||
<Country name="Guyana" key="GY" />
|
|
||||||
<Country name="Haiti" key="HT" />
|
|
||||||
<Country name="Heard Island and Mcdonald Islands" key="HM" />
|
|
||||||
<Country name="Holy See (Vatican City State)" key="VA" />
|
|
||||||
<Country name="Honduras" key="HN" />
|
|
||||||
<Country name="Hong Kong" key="HK" />
|
|
||||||
<Country name="Hungary" key="HU" />
|
|
||||||
<Country name="Iceland" key="IS" />
|
|
||||||
<Country name="India" key="IN" />
|
|
||||||
<Country name="Indonesia" key="ID" />
|
|
||||||
<Country name="Iran, Islamic Republic of" key="IR" />
|
|
||||||
<Country name="Iraq" key="IQ" />
|
|
||||||
<Country name="Ireland" key="IE" />
|
|
||||||
<Country name="Isle of Man" key="IM" />
|
|
||||||
<Country name="Israel" key="IL" />
|
|
||||||
<Country name="Italy" key="IT" />
|
|
||||||
<Country name="Jamaica" key="JM" />
|
|
||||||
<Country name="Japan" key="JP" />
|
|
||||||
<Country name="Jersey" key="JE" />
|
|
||||||
<Country name="Jordan" key="JO" />
|
|
||||||
<Country name="Kazakhstan" key="KZ" />
|
|
||||||
<Country name="Kenya" key="KE" />
|
|
||||||
<Country name="Kiribati" key="KI" />
|
|
||||||
<Country name="Korea, Democratic People's Republic of" key="KP" />
|
|
||||||
<Country name="Korea, Republic of" key="KR" />
|
|
||||||
<Country name="Kuwait" key="KW" />
|
|
||||||
<Country name="Kyrgyzstan" key="KG" />
|
|
||||||
<Country name="Lao People's Democratic Republic" key="LA" />
|
|
||||||
<Country name="Latvia" key="LV" />
|
|
||||||
<Country name="Lebanon" key="LB" />
|
|
||||||
<Country name="Lesotho" key="LS" />
|
|
||||||
<Country name="Liberia" key="LR" />
|
|
||||||
<Country name="Libyan Arab Jamahiriya" key="LY" />
|
|
||||||
<Country name="Liechtenstein" key="LI" />
|
|
||||||
<Country name="Lithuania" key="LT" />
|
|
||||||
<Country name="Luxembourg" key="LU" />
|
|
||||||
<Country name="Macao" key="MO" />
|
|
||||||
<Country name="Macedonia, the Former Yugoslav Republic of" key="MK" />
|
|
||||||
<Country name="Madagascar" key="MG" />
|
|
||||||
<Country name="Malawi" key="MW" />
|
|
||||||
<Country name="Malaysia" key="MY" />
|
|
||||||
<Country name="Maldives" key="MV" />
|
|
||||||
<Country name="Mali" key="ML" />
|
|
||||||
<Country name="Malta" key="MT" />
|
|
||||||
<Country name="Marshall Islands" key="MH" />
|
|
||||||
<Country name="Martinique" key="MQ" />
|
|
||||||
<Country name="Mauritania" key="MR" />
|
|
||||||
<Country name="Mauritius" key="MU" />
|
|
||||||
<Country name="Mayotte" key="YT" />
|
|
||||||
<Country name="Mexico" key="MX" />
|
|
||||||
<Country name="Micronesia, Federated States of" key="FM" />
|
|
||||||
<Country name="Moldova, Republic of" key="MD" />
|
|
||||||
<Country name="Monaco" key="MC" />
|
|
||||||
<Country name="Mongolia" key="MN" />
|
|
||||||
<Country name="Montenegro" key="ME" />
|
|
||||||
<Country name="Montserrat" key="MS" />
|
|
||||||
<Country name="Morocco" key="MA" />
|
|
||||||
<Country name="Mozambique" key="MZ" />
|
|
||||||
<Country name="Myanmar" key="MM" />
|
|
||||||
<Country name="Namibia" key="NA" />
|
|
||||||
<Country name="Nauru" key="NR" />
|
|
||||||
<Country name="Nepal" key="NP" />
|
|
||||||
<Country name="Netherlands" key="NL" />
|
|
||||||
<Country name="Netherlands Antilles" key="AN" />
|
|
||||||
<Country name="New Caledonia" key="NC" />
|
|
||||||
<Country name="New Zealand" key="NZ" />
|
|
||||||
<Country name="Nicaragua" key="NI" />
|
|
||||||
<Country name="Niger" key="NE" />
|
|
||||||
<Country name="Nigeria" key="NG" />
|
|
||||||
<Country name="Niue" key="NU" />
|
|
||||||
<Country name="Norfolk Island" key="NF" />
|
|
||||||
<Country name="Northern Mariana Islands" key="MP" />
|
|
||||||
<Country name="Norway" key="NO" />
|
|
||||||
<Country name="Oman" key="OM" />
|
|
||||||
<Country name="Pakistan" key="PK" />
|
|
||||||
<Country name="Palau" key="PW" />
|
|
||||||
<Country name="Palestinian Territory, Occupied" key="PS" />
|
|
||||||
<Country name="Panama" key="PA" />
|
|
||||||
<Country name="Papua New Guinea" key="PG" />
|
|
||||||
<Country name="Paraguay" key="PY" />
|
|
||||||
<Country name="Peru" key="PE" />
|
|
||||||
<Country name="Philippines" key="PH" />
|
|
||||||
<Country name="Pitcairn" key="PN" />
|
|
||||||
<Country name="Poland" key="PL" />
|
|
||||||
<Country name="Portugal" key="PT" />
|
|
||||||
<Country name="Puerto Rico" key="PR" />
|
|
||||||
<Country name="Qatar" key="QA" />
|
|
||||||
<Country name="Reunion" key="RE" />
|
|
||||||
<Country name="Romania" key="RO" />
|
|
||||||
<Country name="Russian Federation" key="RU" />
|
|
||||||
<Country name="Rwanda" key="RW" />
|
|
||||||
<Country name="Saint Barthelemy" key="BL" />
|
|
||||||
<Country name="Saint Helena" key="SH" />
|
|
||||||
<Country name="Saint Kitts and Nevis" key="KN" />
|
|
||||||
<Country name="Saint Lucia" key="LC" />
|
|
||||||
<Country name="Saint Martin" key="MF" />
|
|
||||||
<Country name="Saint Pierre and Miquelon" key="PM" />
|
|
||||||
<Country name="Saint Vincent and the Grenadines" key="VC" />
|
|
||||||
<Country name="Samoa" key="WS" />
|
|
||||||
<Country name="San Marino" key="SM" />
|
|
||||||
<Country name="Sao Tome and Principe" key="ST" />
|
|
||||||
<Country name="Saudi Arabia" key="SA" />
|
|
||||||
<Country name="Senegal" key="SN" />
|
|
||||||
<Country name="Serbia" key="RS" />
|
|
||||||
<Country name="Seychelles" key="SC" />
|
|
||||||
<Country name="Sierra Leone" key="SL" />
|
|
||||||
<Country name="Singapore" key="SG" />
|
|
||||||
<Country name="Slovakia" key="SK" />
|
|
||||||
<Country name="Slovenia" key="SI" />
|
|
||||||
<Country name="Solomon Islands" key="SB" />
|
|
||||||
<Country name="Somalia" key="SO" />
|
|
||||||
<Country name="South Africa" key="ZA" />
|
|
||||||
<Country name="South Georgia and the South Sandwich Islands" key="GS" />
|
|
||||||
<Country name="Spain" key="ES" />
|
|
||||||
<Country name="Sri Lanka" key="LK" />
|
|
||||||
<Country name="Sudan" key="SD" />
|
|
||||||
<Country name="Suriname" key="SR" />
|
|
||||||
<Country name="Svalbard and Jan Mayen" key="SJ" />
|
|
||||||
<Country name="Swaziland" key="SZ" />
|
|
||||||
<Country name="Sweden" key="SE" />
|
|
||||||
<Country name="Switzerland" key="CH" />
|
|
||||||
<Country name="Syrian Arab Republic" key="SY" />
|
|
||||||
<Country name="Taiwan, Province of China" key="TW" />
|
|
||||||
<Country name="Tajikistan" key="TJ" />
|
|
||||||
<Country name="Tanzania, United Republic of" key="TZ" />
|
|
||||||
<Country name="Thailand" key="TH" />
|
|
||||||
<Country name="Timor-Leste" key="TL" />
|
|
||||||
<Country name="Togo" key="TG" />
|
|
||||||
<Country name="Tokelau" key="TK" />
|
|
||||||
<Country name="Tonga" key="TO" />
|
|
||||||
<Country name="Trinidad and Tobago" key="TT" />
|
|
||||||
<Country name="Tunisia" key="TN" />
|
|
||||||
<Country name="Turkey" key="TR" />
|
|
||||||
<Country name="Turkmenistan" key="TM" />
|
|
||||||
<Country name="Turks and Caicos Islands" key="TC" />
|
|
||||||
<Country name="Tuvalu" key="TV" />
|
|
||||||
<Country name="Uganda" key="UG" />
|
|
||||||
<Country name="Ukraine" key="UA" />
|
|
||||||
<Country name="United Arab Emirates" key="AE" />
|
|
||||||
<Country name="United Kingdom" key="GB" />
|
|
||||||
<Country name="United States" key="US" />
|
|
||||||
<Country name="United States Minor Outlying Islands" key="UM" />
|
|
||||||
<Country name="Uruguay" key="UY" />
|
|
||||||
<Country name="Uzbekistan" key="UZ" />
|
|
||||||
<Country name="Vanuatu" key="VU" />
|
|
||||||
<Country name="Venezuela, Bolivarian Republic of" key="VE" />
|
|
||||||
<Country name="Viet Nam" key="VN" />
|
|
||||||
<Country name="Virgin Islands, British" key="VG" />
|
|
||||||
<Country name="Virgin Islands, U.S." key="VI" />
|
|
||||||
<Country name="Wallis and Futuna" key="WF" />
|
|
||||||
<Country name="Western Sahara" key="EH" />
|
|
||||||
<Country name="Yemen" key="YE" />
|
|
||||||
<Country name="Zambia" key="ZM" />
|
|
||||||
<Country name="Zimbabwe" key="ZW" />
|
|
||||||
</Countries>
|
|
|
@ -1,411 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<States>
|
|
||||||
<!-- Canada -->
|
|
||||||
<State name="Alberta" key="AB" countryCode="CA" />
|
|
||||||
<State name="British Columbia" key="BC" countryCode="CA" />
|
|
||||||
<State name="Manitoba" key="MB" countryCode="CA" />
|
|
||||||
<State name="New Brunswick" key="NB" countryCode="CA" />
|
|
||||||
<State name="Newfoundland and Labrador" key="NL" countryCode="CA" />
|
|
||||||
<State name="Northwest Territories" key="NT" countryCode="CA" />
|
|
||||||
<State name="Nova Scotia" key="NS" countryCode="CA" />
|
|
||||||
<State name="Nunavut" key="NV" countryCode="CA" />
|
|
||||||
<State name="Ontario" key="ON" countryCode="CA" />
|
|
||||||
<State name="Prince Edward Island" key="PE" countryCode="CA" />
|
|
||||||
<State name="Quebec" key="QC" countryCode="CA" />
|
|
||||||
<State name="Saskatchewan" key="SK" countryCode="CA" />
|
|
||||||
<State name="Yukon Territory" key="YT" countryCode="CA" />
|
|
||||||
|
|
||||||
<!-- US -->
|
|
||||||
<State name="Alabama" key="AL" countryCode="US" />
|
|
||||||
<State name="Alaska" key="AK" countryCode="US" />
|
|
||||||
<State name="Arizona" key="AZ" countryCode="US" />
|
|
||||||
<State name="Arkansas" key="AR" countryCode="US" />
|
|
||||||
<State name="California" key="CA" countryCode="US" />
|
|
||||||
<State name="Colorado" key="CO" countryCode="US" />
|
|
||||||
<State name="Connecticut" key="CT" countryCode="US" />
|
|
||||||
<State name="Delaware" key="DE" countryCode="US" />
|
|
||||||
<State name="District of Columbia" key="DC" countryCode="US" />
|
|
||||||
<State name="Florida" key="FL" countryCode="US" />
|
|
||||||
<State name="Georgia" key="GA" countryCode="US" />
|
|
||||||
<State name="Hawaii" key="HI" countryCode="US" />
|
|
||||||
<State name="Idaho" key="ID" countryCode="US" />
|
|
||||||
<State name="Illinois" key="IL" countryCode="US" />
|
|
||||||
<State name="Indiana" key="IN" countryCode="US" />
|
|
||||||
<State name="Iowa" key="IA" countryCode="US" />
|
|
||||||
<State name="Kansas" key="KS" countryCode="US" />
|
|
||||||
<State name="Kentucky" key="KY" countryCode="US" />
|
|
||||||
<State name="Louisiana" key="LA" countryCode="US" />
|
|
||||||
<State name="Maine" key="ME" countryCode="US" />
|
|
||||||
<State name="Maryland" key="MD" countryCode="US" />
|
|
||||||
<State name="Massachusetts" key="MA" countryCode="US" />
|
|
||||||
<State name="Michigan" key="MI" countryCode="US" />
|
|
||||||
<State name="Minnesota" key="MN" countryCode="US" />
|
|
||||||
<State name="Mississippi" key="MS" countryCode="US" />
|
|
||||||
<State name="Missouri" key="MO" countryCode="US" />
|
|
||||||
<State name="Montana" key="MT" countryCode="US" />
|
|
||||||
<State name="Nebraska" key="NE" countryCode="US" />
|
|
||||||
<State name="Nevada" key="NV" countryCode="US" />
|
|
||||||
<State name="New Hampshire" key="NH" countryCode="US" />
|
|
||||||
<State name="New Jersey" key="NJ" countryCode="US" />
|
|
||||||
<State name="New Mexico" key="NM" countryCode="US" />
|
|
||||||
<State name="New York" key="NY" countryCode="US" />
|
|
||||||
<State name="North Carolina" key="NC" countryCode="US" />
|
|
||||||
<State name="North Dakota" key="ND" countryCode="US" />
|
|
||||||
<State name="Ohio" key="OH" countryCode="US" />
|
|
||||||
<State name="Oklahoma" key="OK" countryCode="US" />
|
|
||||||
<State name="Oregon" key="OR" countryCode="US" />
|
|
||||||
<State name="Pennsylvania" key="PA" countryCode="US" />
|
|
||||||
<State name="Rhode Island" key="RI" countryCode="US" />
|
|
||||||
<State name="South Carolina" key="SC" countryCode="US" />
|
|
||||||
<State name="South Dakota" key="SD" countryCode="US" />
|
|
||||||
<State name="Tennessee" key="TN" countryCode="US" />
|
|
||||||
<State name="Texas" key="TX" countryCode="US" />
|
|
||||||
<State name="Utah" key="UT" countryCode="US" />
|
|
||||||
<State name="Vermont" key="VT" countryCode="US" />
|
|
||||||
<State name="Virginia" key="VA" countryCode="US" />
|
|
||||||
<State name="Washington" key="WA" countryCode="US" />
|
|
||||||
<State name="West Virginia" key="WV" countryCode="US" />
|
|
||||||
<State name="Wisconsin" key="WI" countryCode="US" />
|
|
||||||
<State name="Wyoming" key="WY" countryCode="US" />
|
|
||||||
|
|
||||||
<!-- Russian Federation -->
|
|
||||||
<State name="Altaiskiy Kray" key="22" countryCode="RU" />
|
|
||||||
<State name="Amurskaya Oblast" key="28" countryCode="RU" />
|
|
||||||
<State name="Arkhangelskaya Oblast" key="29" countryCode="RU" />
|
|
||||||
<State name="Astrakhanskaya Oblast" key="30" countryCode="RU" />
|
|
||||||
<State name="Belgorodskaya Oblast" key="31" countryCode="RU" />
|
|
||||||
<State name="Bryanskaya Oblast" key="32" countryCode="RU" />
|
|
||||||
<State name="Chechnya" key="20" countryCode="RU" />
|
|
||||||
<State name="Chelyabinskaya Oblast" key="74" countryCode="RU" />
|
|
||||||
<State name="Chitinskaya Oblast" key="75" countryCode="RU" />
|
|
||||||
<State name="Chukotka Automomous District" key="87" countryCode="RU" />
|
|
||||||
<State name="Chuvash Republic" key="21" countryCode="RU" />
|
|
||||||
<State name="Evenkia Automomous District" key="88" countryCode="RU" />
|
|
||||||
<State name="Irkutskaya Oblast" key="38" countryCode="RU" />
|
|
||||||
<State name="Ivanovskaya Oblast" key="37" countryCode="RU" />
|
|
||||||
<State name="Jewish Autonomous Region" key="79" countryCode="RU" />
|
|
||||||
<State name="Kabardino-Balkaryan Republic" key="07" countryCode="RU" />
|
|
||||||
<State name="Kaliningradskaya Oblast" key="39" countryCode="RU" />
|
|
||||||
<State name="Kaluzhskaya Oblast" key="40" countryCode="RU" />
|
|
||||||
<State name="Kamchatskaya Oblast" key="41" countryCode="RU" />
|
|
||||||
<State name="Kemerovskaya Oblast" key="42" countryCode="RU" />
|
|
||||||
<State name="Khabarovskiy Kray" key="27" countryCode="RU" />
|
|
||||||
<State name="Kirovskaya Oblast" key="43" countryCode="RU" />
|
|
||||||
<State name="Kostromskaya Oblast" key="44" countryCode="RU" />
|
|
||||||
<State name="Krasnodarskiy Kray" key="23" countryCode="RU" />
|
|
||||||
<State name="Krasnoyarskiy Kray" key="24" countryCode="RU" />
|
|
||||||
<State name="Kurganskaya Oblast" key="45" countryCode="RU" />
|
|
||||||
<State name="Kurskaya Oblast" key="46" countryCode="RU" />
|
|
||||||
<State name="Leningradskaya Oblast" key="47" countryCode="RU" />
|
|
||||||
<State name="Lipetskaya Oblast" key="48" countryCode="RU" />
|
|
||||||
<State name="Magadanskaya Oblast" key="49" countryCode="RU" />
|
|
||||||
<State name="Moscow" key="77" countryCode="RU" />
|
|
||||||
<State name="Moskovskaya Oblast" key="50" countryCode="RU" />
|
|
||||||
<State name="Murmanskaya Oblast" key="51" countryCode="RU" />
|
|
||||||
<State name="Nizhegorodskaya Oblast" key="52" countryCode="RU" />
|
|
||||||
<State name="Novgorodskaya Oblast" key="53" countryCode="RU" />
|
|
||||||
<State name="Novosibirskaya Oblast" key="54" countryCode="RU" />
|
|
||||||
<State name="Omskaya Oblast" key="55" countryCode="RU" />
|
|
||||||
<State name="Orenburgskaya Oblast" key="56" countryCode="RU" />
|
|
||||||
<State name="Orlovskaya Oblast" key="57" countryCode="RU" />
|
|
||||||
<State name="Penzenskaya Oblast" key="58" countryCode="RU" />
|
|
||||||
<State name="Permskaya Oblast" key="59" countryCode="RU" />
|
|
||||||
<State name="Primorskiy Kray" key="25" countryCode="RU" />
|
|
||||||
<State name="Pskovskaya Oblast" key="60" countryCode="RU" />
|
|
||||||
<State name="Republic of Adyghe" key="01" countryCode="RU" />
|
|
||||||
<State name="Republic of Altai" key="04" countryCode="RU" />
|
|
||||||
<State name="Republic of Bashkortostan" key="02" countryCode="RU" />
|
|
||||||
<State name="Republic of Buryatia" key="03" countryCode="RU" />
|
|
||||||
<State name="Republic of Daghestan" key="05" countryCode="RU" />
|
|
||||||
<State name="Republic of Ingushetia" key="06" countryCode="RU" />
|
|
||||||
<State name="Republic of Kalmykia" key="08" countryCode="RU" />
|
|
||||||
<State name="Republic of Karelia" key="10" countryCode="RU" />
|
|
||||||
<State name="Republic of Khakassia" key="19" countryCode="RU" />
|
|
||||||
<State name="Republic of Komi" key="11" countryCode="RU" />
|
|
||||||
<State name="Republic of Mari El" key="12" countryCode="RU" />
|
|
||||||
<State name="Republic of Mordovia" key="13" countryCode="RU" />
|
|
||||||
<State name="Republic of North Ossetia - Alania" key="15" countryCode="RU" />
|
|
||||||
<State name="Republic of Sakha" key="14" countryCode="RU" />
|
|
||||||
<State name="Republic of Tuva" key="17" countryCode="RU" />
|
|
||||||
<State name="Rostovskaya Oblast" key="61" countryCode="RU" />
|
|
||||||
<State name="Ryazanskaya Oblast" key="62" countryCode="RU" />
|
|
||||||
<State name="Saint Petersburg" key="78" countryCode="RU" />
|
|
||||||
<State name="Sakhalinskaya Oblast" key="65" countryCode="RU" />
|
|
||||||
<State name="Samarskaya Oblast" key="63" countryCode="RU" />
|
|
||||||
<State name="Saratovskaya Oblast" key="64" countryCode="RU" />
|
|
||||||
<State name="Smolenskaya Oblast" key="67" countryCode="RU" />
|
|
||||||
<State name="Stavropolskiy Kray" key="26" countryCode="RU" />
|
|
||||||
<State name="Sverdlovskaya Oblast" key="66" countryCode="RU" />
|
|
||||||
<State name="Tambovskaya Oblast" key="68" countryCode="RU" />
|
|
||||||
<State name="Tatarstan" key="16" countryCode="RU" />
|
|
||||||
<State name="Tomskaya Oblast" key="70" countryCode="RU" />
|
|
||||||
<State name="Tul'skaya Oblast" key="71" countryCode="RU" />
|
|
||||||
<State name="Tverskaya Oblast" key="69" countryCode="RU" />
|
|
||||||
<State name="Tyumenskaya Oblast" key="72" countryCode="RU" />
|
|
||||||
<State name="Udmurt Republic" key="18" countryCode="RU" />
|
|
||||||
<State name="Ul'yanovskaya Oblast" key="73" countryCode="RU" />
|
|
||||||
<State name="Vladimirskaya Oblast" key="33" countryCode="RU" />
|
|
||||||
<State name="Volgogradskaya Oblast" key="34" countryCode="RU" />
|
|
||||||
<State name="Vologodskaya Oblast" key="35" countryCode="RU" />
|
|
||||||
<State name="Voronezhskaya Oblast" key="36" countryCode="RU" />
|
|
||||||
<State name="Yaroslavskaya Oblast" key="76" countryCode="RU" />
|
|
||||||
|
|
||||||
<!-- Croatia -->
|
|
||||||
<State name="Zagrebačka" key="01" countryCode="HR" />
|
|
||||||
<State name="Krapinsko-zagorska" key="02" countryCode="HR" />
|
|
||||||
<State name="Sisačko-moslavačka" key="03" countryCode="HR" />
|
|
||||||
<State name="Karlovačka" key="04" countryCode="HR" />
|
|
||||||
<State name="Varaždinska" key="05" countryCode="HR" />
|
|
||||||
<State name="Koprivničko-križevačka" key="06" countryCode="HR" />
|
|
||||||
<State name="Bjelovarsko-bilogorska" key="07" countryCode="HR" />
|
|
||||||
<State name="Primorsko-goranska" key="08" countryCode="HR" />
|
|
||||||
<State name="Ličko-senjska" key="09" countryCode="HR" />
|
|
||||||
<State name="Virovitičko-podravska" key="10" countryCode="HR" />
|
|
||||||
<State name="Požeško-slavonska" key="11" countryCode="HR" />
|
|
||||||
<State name="Brodsko-posavska" key="12" countryCode="HR" />
|
|
||||||
<State name="Zadarska" key="13" countryCode="HR" />
|
|
||||||
<State name="Osječko-baranjska" key="14" countryCode="HR" />
|
|
||||||
<State name="Šibensko-kninska" key="15" countryCode="HR" />
|
|
||||||
<State name="Vukovarsko-srijemska" key="16" countryCode="HR" />
|
|
||||||
<State name="Splitsko-dalmatinska" key="17" countryCode="HR" />
|
|
||||||
<State name="Istarska" key="18" countryCode="HR" />
|
|
||||||
<State name="Dubrovačko-neretvanska" key="19" countryCode="HR" />
|
|
||||||
<State name="Međimurska" key="20" countryCode="HR" />
|
|
||||||
<State name="Grad Zagreb" key="21" countryCode="HR" />
|
|
||||||
|
|
||||||
<!-- United Kingdom -->
|
|
||||||
<State name="-- England --" key="116" countryCode="GB" />
|
|
||||||
<State name="Avon" key="01" countryCode="GB" />
|
|
||||||
<State name="Bedfordshire" key="02" countryCode="GB" />
|
|
||||||
<State name="Berkshire" key="03" countryCode="GB" />
|
|
||||||
<State name="Bristol" key="04" countryCode="GB" />
|
|
||||||
<State name="Buckinghamshire" key="05" countryCode="GB" />
|
|
||||||
<State name="Cambridgeshire" key="06" countryCode="GB" />
|
|
||||||
<State name="Cheshire" key="07" countryCode="GB" />
|
|
||||||
<State name="Cleveland" key="08" countryCode="GB" />
|
|
||||||
<State name="Cornwall" key="09" countryCode="GB" />
|
|
||||||
<State name="Cumbria" key="10" countryCode="GB" />
|
|
||||||
<State name="Derbyshire" key="11" countryCode="GB" />
|
|
||||||
<State name="Devon" key="12" countryCode="GB" />
|
|
||||||
<State name="Dorset" key="13" countryCode="GB" />
|
|
||||||
<State name="Durham" key="14" countryCode="GB" />
|
|
||||||
<State name="East Riding of Yorkshire" key="15" countryCode="GB" />
|
|
||||||
<State name="East Sussex" key="16" countryCode="GB" />
|
|
||||||
<State name="Essex" key="17" countryCode="GB" />
|
|
||||||
<State name="Gloucestershire" key="18" countryCode="GB" />
|
|
||||||
<State name="Greater Manchester" key="19" countryCode="GB" />
|
|
||||||
<State name="Hampshire" key="20" countryCode="GB" />
|
|
||||||
<State name="Herefordshire" key="21" countryCode="GB" />
|
|
||||||
<State name="Hertfordshire" key="22" countryCode="GB" />
|
|
||||||
<State name="Humberside" key="23" countryCode="GB" />
|
|
||||||
<State name="Isle of Wight" key="24" countryCode="GB" />
|
|
||||||
<State name="Isles of Scilly" key="25" countryCode="GB" />
|
|
||||||
<State name="Kent" key="26" countryCode="GB" />
|
|
||||||
<State name="Lancashire" key="27" countryCode="GB" />
|
|
||||||
<State name="Leicestershire" key="28" countryCode="GB" />
|
|
||||||
<State name="Lincolnshire" key="29" countryCode="GB" />
|
|
||||||
<State name="London" key="30" countryCode="GB" />
|
|
||||||
<State name="Merseyside" key="31" countryCode="GB" />
|
|
||||||
<State name="Middlesex" key="32" countryCode="GB" />
|
|
||||||
<State name="Norfolk" key="33" countryCode="GB" />
|
|
||||||
<State name="North Yorkshire" key="34" countryCode="GB" />
|
|
||||||
<State name="Northamptonshire" key="35" countryCode="GB" />
|
|
||||||
<State name="Northumberland" key="36" countryCode="GB" />
|
|
||||||
<State name="Nottinghamshire" key="37" countryCode="GB" />
|
|
||||||
<State name="Oxfordshire" key="38" countryCode="GB" />
|
|
||||||
<State name="Rutland" key="39" countryCode="GB" />
|
|
||||||
<State name="Shropshire" key="40" countryCode="GB" />
|
|
||||||
<State name="Somerset" key="41" countryCode="GB" />
|
|
||||||
<State name="South Yorkshire" key="42" countryCode="GB" />
|
|
||||||
<State name="Staffordshire" key="43" countryCode="GB" />
|
|
||||||
<State name="Suffolk" key="44" countryCode="GB" />
|
|
||||||
<State name="Surrey" key="45" countryCode="GB" />
|
|
||||||
<State name="Tyne and Wear" key="46" countryCode="GB" />
|
|
||||||
<State name="Warwickshire" key="47" countryCode="GB" />
|
|
||||||
<State name="West Midlands" key="48" countryCode="GB" />
|
|
||||||
<State name="West Sussex" key="49" countryCode="GB" />
|
|
||||||
<State name="West Yorkshire" key="50" countryCode="GB" />
|
|
||||||
<State name="Wiltshire" key="51" countryCode="GB" />
|
|
||||||
<State name="Worcestershire" key="52" countryCode="GB" />
|
|
||||||
<State name="-- Northern Ireland --" key="117" countryCode="GB" />
|
|
||||||
<State name="Antrim" key="53" countryCode="GB" />
|
|
||||||
<State name="Armagh" key="54" countryCode="GB" />
|
|
||||||
<State name="Down" key="55" countryCode="GB" />
|
|
||||||
<State name="Fermanagh" key="56" countryCode="GB" />
|
|
||||||
<State name="Londonderry" key="57" countryCode="GB" />
|
|
||||||
<State name="Tyrone" key="58" countryCode="GB" />
|
|
||||||
<State name="-- Scotland --" key="118" countryCode="GB" />
|
|
||||||
<State name="Aberdeen City" key="59" countryCode="GB" />
|
|
||||||
<State name="Aberdeenshire" key="60" countryCode="GB" />
|
|
||||||
<State name="Angus" key="61" countryCode="GB" />
|
|
||||||
<State name="Argyll and Bute" key="62" countryCode="GB" />
|
|
||||||
<State name="Borders" key="63" countryCode="GB" />
|
|
||||||
<State name="Clackmannan" key="64" countryCode="GB" />
|
|
||||||
<State name="Dumfries and Galloway" key="65" countryCode="GB" />
|
|
||||||
<State name="East Ayrshire" key="67" countryCode="GB" />
|
|
||||||
<State name="East Dunbartonshire" key="68" countryCode="GB" />
|
|
||||||
<State name="East Lothian" key="69" countryCode="GB" />
|
|
||||||
<State name="East Renfrewshire" key="70" countryCode="GB" />
|
|
||||||
<State name="Edinburgh City" key="71" countryCode="GB" />
|
|
||||||
<State name="Falkirk" key="72" countryCode="GB" />
|
|
||||||
<State name="Fife" key="73" countryCode="GB" />
|
|
||||||
<State name="Glasgow" key="74" countryCode="GB" />
|
|
||||||
<State name="Highland" key="75" countryCode="GB" />
|
|
||||||
<State name="Inverclyde" key="76" countryCode="GB" />
|
|
||||||
<State name="Midlothian" key="77" countryCode="GB" />
|
|
||||||
<State name="Moray" key="78" countryCode="GB" />
|
|
||||||
<State name="North Ayrshire" key="79" countryCode="GB" />
|
|
||||||
<State name="North Lanarkshire" key="80" countryCode="GB" />
|
|
||||||
<State name="Orkney" key="81" countryCode="GB" />
|
|
||||||
<State name="Perthshire and Kinross" key="82" countryCode="GB" />
|
|
||||||
<State name="Renfrewshire" key="83" countryCode="GB" />
|
|
||||||
<State name="Roxburghshire" key="84" countryCode="GB" />
|
|
||||||
<State name="Shetland" key="85" countryCode="GB" />
|
|
||||||
<State name="South Ayrshire" key="86" countryCode="GB" />
|
|
||||||
<State name="South Lanarkshire" key="87" countryCode="GB" />
|
|
||||||
<State name="Stirling" key="88" countryCode="GB" />
|
|
||||||
<State name="West Dunbartonshire" key="89" countryCode="GB" />
|
|
||||||
<State name="West Lothian" key="90" countryCode="GB" />
|
|
||||||
<State name="Western Isles" key="91" countryCode="GB" />
|
|
||||||
<State name="-- Unitary Authorities of Wales --" key="119" countryCode="GB" />
|
|
||||||
<State name="Blaenau Gwent" key="92" countryCode="GB" />
|
|
||||||
<State name="Bridgend" key="93" countryCode="GB" />
|
|
||||||
<State name="Caerphilly" key="94" countryCode="GB" />
|
|
||||||
<State name="Cardiff" key="95" countryCode="GB" />
|
|
||||||
<State name="Carmarthenshire" key="96" countryCode="GB" />
|
|
||||||
<State name="Ceredigion" key="97" countryCode="GB" />
|
|
||||||
<State name="Conwy" key="98" countryCode="GB" />
|
|
||||||
<State name="Denbighshire" key="99" countryCode="GB" />
|
|
||||||
<State name="Flintshire" key="100" countryCode="GB" />
|
|
||||||
<State name="Gwynedd" key="101" countryCode="GB" />
|
|
||||||
<State name="Isle of Anglesey" key="102" countryCode="GB" />
|
|
||||||
<State name="Merthyr Tydfil" key="103" countryCode="GB" />
|
|
||||||
<State name="Monmouthshire" key="104" countryCode="GB" />
|
|
||||||
<State name="Neath Port Talbot" key="105" countryCode="GB" />
|
|
||||||
<State name="Newport" key="106" countryCode="GB" />
|
|
||||||
<State name="Pembrokeshire" key="107" countryCode="GB" />
|
|
||||||
<State name="Powys" key="108" countryCode="GB" />
|
|
||||||
<State name="Rhondda Cynon Taff" key="109" countryCode="GB" />
|
|
||||||
<State name="Swansea" key="110" countryCode="GB" />
|
|
||||||
<State name="Torfaen" key="111" countryCode="GB" />
|
|
||||||
<State name="The Vale of Glamorgan" key="112" countryCode="GB" />
|
|
||||||
<State name="Wrexham" key="113" countryCode="GB" />
|
|
||||||
<State name="-- GB Offshore Dependencies --" key="120" countryCode="GB" />
|
|
||||||
<State name="Channel Islands" key="114" countryCode="GB" />
|
|
||||||
<State name="Isle of Man" Ikey="115" countryCode="GB" />
|
|
||||||
|
|
||||||
<!-- Republic of Ireland -->
|
|
||||||
<State name="Fingal" key="01" countryCode="IE" />
|
|
||||||
<State name=" Dun Laoghaire-Rathdown" key="02" countryCode="IE" />
|
|
||||||
<State name="South Dublin" key="03" countryCode="IE" />
|
|
||||||
<State name="Wicklow" key="04" countryCode="IE" />
|
|
||||||
<State name="Wexford" key="05" countryCode="IE" />
|
|
||||||
<State name="Carlow" key="06" countryCode="IE" />
|
|
||||||
<State name="Kildare" key="07" countryCode="IE" />
|
|
||||||
<State name="Meath " key="08" countryCode="IE" />
|
|
||||||
<State name="Louth" key="09" countryCode="IE" />
|
|
||||||
<State name="Monaghan" key="10" countryCode="IE" />
|
|
||||||
<State name="Cavan" key="11" countryCode="IE" />
|
|
||||||
<State name="Longford" key="12" countryCode="IE" />
|
|
||||||
<State name="Westmeath" key="13" countryCode="IE" />
|
|
||||||
<State name="Offaly" key="14" countryCode="IE" />
|
|
||||||
<State name="Laois" key="15" countryCode="IE" />
|
|
||||||
<State name="Kilkenny " key="16" countryCode="IE" />
|
|
||||||
<State name="Waterford" key="17" countryCode="IE" />
|
|
||||||
<State name="Cork" key="18" countryCode="IE" />
|
|
||||||
<State name="Kerryr" key="19" countryCode="IE" />
|
|
||||||
<State name="Limerick" key="20" countryCode="IE" />
|
|
||||||
<State name="North Tipperary" key="21" countryCode="IE" />
|
|
||||||
<State name="South Tipperary" key="22" countryCode="IE" />
|
|
||||||
<State name="Clare" key="23" countryCode="IE" />
|
|
||||||
<State name="Galway" key="24" countryCode="IE" />
|
|
||||||
<State name="Mayo" key="25" countryCode="IE" />
|
|
||||||
<State name="Roscommon" key="26" countryCode="IE" />
|
|
||||||
<State name="Sligo" key="27" countryCode="IE" />
|
|
||||||
<State name="Leitrim" key="28" countryCode="IE" />
|
|
||||||
<State name="Donegal" key="29" countryCode="IE" />
|
|
||||||
|
|
||||||
<!-- Republic of Turkey -->
|
|
||||||
<State name="Adana" key="01" countryCode="TR" />
|
|
||||||
<State name="Adэyaman" key="02" countryCode="TR" />
|
|
||||||
<State name="Afyonkarahisar" key="03" countryCode="TR" />
|
|
||||||
<State name="Aрrэ" key="04" countryCode="TR" />
|
|
||||||
<State name="Amasya" key="05" countryCode="TR" />
|
|
||||||
<State name="Ankara" key="06" countryCode="TR" />
|
|
||||||
<State name="Antalya" key="07" countryCode="TR" />
|
|
||||||
<State name="Artvin" key="08" countryCode="TR" />
|
|
||||||
<State name="Aydэn" key="09" countryCode="TR" />
|
|
||||||
<State name="Balэkesir" key="10" countryCode="TR" />
|
|
||||||
<State name="Bilecik" key="11" countryCode="TR" />
|
|
||||||
<State name="Bingцl" key="12" countryCode="TR" />
|
|
||||||
<State name="Bitlis" key="13" countryCode="TR" />
|
|
||||||
<State name="Bolu" key="14" countryCode="TR" />
|
|
||||||
<State name="Burdur" key="15" countryCode="TR" />
|
|
||||||
<State name="Bursa" key="16" countryCode="TR" />
|
|
||||||
<State name="Зanakkale" key="17" countryCode="TR" />
|
|
||||||
<State name="Зankэrэ" key="18" countryCode="TR" />
|
|
||||||
<State name="Зorum" key="19" countryCode="TR" />
|
|
||||||
<State name="Denizli" key="20" countryCode="TR" />
|
|
||||||
<State name="Diyarbakэr" key="21" countryCode="TR" />
|
|
||||||
<State name="Edirne" key="22" countryCode="TR" />
|
|
||||||
<State name="Elazэр" key="23" countryCode="TR" />
|
|
||||||
<State name="Erzincan" key="24" countryCode="TR" />
|
|
||||||
<State name="Erzurum" key="25" countryCode="TR" />
|
|
||||||
<State name="Eskiюehir" key="26" countryCode="TR" />
|
|
||||||
<State name="Gaziantep" key="27" countryCode="TR" />
|
|
||||||
<State name="Giresun" key="28" countryCode="TR" />
|
|
||||||
<State name="Gьmьюhane" key="29" countryCode="TR" />
|
|
||||||
<State name="Hakkari" key="30" countryCode="TR" />
|
|
||||||
<State name="Hatay" key="31" countryCode="TR" />
|
|
||||||
<State name="Isparta" key="32" countryCode="TR" />
|
|
||||||
<State name="Mersin" key="33" countryCode="TR" />
|
|
||||||
<State name="Istanbul" key="34" countryCode="TR" />
|
|
||||||
<State name="Эzmir" key="35" countryCode="TR" />
|
|
||||||
<State name="Kars" key="36" countryCode="TR" />
|
|
||||||
<State name="Kastamonu" key="37" countryCode="TR" />
|
|
||||||
<State name="Kayseri" key="38" countryCode="TR" />
|
|
||||||
<State name="Kэrklareli" key="39" countryCode="TR" />
|
|
||||||
<State name="Kэrюehir" key="40" countryCode="TR" />
|
|
||||||
<State name="Kocaeli" key="41" countryCode="TR" />
|
|
||||||
<State name="Konya" key="42" countryCode="TR" />
|
|
||||||
<State name="Kьtahya" key="43" countryCode="TR" />
|
|
||||||
<State name="Malatya" key="44" countryCode="TR" />
|
|
||||||
<State name="Manisa" key="45" countryCode="TR" />
|
|
||||||
<State name="Kahramanmaraю" key="46" countryCode="TR" />
|
|
||||||
<State name="Mardin" key="47" countryCode="TR" />
|
|
||||||
<State name="Muрla" key="48" countryCode="TR" />
|
|
||||||
<State name="Muю" key="49" countryCode="TR" />
|
|
||||||
<State name="Nevюehir" key="50" countryCode="TR" />
|
|
||||||
<State name="Niрde" key="51" countryCode="TR" />
|
|
||||||
<State name="Ordu" key="52" countryCode="TR" />
|
|
||||||
<State name="Rize" key="53" countryCode="TR" />
|
|
||||||
<State name="Sakarya" key="54" countryCode="TR" />
|
|
||||||
<State name="Samsun" key="55" countryCode="TR" />
|
|
||||||
<State name="Siirt" key="56" countryCode="TR" />
|
|
||||||
<State name="Sinop" key="57" countryCode="TR" />
|
|
||||||
<State name="Sivas" key="58" countryCode="TR" />
|
|
||||||
<State name="Tekirdaр" key="59" countryCode="TR" />
|
|
||||||
<State name="Tokat" key="60" countryCode="TR" />
|
|
||||||
<State name="Trabzon" key="61" countryCode="TR" />
|
|
||||||
<State name="Tunceli" key="62" countryCode="TR" />
|
|
||||||
<State name="Юanlэurfa" key="63" countryCode="TR" />
|
|
||||||
<State name="Uюak" key="64" countryCode="TR" />
|
|
||||||
<State name="Van" key="65" countryCode="TR" />
|
|
||||||
<State name="Yozgat" key="66" countryCode="TR" />
|
|
||||||
<State name="Zonguldak" key="67" countryCode="TR" />
|
|
||||||
<State name="Aksaray" key="68" countryCode="TR" />
|
|
||||||
<State name="Bayburt" key="69" countryCode="TR" />
|
|
||||||
<State name="Karaman" key="70" countryCode="TR" />
|
|
||||||
<State name="Kэrэkkale" key="71" countryCode="TR" />
|
|
||||||
<State name="Batman" key="72" countryCode="TR" />
|
|
||||||
<State name="Юэrnak" key="73" countryCode="TR" />
|
|
||||||
<State name="Bartэn" key="74" countryCode="TR" />
|
|
||||||
<State name="Ardahan" key="75" countryCode="TR" />
|
|
||||||
<State name="Iрdэr" key="76" countryCode="TR" />
|
|
||||||
<State name="Yalova" key="77" countryCode="TR" />
|
|
||||||
<State name="Karabьk" key="78" countryCode="TR" />
|
|
||||||
<State name="Kilis" key="79" countryCode="TR" />
|
|
||||||
<State name="Osmaniye" key="80" countryCode="TR" />
|
|
||||||
<State name="Dьzce" key="81" countryCode="TR" />
|
|
||||||
|
|
||||||
</States>
|
|
|
@ -1,144 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Controls>
|
|
||||||
<!--<Control key="" />-->
|
|
||||||
<!--<Control key="create_organization" />-->
|
|
||||||
|
|
||||||
|
|
||||||
<!--Home-->
|
|
||||||
<Control key="organization_home" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--Organization-->
|
|
||||||
<Control key="users" />
|
|
||||||
<Control key="edit_user" general_key="users" /> <!--?-->
|
|
||||||
<Control key="create_user" general_key="users" />
|
|
||||||
<Control key="user_memberof" general_key="users" />
|
|
||||||
<!--<Control key="organization_user_setup" />-->
|
|
||||||
|
|
||||||
<Control key="secur_groups" />
|
|
||||||
<Control key="create_secur_group" general_key="secur_groups" />
|
|
||||||
<Control key="secur_group_settings" general_key="secur_groups" />
|
|
||||||
<Control key="secur_group_memberof" general_key="secur_groups" />
|
|
||||||
|
|
||||||
<Control key="org_domains" />
|
|
||||||
<Control key="org_add_domain" general_key="org_domains" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--Exchange-->
|
|
||||||
<Control key="mailboxes" />
|
|
||||||
<!--<Control key="archivingmailboxes" />-->
|
|
||||||
<Control key="create_mailbox" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_settings" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_mobile" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_mobile_details" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_addresses" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_mailflow" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_permissions" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_advanced" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_setup" general_key="mailboxes" />
|
|
||||||
<Control key="mailbox_memberof" general_key="mailboxes" />
|
|
||||||
|
|
||||||
<Control key="contacts" />
|
|
||||||
<Control key="create_contact" general_key="contacts" />
|
|
||||||
<Control key="contact_settings" general_key="contacts" />
|
|
||||||
<Control key="contact_mailflow" general_key="contacts" />
|
|
||||||
|
|
||||||
<Control key="dlists" />
|
|
||||||
<Control key="create_dlist" general_key="dlists" />
|
|
||||||
<Control key="dlist_settings" general_key="dlists" />
|
|
||||||
<Control key="dlist_addresses" general_key="dlists" />
|
|
||||||
<Control key="dlist_mailflow" general_key="dlists" />
|
|
||||||
<Control key="dlist_permissions" general_key="dlists" />
|
|
||||||
<Control key="dlist_memberof" general_key="dlists" />
|
|
||||||
|
|
||||||
<Control key="disclaimers" />
|
|
||||||
<Control key="disclaimers_settings" general_key="disclaimers" />
|
|
||||||
|
|
||||||
<Control key="public_folders" />
|
|
||||||
<Control key="create_public_folder" general_key="public_folders" />
|
|
||||||
<Control key="public_folder_settings" general_key="public_folders" />
|
|
||||||
<Control key="public_folder_addresses" general_key="public_folders" />
|
|
||||||
<Control key="public_folder_mailflow" general_key="public_folders" />
|
|
||||||
<Control key="public_folder_mailenable" general_key="public_folders" />
|
|
||||||
|
|
||||||
<Control key="domains" />
|
|
||||||
<Control key="add_domain" general_key="domains" />
|
|
||||||
<Control key="domain_records" general_key="domains" />
|
|
||||||
|
|
||||||
<Control key="storage_usage" />
|
|
||||||
<Control key="storage_usage_details" general_key="storage_usage" />
|
|
||||||
<!--<Control key="storage_limits" />-->
|
|
||||||
|
|
||||||
<Control key="activesync_policy" />
|
|
||||||
|
|
||||||
<Control key="mailboxplans" />
|
|
||||||
<Control key="retentionpolicy" />
|
|
||||||
<Control key="retentionpolicytag" />
|
|
||||||
<Control key="add_mailboxplan" general_key="mailboxplans" /> <!--?-->
|
|
||||||
|
|
||||||
|
|
||||||
<!--CRM-->
|
|
||||||
<Control key="CRMOrganizationDetails" />
|
|
||||||
|
|
||||||
<Control key="CRMUsers" />
|
|
||||||
<Control key="CRMUserRoles" general_key="CRMUsers" />
|
|
||||||
<Control key="create_crm_user" general_key="CRMUsers" />
|
|
||||||
|
|
||||||
<Control key="crm_storage_settings" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--SharePoint-->
|
|
||||||
<Control key="sharepoint_sitecollections" />
|
|
||||||
<Control key="sharepoint_edit_sitecollection" general_key="sharepoint_sitecollections" />
|
|
||||||
<Control key="sharepoint_backup_sitecollection" general_key="sharepoint_sitecollections" />
|
|
||||||
<Control key="sharepoint_restore_sitecollection" general_key="sharepoint_sitecollections" />
|
|
||||||
|
|
||||||
<Control key="sharepoint_storage_settings" />
|
|
||||||
|
|
||||||
<Control key="sharepoint_storage_usage" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--BlackBerry-->
|
|
||||||
<Control key="blackberry_users" />
|
|
||||||
<Control key="create_new_blackberry_user" general_key="blackberry_users" />
|
|
||||||
<Control key="edit_blackberry_user" general_key="blackberry_users" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--OCS-->
|
|
||||||
<Control key="ocs_users" />
|
|
||||||
<Control key="create_new_ocs_user" general_key="ocs_users" />
|
|
||||||
<Control key="edit_ocs_user" general_key="ocs_users" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--Lync-->
|
|
||||||
<Control key="lync_users"/>
|
|
||||||
<Control key="create_new_lync_user" general_key="lync_users" />
|
|
||||||
<Control key="edit_lync_user" general_key="lync_users" />
|
|
||||||
|
|
||||||
<Control key="lync_userplans" />
|
|
||||||
<Control key="add_lyncuserplan" general_key="lync_userplans" />
|
|
||||||
|
|
||||||
<Control key="lync_federationdomains" />
|
|
||||||
<Control key="add_lyncfederation_domain" general_key="lync_federationdomains" />
|
|
||||||
|
|
||||||
<Control key="lync_phonenumbers" />
|
|
||||||
<Control key="allocate_phonenumbers" general_key="lync_phonenumbers" />
|
|
||||||
|
|
||||||
|
|
||||||
<!--EnterpriseStorage-->
|
|
||||||
<Control key="enterprisestorage_folders" />
|
|
||||||
<Control key="create_enterprisestorage_folder" general_key="enterprisestorage_folders" />
|
|
||||||
<Control key="enterprisestorage_folder_settings" general_key="enterprisestorage_folders" />
|
|
||||||
|
|
||||||
<Control key="enterprisestorage_drive_maps" />
|
|
||||||
<Control key="create_enterprisestorage_drive_map" general_key="enterprisestorage_drive_maps" />
|
|
||||||
|
|
||||||
<!--RDS-->
|
|
||||||
<Control key="rds_servers" />
|
|
||||||
<Control key="rds_add_server" general_key="rds_servers"/>
|
|
||||||
|
|
||||||
<Control key="rds_collections" />
|
|
||||||
<Control key="rds_create_collection" general_key="rds_collections" />
|
|
||||||
<Control key="rds_collection_edit_apps" general_key="rds_collections" />
|
|
||||||
<Control key="rds_collection_edit_users" general_key="rds_collections" />
|
|
||||||
</Controls>
|
|
|
@ -1,137 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<ModuleDefinitions>
|
|
||||||
<ModuleDefinition id="ecEcommerceSettings">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/EcommerceSystemSettings.ascx" title="ecEcommerceSettings" type="View" />
|
|
||||||
<Control key="credit_card" src="Ecommerce/PaymentMethodCreditCard.ascx" title="ecCreditCardMethod" type="View" />
|
|
||||||
<Control key="2co" src="Ecommerce/PaymentMethod2Checkout.ascx" title="ec2CheckoutMethod" type="View" />
|
|
||||||
<Control key="pp_account" src="Ecommerce/PaymentMethodPayPalAccount.ascx" title="ecPPAccountMethod" type="View" />
|
|
||||||
<Control key="offline" src="Ecommerce/PaymentMethodOffline.ascx" title="ecOfflineMethod" type="View" />
|
|
||||||
<Control key="enom" src="Ecommerce/DomainRegistrarEnom.ascx" title="ecEnomRegistrar" type="View" />
|
|
||||||
<Control key="directi" src="Ecommerce/DomainRegistrarDirecti.ascx" title="ecDirectiRegistrar" type="View" />
|
|
||||||
<Control key="new_invoice" src="Ecommerce/NotificationNewInvoice.ascx" title="ecNotifyNewInvoice" type="View" />
|
|
||||||
<Control key="payment_rcvd" src="Ecommerce/NotificationPaymentReceived.ascx" title="ecNotifyPaymentRcvd" type="View" />
|
|
||||||
<Control key="svc_activated" src="Ecommerce/NotificationServiceActivated.ascx" title="ecNotifySvcActivated" type="View" />
|
|
||||||
<Control key="svc_suspended" src="Ecommerce/NotificationServiceSuspended.ascx" title="ecNotifySvcSuspended" type="View" />
|
|
||||||
<Control key="svc_cancelled" src="Ecommerce/NotificationServiceCancelled.ascx" title="ecNotifySvcCancelled" type="View" />
|
|
||||||
<Control key="terms_conds" src="Ecommerce/TermsAndConditionsEdit.ascx" title="ecTermsAndConds" type="View" />
|
|
||||||
<Control key="prov_settings" src="Ecommerce/ProvisioningSettingsEdit.ascx" title="ecProvSettings" type="View" />
|
|
||||||
<Control key="welcome_msg" src="Ecommerce/StorefrontWelcomeEdit.ascx" title="ecStorefronWelcomeMsg" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecCustomersServices">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/CustomersServices.ascx" title="ecCustomersServices" type="View" icon="3d_level_48.png" />
|
|
||||||
<Control key="view_svc" src="Ecommerce/CustomersServicesViewService.ascx" title="ecServiceDetails" type="View" icon="3d_info_48.png" />
|
|
||||||
<Control key="upgrade_svc" src="Ecommerce/CustomersServicesUpgradeService.ascx" title="ecServiceUpgrade" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecCustomerPaymentProfile">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/CustomerPaymentProfile.ascx" title="ecCustomerPaymentProfile" type="View" icon="3d_level_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecCustomersPayments">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/CustomersPayments.ascx" title="ecCustomersPayments" type="View" icon="reward_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecCustomersInvoices">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/CustomersInvoices.ascx" title="ecCustomersInvoices" type="View" icon="invoice_48.png"/>
|
|
||||||
<Control key="view_invoice" src="Ecommerce/CustomersInvoicesViewInvoice.ascx" title="ecInvoiceDetails" icon="invoice_info_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecStorefrontWelcome">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/StorefrontWelcome.ascx" title="ecStorefrontWelcome" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecQuickSignup">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/QuickSignup.ascx" title="ecQuickSignup" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecViewCategory">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/StorefrontViewCategory.ascx" title="ecViewCategory" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecProductDetails">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/ViewProductDetails.ascx" title="ecProductDetails" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecTaxations">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/Taxations.ascx" title="ecTaxations" type="View" />
|
|
||||||
<Control key="add_tax" src="Ecommerce/TaxationsAddTax.ascx" title="ecAddTax" type="View" />
|
|
||||||
<Control key="edit_tax" src="Ecommerce/TaxationsEditTax.ascx" title="ecEditTax" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecBillingCycles">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/BillingCycles.ascx" title="ecBillingCycles" type="View" />
|
|
||||||
<Control key="add_billingcycle" src="Ecommerce/BillingCyclesAddCycle.ascx" title="ecAddBillingCycle" type="View" />
|
|
||||||
<Control key="edit_billingcycle" src="Ecommerce/BillingCyclesEditCycle.ascx" title="ecEditBillingCycle" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecHostingPlans">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/HostingPlans.ascx" title="ecHostingPlans" type="View" />
|
|
||||||
<Control key="add_hostingplan" src="Ecommerce/HostingPlansAddPlan.ascx" title="ecAddHostingPlan" type="View" />
|
|
||||||
<Control key="edit_hostingplan" src="Ecommerce/HostingPlansEditPlan.ascx" title="ecEditHostingPlan" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecDomainNames">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/DomainNames.ascx" title="ecDomainNames" type="View" />
|
|
||||||
<Control key="add_tld" src="Ecommerce/DomainNamesAddDomain.ascx" title="ecAddDomainName" type="View" />
|
|
||||||
<Control key="edit_tld" src="Ecommerce/DomainNamesEditDomain.ascx" title="ecEditDomainName" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecHostingAddons">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/HostingAddons.ascx" title="ecHostingAddons" type="View" icon="webcam_48.png" />
|
|
||||||
<Control key="add_hostingaddon" src="Ecommerce/HostingAddonsAddAddon.ascx" title="ecAddHostingAddon" type="View" icon="webcam_add_48.png" />
|
|
||||||
<Control key="edit_hostingaddon" src="Ecommerce/HostingAddonsEditAddon.ascx" title="ecEditHostingAddon" type="View" icon="webcam_write_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecCategories">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/Categories.ascx" title="ecCategories" type="View" icon="inventory_48.png" />
|
|
||||||
<Control key="AddItem" src="Ecommerce/CategoriesAddCategory.ascx" title="ecAddCategory" type="View" icon="inventory_add_48.png" />
|
|
||||||
<Control key="EditItem" src="Ecommerce/CategoriesEditCategory.ascx" title="ecEditCategory" type="View" icon="inventory_write_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecOrderCheckout">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/OrderCheckout.ascx" title="ecOrderCheckout" type="View" icon="invoice_next_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecOrderComplete">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/OrderComplete.ascx" title="ecOrderComplete" type="View" icon="invoice_ok_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecOrderFailed">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/OrderFailed.ascx" title="ecOrderFailed" type="View" icon="invoice_close_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecOrderProduct">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/StorefrontOrderProduct.ascx" title="ecOrderProduct" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecStorefrontMenu">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/StorefrontMenu.ascx" title="ecStorefrontCatalogMenu" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ecTermsAndConditions">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="Ecommerce/TermsAndConditions.ascx" title="ecTermsAndConditions" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
</ModuleDefinitions>
|
|
|
@ -1,226 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Pages>
|
|
||||||
|
|
||||||
<include file="ModulesData.config" />
|
|
||||||
|
|
||||||
<Page name="QuickSignup" roles="?" hidden="true" skin="Storefront.ascx" adminskin="Storefront.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecQuickSignup" title="ecQuickSignup" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecOrderCheckout" roles="*" hidden="true" skin="Storefront.ascx" adminskin="Storefront.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecOrderCheckout" title="ecOrderCheckout" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecOrderComplete" roles="*" hidden="true" skin="Storefront.ascx" adminskin="Storefront.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecOrderComplete" title="ecOrderComplete" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecOrderFailed" roles="*" hidden="true" skin="Storefront.ascx" adminskin="Storefront.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecOrderFailed" title="ecOrderFailed" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecTermsAndConditions" roles="?" hidden="true" skin="SimpleWhite.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecTermsAndConditions" title="ecTermsAndConditions" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecProductDetails" roles="?" hidden="true" skin="SimpleWhite.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecProductDetails" title="ecProductDetails" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecOnlineStore" roles="?" hidden="true" skin="Storefront2.ascx" adminskin="Storefront2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="ecStorefrontMenu" title="ecStorefrontCatalogMenu" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecStorefrontWelcome" title="ecStorefrontWelcome" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
<Pages>
|
|
||||||
<Page name="ecViewCategory" roles="?" hidden="true" skin="Storefront2.ascx" adminskin="Storefront2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="ecStorefrontMenu" title="ecStorefrontCatalogMenu" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecViewCategory" title="ecViewCategory" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecOrderProduct" roles="?" hidden="true" skin="Storefront2.ascx" adminskin="Storefront2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="ecStorefrontMenu" title="ecStorefrontCatalogMenu" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecOrderProduct" title="ecOrderProduct" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
</Pages>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="ecEcommerceAdmin" hidden="true" roles="Administrator,Reseller" enabled="false">
|
|
||||||
<Pages>
|
|
||||||
<Page name="ecEcommerceSettings" roles="Administrator,Reseller" adminskin="Browse1.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecEcommerceSettings" title="ecEcommerceSettings" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecBillingCycles" roles="Administrator,Reseller" adminskin="Browse2.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecBillingCycles" title="ecBillingCycles" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecHostingPlans" roles="Administrator,Reseller" adminskin="Browse2.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecHostingPlans" title="ecHostingPlans" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecHostingAddons" roles="Administrator,Reseller" adminskin="Browse2.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecHostingAddons" title="ecHostingAddons" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecDomainNames" roles="Administrator,Reseller" adminskin="Browse2.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecDomainNames" title="ecDomainNames" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecCategories" roles="Administrator,Reseller" adminskin="Browse2.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCategories" title="ecCategories" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecTaxations" roles="Administrator,Reseller" adminskin="Browse2.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecTaxations" title="ecTaxations" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecCustomersPayments" roles="Administrator,Reseller" adminskin="Browse1.ascx" skin="Browse1.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomersPayments" title="ecCustomersPayments">
|
|
||||||
<Settings>
|
|
||||||
<Add name="IsReseller" value="True" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecCustomersInvoices" roles="Administrator,Reseller" adminskin="Browse1.ascx" skin="Browse1.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomersInvoices" title="ecCustomersInvoices">
|
|
||||||
<Settings>
|
|
||||||
<Add name="IsReseller" value="True" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecCustomersServices" roles="Administrator,Reseller" adminskin="Browse1.ascx" skin="Browse1.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomersServices" title="ecCustomersServices">
|
|
||||||
<Settings>
|
|
||||||
<Add name="IsReseller" value="True" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
</Pages>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecMyEcommerce" hidden="true" enabled="false" roles="Reseller,User">
|
|
||||||
<Pages>
|
|
||||||
<Page name="ecPaymentProfile" roles="Reseller,User" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomerPaymentProfile" title="ecCustomerPaymentProfile" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecMyPayments" roles="Reseller,User" adminskin="Browse1.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomersPayments" title="ecMyPayments">
|
|
||||||
<Settings>
|
|
||||||
<Add name="IsReseller" value="False" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecMyInvoices" roles="Reseller,User" adminskin="Browse1.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomersInvoices" title="ecMyInvoices">
|
|
||||||
<Settings>
|
|
||||||
<Add name="IsReseller" value="False" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="ecMyServices" roles="Reseller,User" adminskin="Browse1.ascx" skin="Browse2.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ecCustomersServices" title="ecMyServices">
|
|
||||||
<Settings>
|
|
||||||
<Add name="IsReseller" value="False" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
</Pages>
|
|
||||||
</Page>
|
|
||||||
</Pages>
|
|
|
@ -1,143 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<ModulesData>
|
|
||||||
|
|
||||||
<ModuleData id="UserMenu">
|
|
||||||
<MenuItem pageID="Home" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" selectedUserContext="User"/>
|
|
||||||
<MenuItem pageID="UserCustomers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" selectedUserContext="Administrator,Reseller"/>
|
|
||||||
<MenuItem pageID="UserSpaces" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" selectedUserContext="Administrator,Reseller,User"/>
|
|
||||||
<MenuItem pageID="HostingPlans" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" selectedUserContext="Administrator,Reseller"/>
|
|
||||||
<MenuItem pageID="HostingAddons" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" selectedUserContext="Administrator,Reseller"/>
|
|
||||||
<MenuItem pageID="UserPeers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" selectedUserContext="Administrator,Reseller,User"/>
|
|
||||||
<MenuItem pageID="UserTasks" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" selectedUserContext="Administrator,Reseller,User"/>
|
|
||||||
<MenuItem pageID="AuditLog" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" selectedUserContext="Administrator,Reseller,User"/>
|
|
||||||
<MenuItem pageID="ecOnlineStore" roles="Reseller,ResellerCSR,ResellerHelpdesk,User" selectedUserContext="Reseller,User" ecuser="true" />
|
|
||||||
<MenuItem pageID="ecEcommerceAdmin" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" selectedUserContext="Administrator,Reseller,User" ecadmin="true">
|
|
||||||
<MenuItems>
|
|
||||||
<MenuItem pageID="ecEcommerceSettings" ecommerce="true" />
|
|
||||||
<MenuItem pageID="ecBillingCycles" />
|
|
||||||
<MenuItem pageID="ecHostingPlans" />
|
|
||||||
<MenuItem pageID="ecHostingAddons" />
|
|
||||||
<MenuItem pageID="ecDomainNames" />
|
|
||||||
<MenuItem pageID="ecTaxations" />
|
|
||||||
<MenuItem pageID="ecCategories" />
|
|
||||||
<MenuItem pageID="ecCustomersPayments" />
|
|
||||||
<MenuItem pageID="ecCustomersInvoices" />
|
|
||||||
<MenuItem pageID="ecCustomersServices" />
|
|
||||||
</MenuItems>
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem pageID="ecMyEcommerce" ecuser="true" roles="Reseller,ResellerCSR,ResellerHelpdesk,User" selectedUserContext="Reseller,User">
|
|
||||||
<MenuItems>
|
|
||||||
<MenuItem pageID="ecPaymentProfile" />
|
|
||||||
<MenuItem pageID="ecMyPayments" />
|
|
||||||
<MenuItem pageID="ecMyInvoices" />
|
|
||||||
<MenuItem pageID="ecMyServices" />
|
|
||||||
</MenuItems>
|
|
||||||
</MenuItem>
|
|
||||||
<!--MenuItem url="http://google.com" title="Google" target="_blank"/-->
|
|
||||||
</ModuleData>
|
|
||||||
|
|
||||||
<ModuleData id="SpaceMenu">
|
|
||||||
|
|
||||||
<MenuItem pageID="SpaceDomains" resourceGroup="OS" />
|
|
||||||
<MenuItem pageID="SpaceWebSites" resourceGroup="Web"/>
|
|
||||||
<MenuItem pageID="SpaceWebIPAddresses" resourceGroup="Web" />
|
|
||||||
<MenuItem pageID="SpaceFtpAccounts" resourceGroup="FTP"/>
|
|
||||||
<MenuItem pageID="SpaceMail" resourceGroup="Mail" disabled="True">
|
|
||||||
<MenuItems>
|
|
||||||
<MenuItem pageID="SpaceMailAccounts" quota="Mail.Accounts"/>
|
|
||||||
<MenuItem pageID="SpaceMailForwardings" quota="Mail.Forwardings"/>
|
|
||||||
<MenuItem pageID="SpaceMailGroups" quota="Mail.Groups"/>
|
|
||||||
<MenuItem pageID="SpaceMailLists" quota="Mail.Lists"/>
|
|
||||||
<MenuItem pageID="SpaceMailDomains" resourceGroup="Mail"/>
|
|
||||||
</MenuItems>
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem pageID="SpaceDatabases" disabled="True">
|
|
||||||
<MenuItems>
|
|
||||||
<MenuItem pageID="SpaceMsSql2000" resourceGroup="MsSQL2000"/>
|
|
||||||
<MenuItem pageID="SpaceMsSql2005" resourceGroup="MsSQL2005"/>
|
|
||||||
<MenuItem pageID="SpaceMsSql2008" resourceGroup="MsSQL2008"/>
|
|
||||||
<MenuItem pageID="SpaceMsSql2012" resourceGroup="MsSQL2012"/>
|
|
||||||
<MenuItem pageID="SpaceMsSql2014" resourceGroup="MsSQL2014"/>
|
|
||||||
<MenuItem pageID="SpaceMySql4" resourceGroup="MySQL4"/>
|
|
||||||
<MenuItem pageID="SpaceMySql5" resourceGroup="MySQL5"/>
|
|
||||||
</MenuItems>
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem pageID="SpaceSharePoint" resourceGroup="SharePoint" disabled="True">
|
|
||||||
<MenuItems>
|
|
||||||
<MenuItem pageID="SpaceSharePointSites"/>
|
|
||||||
<MenuItem pageID="SpaceSharePointUsers"/>
|
|
||||||
</MenuItems>
|
|
||||||
</MenuItem>
|
|
||||||
<MenuItem pageID="SpaceVPS" resourceGroup="VPS"/>
|
|
||||||
<MenuItem pageID="SpaceVPSForPC" resourceGroup="VPSForPC"/>
|
|
||||||
<MenuItem pageID="SpaceExchangeServer" resourceGroup="Hosted Organizations"/>
|
|
||||||
<MenuItem pageID="SpaceSharedSSL" resourceGroup="OS" quota="Web.SharedSSL"/>
|
|
||||||
<MenuItem pageID="SpaceAdvancedStatistics" resourceGroup="Statistics"/>
|
|
||||||
<MenuItem pageID="SpaceOdbc" resourceGroup="OS" quota="OS.ODBC"/>
|
|
||||||
<MenuItem pageID="SpaceFileManager" resourceGroup="OS" quota="OS.FileManager"/>
|
|
||||||
<MenuItem pageID="SpaceWebApplicationsGallery" resourceGroup="Web" quota="Web.WebAppGallery"/>
|
|
||||||
<MenuItem pageID="SpaceApplicationsInstaller" resourceGroup="OS" quota="OS.AppInstaller"/>
|
|
||||||
<MenuItem pageID="SpaceScheduledTasks" resourceGroup="OS" quota="OS.ScheduledTasks"/>
|
|
||||||
<!--CO Changes-->
|
|
||||||
<MenuItem pageID="SpaceApplyEnableHardQuotaFeature" resourceGroup="OS" quota=""/>
|
|
||||||
<!--END-->
|
|
||||||
<!--MenuItem url="http://phpmysqladmin.com" title="phpMyAdmin" target="_blank"
|
|
||||||
resourceGroup="MySQL4"/-->
|
|
||||||
|
|
||||||
<MenuItem pageID="LyncPhoneNumbers" resourceGroup="Hosted Organizations" />
|
|
||||||
|
|
||||||
</ModuleData>
|
|
||||||
|
|
||||||
<ModuleData id="SpaceIcons">
|
|
||||||
<Group pageID="SpaceHome" titleresourcekey="System">
|
|
||||||
<Icon pageID="SpaceHome" titleresourcekey="SpaceStatistics" imageUrl="icons/spacehome_48.png" />
|
|
||||||
<Icon pageID="SpaceDomains" resourceGroup="OS" imageUrl="icons/domains_48.png" />
|
|
||||||
<Icon pageID="SpaceFtpAccounts" resourceGroup="FTP" imageUrl="icons/ftp_48.png"/>
|
|
||||||
<Icon pageID="SpaceFileManager" resourceGroup="OS" quota="OS.FileManager" imageUrl="icons/filemanager_48.png"/>
|
|
||||||
<Icon pageID="SpaceApplicationsInstaller" resourceGroup="OS" quota="OS.AppInstaller" imageUrl="icons/applicationsinstaller_48.png"/>
|
|
||||||
<Icon pageID="SpaceScheduledTasks" resourceGroup="OS" quota="OS.ScheduledTasks" imageUrl="icons/scheduledtasks_48.png"/>
|
|
||||||
</Group>
|
|
||||||
<Group pageID="SpaceWeb" titleresourcekey="Web" disabled="True">
|
|
||||||
<Icon pageID="SpaceWebSites" resourceGroup="Web" imageUrl="icons/websites_48.png" />
|
|
||||||
<Icon pageID="SpaceWebIPAddresses" resourceGroup="Web" imageUrl="icons/webipaddresses_48.png" />
|
|
||||||
<Icon pageID="SpaceSharedSSL" resourceGroup="OS" quota="Web.SharedSSL" imageUrl="icons/sharedssl_48.png" />
|
|
||||||
<Icon pageID="SpaceAdvancedStatistics" resourceGroup="Statistics" imageUrl="icons/advancedstatistics_48.png" />
|
|
||||||
<Icon pageID="SpaceWebApplicationsGallery" resourceGroup="Web" quota="Web.WebAppGallery" imageUrl="icons/webapplicationsgallery_48.png"/>
|
|
||||||
</Group>
|
|
||||||
<Group pageID="SpaceMail" titleresourcekey="Email" resourceGroup="Mail" disabled="True">
|
|
||||||
<Icon pageID="SpaceMailAccounts" quota="Mail.Accounts" imageUrl="icons/mail_accounts_48.png"/>
|
|
||||||
<Icon pageID="SpaceMailForwardings" quota="Mail.Forwardings" imageUrl="icons/mail_forwardings_48.png"/>
|
|
||||||
<Icon pageID="SpaceMailGroups" quota="Mail.Groups" imageUrl="icons/mail_groups_48.png"/>
|
|
||||||
<Icon pageID="SpaceMailLists" quota="Mail.Lists" imageUrl="icons/mail_lists_48.png"/>
|
|
||||||
<Icon pageID="SpaceMailDomains" resourceGroup="Mail" imageUrl="icons/mail_domains_48.png"/>
|
|
||||||
</Group>
|
|
||||||
<Group pageID="SpaceDatabases" titleresourcekey="Databases" disabled="True">
|
|
||||||
<Icon pageID="SpaceMsSql2000" resourceGroup="MsSQL2000" imageUrl="icons/mssql_48.png"/>
|
|
||||||
<Icon pageID="SpaceMsSql2005" resourceGroup="MsSQL2005" imageUrl="icons/mssql_48.png"/>
|
|
||||||
<Icon pageID="SpaceMsSql2008" resourceGroup="MsSQL2008" imageUrl="icons/mssql_48.png"/>
|
|
||||||
<Icon pageID="SpaceMsSql2012" resourceGroup="MsSQL2012" imageUrl="icons/mssql_48.png"/>
|
|
||||||
<Icon pageID="SpaceMsSql2014" resourceGroup="MsSQL2014" imageUrl="icons/mssql_48.png"/>
|
|
||||||
<Icon pageID="SpaceMySql4" resourceGroup="MySQL4" imageUrl="icons/mysql_48.png"/>
|
|
||||||
<Icon pageID="SpaceMySql5" resourceGroup="MySQL5" imageUrl="icons/mysql_48.png"/>
|
|
||||||
<Icon pageID="SpaceOdbc" resourceGroup="OS" quota="OS.ODBC" imageUrl="icons/odbc_48.png"/>
|
|
||||||
</Group>
|
|
||||||
<Group pageID="SpaceHome" titleresourcekey="VPS" disabled="True">
|
|
||||||
<Icon pageID="SpaceVPS" resourceGroup="VPS" imageUrl="icons/vps_48.png" />
|
|
||||||
<Icon pageID="SpaceVPSForPC" resourceGroup="VPSForPC" imageUrl="icons/vpsforpc_48.png" />
|
|
||||||
</Group>
|
|
||||||
<!--
|
|
||||||
<Group pageID="SpaceSharePoint" resourceGroup="SharePoint" disabled="True">
|
|
||||||
<Icon pageID="SpaceSharePointSites" imageUrl="icons/colors_48.png"/>
|
|
||||||
<Icon pageID="SpaceSharePointUsers" imageUrl="icons/colors_48.png"/>
|
|
||||||
</Group>
|
|
||||||
-->
|
|
||||||
</ModuleData>
|
|
||||||
|
|
||||||
<ModuleData id="HostedSolutionMenu">
|
|
||||||
<MenuItem pageID="SpaceDomains"/>
|
|
||||||
<MenuItem pageID="Userds"/>
|
|
||||||
<MenuItem pageID="SpaceOrganizationHostedSharePoint" resourceGroup="Hosted SharePoint"/>
|
|
||||||
<MenuItem pageID="SpaceExchanged"/>
|
|
||||||
</ModuleData>
|
|
||||||
|
|
||||||
</ModulesData>
|
|
|
@ -1,43 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<SiteSettings>
|
|
||||||
<!-- Display Settings -->
|
|
||||||
<PortalName>WebsitePanel</PortalName>
|
|
||||||
<!-- Enterprise Server -->
|
|
||||||
<EnterpriseServer>http://localhost:9002</EnterpriseServer>
|
|
||||||
<!-- General Settings -->
|
|
||||||
<CultureCookieName>UserCulture</CultureCookieName>
|
|
||||||
<ThemeCookieName>UserTheme</ThemeCookieName>
|
|
||||||
<!-- Mail Settings -->
|
|
||||||
<AdminEmail>
|
|
||||||
</AdminEmail>
|
|
||||||
<SmtpHost>
|
|
||||||
</SmtpHost>
|
|
||||||
<SmtpPort>
|
|
||||||
</SmtpPort>
|
|
||||||
<SmtpUsername>
|
|
||||||
</SmtpUsername>
|
|
||||||
<SmtpPassword>
|
|
||||||
</SmtpPassword>
|
|
||||||
<FromEmail>
|
|
||||||
</FromEmail>
|
|
||||||
<!-- Pages -->
|
|
||||||
<DefaultPage>Home</DefaultPage>
|
|
||||||
<LoginPage>Login</LoginPage>
|
|
||||||
<UserHomePage>Home</UserHomePage>
|
|
||||||
<UserCustomersPage>UserCustomers</UserCustomersPage>
|
|
||||||
<SpaceHomePage>SpaceHome</SpaceHomePage>
|
|
||||||
<NestedSpacesPage>NestedSpaces</NestedSpacesPage>
|
|
||||||
<UsersSearchPage>SearchUsers</UsersSearchPage>
|
|
||||||
<SpacesSearchPage>SearchSpaces</SpacesSearchPage>
|
|
||||||
<LoggedUserAccountPage>LoggedUserDetails</LoggedUserAccountPage>
|
|
||||||
<!-- Skins and Containers -->
|
|
||||||
<PortalSkin>Browse2.ascx</PortalSkin>
|
|
||||||
<PortalContainer>Browse.ascx</PortalContainer>
|
|
||||||
<AdminSkin>Edit.ascx</AdminSkin>
|
|
||||||
<AdminContainer>Edit.ascx</AdminContainer>
|
|
||||||
<!-- SSL Settings -->
|
|
||||||
<UseSSL>false</UseSSL>
|
|
||||||
<HideDemoCheckbox>false</HideDemoCheckbox>
|
|
||||||
<HideThemeAndLocale>false</HideThemeAndLocale>
|
|
||||||
<ExcludedRolesToLogin></ExcludedRolesToLogin>
|
|
||||||
</SiteSettings>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<SupportedLocales>
|
|
||||||
<Locale name="English" key="en-US" fallback="" />
|
|
||||||
</SupportedLocales>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
|
||||||
<Themes>
|
|
||||||
<Theme name="Default" title="Energy Blue" />
|
|
||||||
</Themes>
|
|
|
@ -1,664 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<ModuleDefinitions>
|
|
||||||
|
|
||||||
<!-- Common Modules -->
|
|
||||||
<ModuleDefinition id="SystemSettings">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SystemSettings.ascx" title="SearchUsers" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="TextHTML">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/TextHTML.ascx" title="TextHTML" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<!-- Common Modules -->
|
|
||||||
<ModuleDefinition id="SearchUsers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SearchUsers.ascx" title="SearchUsers" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SearchSpaces">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SearchSpaces.ascx" title="SearchSpaces" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<!-- User Account -->
|
|
||||||
<ModuleDefinition id="LoggedUserDetails">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/LoggedUserEditDetails.ascx" title="LoggedUserDetails" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserAccountMenu">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserAccountMenu.ascx" title="UserAccountMenu" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserCustomers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserCustomers.ascx" title="UserCustomersSummary" type="View" />
|
|
||||||
<Control key="create_user" src="WebsitePanel/UserCreateUserAccount.ascx" title="UserCreateUserAccount" type="View" icon="user_add_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserCustomersSummary">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserCustomersSummary.ascx" title="UserCustomersSummary" type="View" />
|
|
||||||
<Control key="create_user" src="WebsitePanel/UserCreateUserAccount.ascx" title="UserCreateUserAccount" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserSpaces">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserSpaces.ascx" title="UserSpaces" type="View" />
|
|
||||||
<Control key="create_space" src="WebsitePanel/UserCreateSpace.ascx" title="UserCreateSpace" type="View" icon="sphere_add_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserNotes">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserAccountNotes.ascx" title="UserAccountNotes" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserDetails">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserAccountDetails.ascx" title="UserAccountDetails" type="View" />
|
|
||||||
<Control key="summary_letter" src="WebsitePanel/UserAccountSummaryLetter.ascx" title="UserAccountSummaryLetter" type="View" icon="admin_info_48.png" />
|
|
||||||
<Control key="edit_details" src="WebsitePanel/UserAccountEditDetails.ascx" title="UserAccountEditDetails" type="View" icon="admin_write_48.png" />
|
|
||||||
<Control key="change_password" src="WebsitePanel/UserAccountChangePassword.ascx" title="UserAccountChangePassword" type="View" icon="admin_lock_48.png" />
|
|
||||||
<Control key="delete" src="WebsitePanel/UserDeleteUserAccount.ascx" title="UserDeleteUserAccount" type="View" icon="admin_close_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserResellerSettings">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserAccountSettings.ascx" title="UserAccountSettings" type="View" />
|
|
||||||
<Control key="mail_templates" src="WebsitePanel/UserAccountMailTemplateSettings.ascx" title="UserAccountMailTemplateSettings" type="View" icon="user_config_48.png" />
|
|
||||||
<Control key="policies" src="WebsitePanel/UserAccountPolicySettings.ascx" title="UserAccountPolicySettings" type="View" icon="user_config_48.png" />
|
|
||||||
<Control key="edit_settings" src="WebsitePanel/SettingsEditor.ascx" title="UserAccountSettingsEditor" type="View" icon="user_config_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserTools">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UserAccountTools.ascx" title="UserAccountTools" type="View" />
|
|
||||||
<Control key="backup" src="WebsitePanel/BackupWizard.ascx" title="BackupUser" type="View" />
|
|
||||||
<Control key="restore" src="WebsitePanel/RestoreWizard.ascx" title="RestoreUser" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="Tasks">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Tasks.ascx" title="Tasks" type="View" />
|
|
||||||
<Control key="view_details" src="WebsitePanel/TasksTaskDetails.ascx" title="TasksTaskDetails" type="View" icon="hourglass_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Space -->
|
|
||||||
<ModuleDefinition id="SpaceMenu">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceMenu.ascx" title="SpaceMenu" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="HostedSolutionMenu">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceMenu.ascx" title="SpaceMenu" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="SpaceQuotas">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceQuotas.ascx" title="SpaceQuotas" type="View" />
|
|
||||||
<Control key="view_quotas" src="WebsitePanel/SpaceViewQuotas.ascx" title="SpaceViewQuotas" type="View" icon="sphere_level_48.png" />
|
|
||||||
<Control key="view_addon" src="WebsitePanel/SpaceViewAddon.ascx" title="SpaceViewAddon" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SpaceNestedSpacesSummary">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceNestedSpacesSummary.ascx" title="SpaceNestedSpacesSummary" type="View" />
|
|
||||||
<Control key="spaces" src="WebsitePanel/SpaceNestedSpaces.ascx" title="SpaceNestedSpaces" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SpaceNotes">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceNotes.ascx" title="SpaceNotes" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SpaceDetails">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceDetails.ascx" title="SpaceDetails" type="View" />
|
|
||||||
<Control key="edit_details" src="WebsitePanel/SpaceEditDetails.ascx" title="SpaceEditDetails" type="View" icon="sphere_write_48.png" />
|
|
||||||
<Control key="summary_letter" src="WebsitePanel/SpaceSummaryLetter.ascx" title="SpaceSummaryLetter" type="View" icon="sphere_info_48.png" />
|
|
||||||
<Control key="delete" src="WebsitePanel/SpaceDeleteSpace.ascx" title="SpaceDeleteSpace" type="View" icon="sphere_close_48.png" />
|
|
||||||
<Control key="edit_addon" src="WebsitePanel/SpaceEditAddon.ascx" title="SpaceEditAddon" type="View" icon="sphere_star_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SpaceSettings">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceSettings.ascx" title="SpaceSettings" type="View" />
|
|
||||||
<Control key="edit_settings" src="WebsitePanel/SpaceSettingsEditor.ascx" title="SpaceSettingsEditor" type="View" icon="sphere_config_48.png" />
|
|
||||||
<Control key="edit_globaldns" src="WebsitePanel/SpaceEditDnsRecords.ascx" title="SpaceEditDnsRecords" type="View" icon="sphere_config_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SpaceTools">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceTools.ascx" title="SpaceTools" type="View" />
|
|
||||||
<Control key="backup" src="WebsitePanel/BackupWizard.ascx" title="BackupSpace" type="View" />
|
|
||||||
<Control key="restore" src="WebsitePanel/RestoreWizard.ascx" title="RestoreSpace" type="View" />
|
|
||||||
<Control key="import" src="WebsitePanel/SpaceImportResources.ascx" title="ImportSpaceResources" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="NestedSpaces">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SpaceNestedSpaces.ascx" title="SpaceNestedSpaces" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
|
|
||||||
<ModuleDefinition id="IPAddresses">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/IPAddresses.ascx" title="IPAddressesManager" type="View" />
|
|
||||||
<Control key="add_ip" src="WebsitePanel/IPAddressesAddIPAddress.ascx" title="AddIPAddress" type="View" icon="adress_add_48.png" />
|
|
||||||
<Control key="edit_ip" src="WebsitePanel/IPAddressesEditIPAddress.ascx" title="EditIPAddress" type="View" icon="adress_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="PhoneNumbers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/PhoneNumbers.ascx" title="PhoneNumbers" type="View" />
|
|
||||||
<Control key="add_phone" src="WebsitePanel/PhoneNumbersAddPhoneNumber.ascx" title="AddPhoneNumber" type="View" icon="adress_add_48.png" />
|
|
||||||
<Control key="edit_phone" src="WebsitePanel/PhoneNumbersEditPhoneNumber.ascx" title="EditPhoneNumber" type="View" icon="adress_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="RDSServers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/RDSServers.ascx" title="RDSServers" type="View" />
|
|
||||||
<Control key="add_rdsserver" src="WebsitePanel/RDSServersAddserver.ascx" title="RDSServersAddserver" type="View" icon="computer_add_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="Servers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Servers.ascx" title="Servers" type="View" />
|
|
||||||
<Control key="add_ip" src="WebsitePanel/IPAddressesAddIPAddress.ascx" title="AddIPAddress" type="View" icon="adress_add_48.png" />
|
|
||||||
<Control key="add_server" src="WebsitePanel/ServersAddServer.ascx" title="AddServer" type="View" icon="computer_add_48.png" />
|
|
||||||
<Control key="add_service" src="WebsitePanel/ServersAddService.ascx" title="AddNewService" type="View" icon="computer_config_48.png" />
|
|
||||||
<Control key="edit_eventviewer" src="WebsitePanel/ServersEditEventViewer.ascx" title="ServerEventViewer" type="View" icon="table_48.png" />
|
|
||||||
<Control key="edit_ip" src="WebsitePanel/IPAddressesEditIPAddress.ascx" title="EditIPAddress" type="View" icon="adress_48.png" />
|
|
||||||
<Control key="edit_processes" src="WebsitePanel/ServersEditSystemProcesses.ascx" title="ManageServerSystemProcesses" type="View" icon="windows_window_48.png" />
|
|
||||||
<Control key="edit_reboot" src="WebsitePanel/ServersEditReboot.ascx" title="RebootServer" type="View" icon="switch_off_48.png" />
|
|
||||||
<Control key="edit_server" src="WebsitePanel/ServersEditServer.ascx" title="ServerProperties" type="View" icon="computer_48.png" />
|
|
||||||
<Control key="edit_service" src="WebsitePanel/ServersEditService.ascx" title="ServiceProperties" type="View" icon="computer_config_48.png" />
|
|
||||||
<Control key="edit_termservices" src="WebsitePanel/ServersEditTerminalConnections.ascx" title="ManageTerminalConnections" type="View" icon="windows_window_zoom_48.png" />
|
|
||||||
<Control key="edit_winservices" src="WebsitePanel/ServersEditWindowsServices.ascx" title="ManageWindowsServices" type="View" icon="windows_window_config_48.png" />
|
|
||||||
<Control key="edit_platforminstaller" src="WebsitePanel/ServersEditWebPlatformInstaller.ascx" title="ManagePlatformInstaller" type="View" icon="computer_config_48.png" />
|
|
||||||
<Control key="backup" src="WebsitePanel/BackupWizard.ascx" title="BackupServer" type="View" />
|
|
||||||
<Control key="restore" src="WebsitePanel/RestoreWizard.ascx" title="RestoreServer" type="View" />
|
|
||||||
<Control key="edit_htaccessfolder" src="WebsitePanel/WebSitesEditHeliconApeFolder.ascx" title="HeliconApeFolderProperties" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="VirtualServers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/VirtualServers.ascx" title="VirtualServers" type="View" />
|
|
||||||
<Control key="add_server" src="WebsitePanel/VirtualServersAddServer.ascx" title="AddNewVirtualServer" type="View" icon="network_add_48.png" />
|
|
||||||
<Control key="add_services" src="WebsitePanel/VirtualServersAddServices.ascx" title="AddVirtualServerServices" type="View" icon="network_config_48.png" />
|
|
||||||
<Control key="edit_server" src="WebsitePanel/VirtualServersEditServer.ascx" title="EditVirtualServer" type="View" icon="network_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MyUsers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Users.ascx" title="Users" type="View" />
|
|
||||||
<Control key="delete_user" src="WebsitePanel/UsersDeleteUser.ascx" title="DeleteUserAccount" type="View" />
|
|
||||||
<Control key="edit_user" src="WebsitePanel/UsersEditUser.ascx" title="EditUserDetails" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UserPeers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Peers.ascx" title="PeerAccounts" type="View" />
|
|
||||||
<Control key="edit_peer" src="WebsitePanel/PeersEditPeer.ascx" title="EditPeerAccount" type="View" icon="motion_blur_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="HostingPlans">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/HostingPlans.ascx" title="HostingPlans" type="View" />
|
|
||||||
<Control key="edit_plan" src="WebsitePanel/HostingPlansEditPlan.ascx" title="EditHostingPlan" type="View" icon="inventory_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="HostingAddons">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/HostingAddons.ascx" title="HostingAddOns" type="View" />
|
|
||||||
<Control key="edit_addon" src="WebsitePanel/HostingAddonsEditAddon.ascx" title="EditHostingAddOn" type="View" icon="inventory_add_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="Domains">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Domains.ascx" title="Domains" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomainSelectType.ascx" title="AddNewDomain" type="View" icon="world_add_48.png" />
|
|
||||||
<Control key="add_domain_step2" src="WebsitePanel/DomainsAddDomain.ascx" title="AddNewDomain" type="View" icon="world_add_48.png" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/DomainsEditDomain.ascx" title="EditDomain" type="View" icon="world_48.png" />
|
|
||||||
<Control key="zone_records" src="WebsitePanel/DnsZoneRecords.ascx" title="DNSZoneRecords" type="View" icon="world_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ModuleDefinition id="HostedSharePointSiteCollections">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/HostedSharePointSiteCollections.ascx" title="HostedSharePointSiteCollections" type="View" icon="colors_48.png"/>
|
|
||||||
<Control key="edit_item" src="WebsitePanel/HostedSharePointEditSiteCollection.ascx" title="HostedSharePointSiteCollection" type="View" icon="colors_48.png" />
|
|
||||||
<Control key="backup" src="WebsitePanel/HostedSharePointBackupSiteCollection.ascx" title="HostedSharePointBackupSiteCollection" type="View"/>
|
|
||||||
<Control key="restore" src="WebsitePanel/HostedSharePointRestoreSiteCollection.ascx" title="HostedSharePointRestoreSiteCollection" type="View"/>
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
|
|
||||||
<ModuleDefinition id="FileManager">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/FileManager.ascx" title="HostingSpaceFiles" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="WebSites">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/WebSites.ascx" title="WebSites" type="View" />
|
|
||||||
<Control key="add_pointer" src="WebsitePanel/WebSitesAddPointer.ascx" title="AddWebSiteDomainPointer" type="View" />
|
|
||||||
<Control key="add_site" src="WebsitePanel/WebSitesAddSite.ascx" title="AddWebSite" type="View" icon="location_add_48.png" />
|
|
||||||
<Control key="add_vdir" src="WebsitePanel/WebSitesAddVirtualDir.ascx" title="AddVirtualDirectory" type="View" icon="file_add_48.png" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/WebSitesEditSite.ascx" title="WebSiteProperties" type="View" icon="location_48.png" />
|
|
||||||
<Control key="edit_vdir" src="WebsitePanel/WebSitesEditVirtualDir.ascx" title="VirtualDirectoryProperties" type="View" icon="file_48.png" />
|
|
||||||
<Control key="edit_webfolder" src="WebsitePanel/WebSitesEditWebFolder.ascx" title="SecuredFolderProperties" type="View" />
|
|
||||||
<Control key="edit_webgroup" src="WebsitePanel/WebSitesEditWebGroup.ascx" title="SecureGroupProperties" type="View" />
|
|
||||||
<Control key="edit_webuser" src="WebsitePanel/WebSitesEditWebUser.ascx" title="SecureUserProperties" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomain.ascx" title="AddDomain" type="View" />
|
|
||||||
<Control key="edit_htaccessfolder" src="WebsitePanel/WebSitesEditHeliconApeFolder.ascx" title="HeliconApeFolderProperties" type="View" />
|
|
||||||
<Control key="edit_htaccessfolderauth" src="WebsitePanel/WebSitesEditHeliconApeFolderAuth.ascx" title="HeliconApeFolderAuthProperties" type="View" />
|
|
||||||
<Control key="edit_htaccessgroup" src="WebsitePanel/WebSitesEditHeliconApeGroup.ascx" title="HeliconApeGroupProperties" type="View" />
|
|
||||||
<Control key="edit_htaccessuser" src="WebsitePanel/WebSitesEditHeliconApeUser.ascx" title="HeliconApeUserProperties" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="WebSiteIPAddresses">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/WebSitesIPAddresses.ascx" title="WebSitesIPAddresses" type="View" />
|
|
||||||
<Control key="allocate_addresses" src="WebsitePanel/WebSitesAllocateIPAddresses.ascx" title="WebSitesAllocateIPAddresses" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="LyncPhoneNumbers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="FtpAccounts">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/FtpAccounts.ascx" title="FTPAccounts" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/FtpAccountEditAccount.ascx" title="FTPAccountProperties" type="View" icon="folder_up_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MailAccounts">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/MailAccounts.ascx" title="MailAccounts" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomain.ascx" title="AddNewDomain" type="View" icon="" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/MailAccountsEditAccount.ascx" title="MailAccountProperties" type="View" icon="accounting_mail_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MailForwardings">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/MailForwardings.ascx" title="MailForwardings" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomain.ascx" title="AddNewDomain" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/MailForwardingsEditForwarding.ascx" title="MailForwardingProperties" type="View" icon="safe-mail_next_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MailGroups">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/MailGroups.ascx" title="MailGroups" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomain.ascx" title="AddNewDomain" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/MailGroupsEditGroup.ascx" title="MailGroupProperties" type="View" icon="contacts_mail_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MailLists">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/MailLists.ascx" title="MailLists" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomain.ascx" title="AddNewDomain" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/MailListsEditList.ascx" title="MailListProperties" type="View" icon="discussion_group_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MailDomains">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/MailDomains.ascx" title="MailDomains" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/DomainsAddDomain.ascx" title="AddNewDomain" type="View" />
|
|
||||||
<Control key="add_pointer" src="WebsitePanel/MailDomainsAddPointer.ascx" title="AddMailDomainPointer" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/MailDomainsEditDomain.ascx" title="MailDomainProperties" type="View" icon="web_mail_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SqlDatabases">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SqlDatabases.ascx" title="SQLDatabases" type="View" />
|
|
||||||
<Control key="backup" src="WebsitePanel/SqlBackupDatabase.ascx" title="BackupSQLDatabase" type="View" icon="database2_save_48.png" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/SqlEditDatabase.ascx" title="SQLDatabaseProperties" type="View" icon="database2_48.png" />
|
|
||||||
<Control key="restore" src="WebsitePanel/SqlRestoreDatabase.ascx" title="RestoreSQLDatabase" type="View" icon="database2_reload_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SqlUsers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SqlUsers.ascx" title="SQLUsers" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/SqlEditUser.ascx" title="SQLUserProperties" type="View" icon="db_user_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SharePointUsers">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SharePointUsers.ascx" title="SharePointUsers" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/SharePointUsersEditUser.ascx" title="SharePointUserProperties" type="View" icon="user_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SharePointGroups">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SharePointGroups.ascx" title="SharePointGroups" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/SharePointGroupsEditGroup.ascx" title="SharePointGroup" type="View" icon="group_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="AdvancedStatistics">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Statistics.ascx" title="AdvancedStatistics" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/StatisticsEditStatistics.ascx" title="AdvancedStatisticsInstallation" type="View" icon="stadistics_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="UsersWizard">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/UsersCreationWizard.ascx" title="AccountCreationWizard" type="View" />
|
|
||||||
<Control key="complete" src="WebsitePanel/UsersCreationWizardComplete.ascx" title="AccountCreationComplete" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="WebApplicationsGallery">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/WebApplicationGallery.ascx" title="WebApplicationsGallery" type="View" />
|
|
||||||
<Control key="complete" src="WebsitePanel/InstallerInstallApplicationComplete.ascx" title="InstallationComplete" type="View" icon="dvd_disc_ok_48.png" />
|
|
||||||
<Control key="edit" src="WebsitePanel/WebApplicationGalleryInstall.ascx" title="DownloadWebApplication" type="View" icon="dvd_disc_48.png" />
|
|
||||||
<Control key="editParams" src="WebsitePanel/WebApplicationGalleryParams.ascx" title="WebApplicationParameters" type="View" icon="dvd_disc_48.png" />
|
|
||||||
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
|
|
||||||
<ModuleDefinition id="Login">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Login.ascx" title="SignIn" type="View" />
|
|
||||||
<Control key="forgot_password" src="WebsitePanel/LoginForgotPassword.ascx" title="PasswordReminder" type="View" />
|
|
||||||
<Control key="scpa" src="WebsitePanel/SetupControlPanelAccounts.ascx" title="SetupControlPanelAccounts" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="AuditLog">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/AuditLog.ascx" title="AuditLog" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ScheduledTasks">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/Schedules.ascx" title="ScheduledTasks" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/SchedulesEditSchedule.ascx" title="ScheduledTaskProperties" type="View" icon="calendar_month_2_clock_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="OverusageReport">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/OverusageReport.ascx" title="OverusageReport" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="DiskspaceReport">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/DiskspaceReport.ascx" title="DiskSpaceSummary" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/DiskspaceReportPackageDetails.ascx" title="HostingSpaceDiskSpaceDetails" type="View" icon="stadistics_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="BandwidthReport">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/BandwidthReport.ascx" title="BandwidthReport" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/BandwidthReportPackageDetails.ascx" title="HostingSpaceBandwidthDetails" type="View" icon="stadistics_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MyWeb">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/IconsPad.ascx" title="Icons" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/IconsPadEditIcon.ascx" title="EditIconProperties" type="View" />
|
|
||||||
<Control key="settings" src="WebsitePanel/IconsPadSettings.ascx" title="IconsPadSettings" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MyMail">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/IconsPad.ascx" title="Icons" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/IconsPadEditIcon.ascx" title="EditIconProperties" type="View" />
|
|
||||||
<Control key="settings" src="WebsitePanel/IconsPadSettings.ascx" title="IconsPadSettings" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MyDatabases">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/IconsPad.ascx" title="Icons" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/IconsPadEditIcon.ascx" title="EditIconProperties" type="View" />
|
|
||||||
<Control key="settings" src="WebsitePanel/IconsPadSettings.ascx" title="IconsPadSettings" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="MyExtras">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/IconsPad.ascx" title="Icons" type="View" />
|
|
||||||
<Control key="edit" src="WebsitePanel/IconsPadEditIcon.ascx" title="EditIconProperties" type="View" />
|
|
||||||
<Control key="settings" src="WebsitePanel/IconsPadSettings.ascx" title="IconsPadSettings" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="ODBC">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/OdbcSources.ascx" title="ODBCDSNs" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/OdbcEditSource.ascx" title="ODBCDSNProperties" type="View" icon="export_db_back_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<ModuleDefinition id="SharePointSites">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SharePointSites.ascx" title="SharePointSites" type="View" />
|
|
||||||
<Control key="backup" src="WebsitePanel/SharePointBackupSite.ascx" title="BackupSharePointSite" type="View" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/SharePointEditSite.ascx" title="SharePointSite" type="View" icon="colors_48.png" />
|
|
||||||
<Control key="install_webparts" src="WebsitePanel/SharePointInstallWebPartPackage.ascx" title="InstallSharePointWebPartsPackage" type="View" />
|
|
||||||
<Control key="restore" src="WebsitePanel/SharePointRestoreSite.ascx" title="RestoreSharePointSite" type="View" />
|
|
||||||
<Control key="webparts" src="WebsitePanel/SharePointWebPartPackages.ascx" title="InstalledSharePointWebPartPackages" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="SharedSSL">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/SharedSSLFolders.ascx" title="SharedSSLFolders" type="View" />
|
|
||||||
<Control key="add" src="WebsitePanel/SharedSSLAddFolder.ascx" title="AddSharedSSLFolder" type="View" icon="world_lock_48.png" />
|
|
||||||
<Control key="edit_item" src="WebsitePanel/SharedSSLEditFolder.ascx" title="SharedSSLFolderProperties" type="View" icon="world_lock_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="ExchangeServer">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/ExchangeServer/Organizations.ascx" title="Organizations" type="View" />
|
|
||||||
<Control key="edit_user" src="WebsitePanel/ExchangeServer/OrganizationUserGeneralSettings.ascx" title="OrganizationUserGeneralSettings" type="View" />
|
|
||||||
<Control key="users" src="WebsitePanel/ExchangeServer/OrganizationUsers.ascx" title="OrganizationUsers" type="View" />
|
|
||||||
<Control key="create_user" src="WebsitePanel/ExchangeServer/OrganizationCreateUser.ascx" title="CreateUser" type="View" />
|
|
||||||
<Control key="create_organization" src="WebsitePanel/ExchangeServer/OrganizationCreateOrganization.ascx" title="OrganizationCreateOrganization" type="View" />
|
|
||||||
<Control key="organization_home" src="WebsitePanel/ExchangeServer/OrganizationHome.ascx" title="OrganizationHome" type="View" />
|
|
||||||
<Control key="organization_user_setup" src="WebsitePanel/ExchangeServer/OrganizationUserSetupInstructions.ascx" title="OrganizationUserSetupInstructions" type="View" />
|
|
||||||
<Control key="mailboxes" src="WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx" title="ExchangeMailboxes" type="View" />
|
|
||||||
<Control key="archivingmailboxes" src="WebsitePanel/ExchangeServer/ExchangeMailboxes.ascx" title="ExchangeArchivingMailboxes" type="View" />
|
|
||||||
<Control key="create_mailbox" src="WebsitePanel/ExchangeServer/ExchangeCreateMailbox.ascx" title="ExchangeCreateMailbox" type="View" />
|
|
||||||
<Control key="mailbox_settings" src="WebsitePanel/ExchangeServer/ExchangeMailboxGeneralSettings.ascx" title="ExchangeMailboxGeneralSettings" type="View" />
|
|
||||||
<Control key="mailbox_mobile" src="WebsitePanel/ExchangeServer/ExchangeMailboxMobile.ascx" title="ExchangeMailboxMobile" type="View" />
|
|
||||||
<Control key="mailbox_mobile_details" src="WebsitePanel/ExchangeServer/ExchangeMailboxMobileDetails.ascx" title="ExchangeMailboxMobile" type="View" />
|
|
||||||
<Control key="mailbox_addresses" src="WebsitePanel/ExchangeServer/ExchangeMailboxEmailAddresses.ascx" title="ExchangeMailboxEmailAddresses" type="View" />
|
|
||||||
<Control key="mailbox_mailflow" src="WebsitePanel/ExchangeServer/ExchangeMailboxMailFlowSettings.ascx" title="ExchangeMailboxMailFlowSettings" type="View" />
|
|
||||||
<Control key="mailbox_permissions" src="WebsitePanel/ExchangeServer/ExchangeMailboxPermissions.ascx" title="ExchangeMailboxPermissions" type="View" />
|
|
||||||
<Control key="mailbox_advanced" src="WebsitePanel/ExchangeServer/ExchangeMailboxAdvancedSettings.ascx" title="ExchangeMailboxAdvancedSettings" type="View" />
|
|
||||||
<Control key="mailbox_setup" src="WebsitePanel/ExchangeServer/ExchangeMailboxSetupInstructions.ascx" title="ExchangeMailboxSetupInstructions" type="View" />
|
|
||||||
<Control key="contacts" src="WebsitePanel/ExchangeServer/ExchangeContacts.ascx" title="ExchangeContacts" type="View" />
|
|
||||||
<Control key="create_contact" src="WebsitePanel/ExchangeServer/ExchangeCreateContact.ascx" title="ExchangeCreateContact" type="View" />
|
|
||||||
<Control key="contact_settings" src="WebsitePanel/ExchangeServer/ExchangeContactGeneralSettings.ascx" title="ExchangeContactGeneralSettings" type="View" />
|
|
||||||
<Control key="contact_mailflow" src="WebsitePanel/ExchangeServer/ExchangeContactMailFlowSettings.ascx" title="ExchangeContactMailFlowSettings" type="View" />
|
|
||||||
<Control key="dlists" src="WebsitePanel/ExchangeServer/ExchangeDistributionLists.ascx" title="ExchangeDistributionLists" type="View" />
|
|
||||||
<Control key="create_dlist" src="WebsitePanel/ExchangeServer/ExchangeCreateDistributionList.ascx" title="ExchangeCreateDistributionList" type="View" />
|
|
||||||
<Control key="dlist_settings" src="WebsitePanel/ExchangeServer/ExchangeDistributionListGeneralSettings.ascx" title="ExchangeDistributionListGeneralSettings" type="View" />
|
|
||||||
<Control key="dlist_addresses" src="WebsitePanel/ExchangeServer/ExchangeDistributionListEmailAddresses.ascx" title="ExchangeDistributionListEmailAddresses" type="View" />
|
|
||||||
<Control key="dlist_mailflow" src="WebsitePanel/ExchangeServer/ExchangeDistributionListMailFlowSettings.ascx" title="ExchangeDistributionListMailFlowSettings" type="View" />
|
|
||||||
<Control key="dlist_permissions" src="WebsitePanel/ExchangeServer/ExchangeDistributionListPermissions.ascx" title="ExchangeDistributionListMailFlowSettings" type="View" />
|
|
||||||
|
|
||||||
<Control key="mailbox_memberof" src="WebsitePanel/ExchangeServer/ExchangeMailboxMemberOf.ascx" title="ExchangeMailboxMemberOf" type="View" />
|
|
||||||
<Control key="dlist_memberof" src="WebsitePanel/ExchangeServer/ExchangeDistributionListMemberOf.ascx" title="ExchangeDistributionListMemberOf" type="View" />
|
|
||||||
<Control key="user_memberof" src="WebsitePanel/ExchangeServer/OrganizationUserMemberOf.ascx" title="UserMemberOf" type="View" />
|
|
||||||
|
|
||||||
<Control key="disclaimers" src="WebsitePanel/ExchangeServer/ExchangeDisclaimers.ascx" title="ExchangeDisclaimers" type="View" />
|
|
||||||
<Control key="disclaimers_settings" src="WebsitePanel/ExchangeServer/ExchangeDisclaimerGeneralSettings.ascx" title="ExchangeDisclaimerGeneralSettings" type="View" />
|
|
||||||
|
|
||||||
<Control key="public_folders" src="WebsitePanel/ExchangeServer/ExchangePublicFolders.ascx" title="ExchangePublicFolders" type="View" />
|
|
||||||
<Control key="create_public_folder" src="WebsitePanel/ExchangeServer/ExchangeCreatePublicFolder.ascx" title="ExchangeCreatePublicFolder" type="View" />
|
|
||||||
<Control key="public_folder_settings" src="WebsitePanel/ExchangeServer/ExchangePublicFolderGeneralSettings.ascx" title="ExchangePublicFolderGeneralSettings" type="View" />
|
|
||||||
<Control key="public_folder_addresses" src="WebsitePanel/ExchangeServer/ExchangePublicFolderEmailAddresses.ascx" title="ExchangePublicFolderEmailAddresses" type="View" />
|
|
||||||
<Control key="public_folder_mailflow" src="WebsitePanel/ExchangeServer/ExchangePublicFolderMailFlowSettings.ascx" title="ExchangePublicFolderMailFlowSettings" type="View" />
|
|
||||||
<Control key="public_folder_mailenable" src="WebsitePanel/ExchangeServer/ExchangePublicFolderMailEnable.ascx" title="ExchangePublicFolderMailEnable" type="View" />
|
|
||||||
<Control key="domains" src="WebsitePanel/ExchangeServer/ExchangeDomainNames.ascx" title="ExchangeDomainNames" type="View" />
|
|
||||||
<Control key="org_domains" src="WebsitePanel/ExchangeServer/OrganizationDomainNames.ascx" title="OrganizationDomainNames" type="View" />
|
|
||||||
<Control key="org_add_domain" src="WebsitePanel/ExchangeServer/OrganizationAddDomainName.ascx" title="OrganizationAddDomainName" type="View" />
|
|
||||||
<Control key="add_domain" src="WebsitePanel/ExchangeServer/ExchangeAddDomainName.ascx" title="ExchangeAddDomainName" type="View" />
|
|
||||||
<Control key="domain_records" src="WebsitePanel/ExchangeServer/ExchangeDomainRecords.ascx" title="ExchangeDomainRecords" type="View" />
|
|
||||||
<Control key="storage_usage" src="WebsitePanel/ExchangeServer/ExchangeStorageUsage.ascx" title="ExchangeStorageUsage" type="View" />
|
|
||||||
<Control key="storage_usage_details" src="WebsitePanel/ExchangeServer/ExchangeStorageUsageBreakdown.ascx" title="ExchangeStorageUsageBreakdown" type="View" />
|
|
||||||
<Control key="storage_limits" src="WebsitePanel/ExchangeServer/ExchangeStorageLimits.ascx" title="ExchangeStorageLimits" type="View" />
|
|
||||||
<Control key="activesync_policy" src="WebsitePanel/ExchangeServer/ExchangeActiveSyncSettings.ascx" title="ExchangeActiveSyncSettings" type="View" />
|
|
||||||
<Control key="mailboxplans" src="WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx" title="ExchangeMailboxPlans" type="View" />
|
|
||||||
<Control key="retentionpolicy" src="WebsitePanel/ExchangeServer/ExchangeMailboxPlans.ascx" title="ExchangeRetentionPolicy" type="View" />
|
|
||||||
<Control key="retentionpolicytag" src="WebsitePanel/ExchangeServer/ExchangeRetentionPolicyTag.ascx" title="ExchangeRetentionPolicyTag" type="View" />
|
|
||||||
<Control key="add_mailboxplan" src="WebsitePanel/ExchangeServer/ExchangeAddMailboxPlan.ascx" title="ExchangeAddMailboxPlan" type="View" />
|
|
||||||
|
|
||||||
<Control key="CRMOrganizationDetails" src="WebsitePanel/CRM/CRMOrganizationDetails.ascx" title="ExchangeActiveSyncSettings" type="View" />
|
|
||||||
<Control key="CRMUsers" src="WebsitePanel/CRM/CRMUsers.ascx" title="CRM Users" type="View" />
|
|
||||||
<Control key="CRMUserRoles" src="WebsitePanel/CRM/CRMUserRoles.ascx" title="CRM User Roles" type="View" />
|
|
||||||
<Control key="create_crm_user" src="WebsitePanel/CRM/CreateCRMUser.ascx" title="Create CRM User" type="View" />
|
|
||||||
<Control key="crm_storage_settings" src="WebsitePanel/CRM/CRMStorageSettings.ascx" title="CRMRestoreSiteCollection" type="View"/>
|
|
||||||
|
|
||||||
|
|
||||||
<Control key="sharepoint_sitecollections" src="WebsitePanel/HostedSharePointSiteCollections.ascx" title="HostedSharePointSiteCollections" type="View" icon="colors_48.png"/>
|
|
||||||
<Control key="sharepoint_edit_sitecollection" src="WebsitePanel/HostedSharePointEditSiteCollection.ascx" title="HostedSharePointSiteCollection" type="View" icon="colors_48.png" />
|
|
||||||
<Control key="sharepoint_backup_sitecollection" src="WebsitePanel/HostedSharePointBackupSiteCollection.ascx" title="HostedSharePointBackupSiteCollection" type="View"/>
|
|
||||||
<Control key="sharepoint_restore_sitecollection" src="WebsitePanel/HostedSharePointRestoreSiteCollection.ascx" title="HostedSharePointRestoreSiteCollection" type="View"/>
|
|
||||||
<Control key="sharepoint_storage_settings" src="WebsitePanel/HostedSharePointStorageSettings.ascx" title="HostedSharePointRestoreSiteCollection" type="View"/>
|
|
||||||
<Control key="sharepoint_storage_usage" src="WebsitePanel/HostedSharePointStorageUsage.ascx" title="HostedSharePointRestoreSiteCollection" type="View"/>
|
|
||||||
|
|
||||||
|
|
||||||
<Control key="blackberry_users" src="WebsitePanel/BlackBerry/BlackBerryUsers.ascx" title="BlackBerry Users" type="View" />
|
|
||||||
<Control key="create_new_blackberry_user" src="WebsitePanel/BlackBerry/CreateNewBlackBerryUser.ascx" title="Create New BlackBerry User" type="View" />
|
|
||||||
<Control key="edit_blackberry_user" src="WebsitePanel/BlackBerry/EditBlackBerryUser.ascx" title="Edit BlackBerry User" type="View" />
|
|
||||||
|
|
||||||
<Control key="ocs_users" src="WebsitePanel/OCS/OCSUsers.ascx" title="OCS Users" type="View" />
|
|
||||||
<Control key="create_new_ocs_user" src="WebsitePanel/OCS/CreateOCSUser.ascx" title="Create New OCS User" type="View" />
|
|
||||||
<Control key="edit_ocs_user" src="WebsitePanel/OCS/EditOCSUser.ascx" title="Edit OCS User" type="View" />
|
|
||||||
|
|
||||||
<Control key="lync_users" src="WebsitePanel/Lync/LyncUsers.ascx" title="Lync Users" type="View" />
|
|
||||||
<Control key="create_new_lync_user" src="WebsitePanel/Lync/LyncCreateUser.ascx" title="Create New Lync User" type="View" />
|
|
||||||
<Control key="lync_userplans" src="WebsitePanel/Lync/LyncUserPlans.ascx" title="LyncUserPlans" type="View" />
|
|
||||||
<Control key="lync_federationdomains" src="WebsitePanel/Lync/LyncFederationDomains.ascx" title="LyncFederationDomains" type="View" />
|
|
||||||
<Control key="add_lyncfederation_domain" src="WebsitePanel/Lync/LyncAddFederationDomain.ascx" title="LyncAddFederationDomain" type="View" />
|
|
||||||
<Control key="add_lyncuserplan" src="WebsitePanel/Lync/LyncAddLyncUserPlan.ascx" title="LyncAddLyncUserPlan" type="View" />
|
|
||||||
<Control key="edit_lync_user" src="WebsitePanel/Lync/LyncEditUser.ascx" title="Edit Lync User" type="View" />
|
|
||||||
|
|
||||||
<Control key="secur_groups" src="WebsitePanel/ExchangeServer/OrganizationSecurityGroups.ascx" title="OrganizationSecurityGroups" type="View" />
|
|
||||||
<Control key="create_secur_group" src="WebsitePanel/ExchangeServer/OrganizationCreateSecurityGroup.ascx" title="OrganizationSecurityGroup" type="View" />
|
|
||||||
<Control key="secur_group_settings" src="WebsitePanel/ExchangeServer/OrganizationSecurityGroupGeneralSettings.ascx" title="OrganizationSecurityGroup" type="View" />
|
|
||||||
<Control key="secur_group_memberof" src="WebsitePanel/ExchangeServer/OrganizationSecurityGroupMemberOf.ascx" title="OrganizationSecurityGroupMemberOf" type="View" />
|
|
||||||
|
|
||||||
<Control key="enterprisestorage_folders" src="WebsitePanel/ExchangeServer/EnterpriseStorageFolders.ascx" title="Enterprise Storage Folders" type="View" />
|
|
||||||
<Control key="create_enterprisestorage_folder" src="WebsitePanel/ExchangeServer/EnterpriseStorageCreateFolder.ascx" title="Create New ES Folder" type="View" />
|
|
||||||
<Control key="enterprisestorage_folder_settings" src="WebsitePanel/ExchangeServer/EnterpriseStorageFolderGeneralSettings.ascx" title="Edit ES Folder" type="View" />
|
|
||||||
<Control key="enterprisestorage_drive_maps" src="WebsitePanel/ExchangeServer/EnterpriseStorageDriveMaps.ascx" title="Enterprise Storage Drive Maps" type="View" />
|
|
||||||
<Control key="create_enterprisestorage_drive_map" src="WebsitePanel/ExchangeServer/EnterpriseStorageCreateDriveMap.ascx" title="Create New ES Drive Map" type="View" />
|
|
||||||
|
|
||||||
<Control key="lync_phonenumbers" src="WebsitePanel/Lync/LyncPhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
|
||||||
<Control key="allocate_phonenumbers" src="WebsitePanel/Lync/LyncAllocatePhoneNumbers.ascx" title="LyncPhoneNumbers" type="View" />
|
|
||||||
|
|
||||||
<Control key="rds_servers" src="WebsitePanel/RDS/AssignedRDSServers.ascx" title="RDSServers" type="View" />
|
|
||||||
<Control key="rds_add_server" src="WebsitePanel/RDS/AddRDSServer.ascx" title="AddRDSServer" type="View" />
|
|
||||||
<Control key="rds_collections" src="WebsitePanel/RDS/RDSCollections.ascx" title="RDSCollections" type="View" />
|
|
||||||
<Control key="rds_create_collection" src="WebsitePanel/RDS/RDSCreateCollection.ascx" title="RDSCreateCollection" type="View" />
|
|
||||||
<Control key="rds_collection_edit_apps" src="WebsitePanel/RDS/RDSEditCollectionApps.ascx" title="RDSEditCollectionApps" type="View" />
|
|
||||||
<Control key="rds_collection_edit_users" src="WebsitePanel/RDS/RDSEditCollectionUsers.ascx" title="RDSEditCollectionUsers" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="VPS">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/VPS/VdcHome.ascx" title="VdcHome" type="View" />
|
|
||||||
<Control key="vdc_create_server" src="WebsitePanel/VPS/VdcCreateServer.ascx" title="VdcCreateServer" type="View" />
|
|
||||||
<Control key="vdc_import_server" src="WebsitePanel/VPS/VdcImportServer.ascx" title="VdcImportServer" type="View" />
|
|
||||||
<Control key="vdc_external_network" src="WebsitePanel/VPS/VdcExternalNetwork.ascx" title="VdcExternalNetwork" type="View" />
|
|
||||||
<Control key="vdc_management_network" src="WebsitePanel/VPS/VdcManagementNetwork.ascx" title="VdcManagementNetwork" type="View" />
|
|
||||||
<Control key="vdc_allocate_external_ip" src="WebsitePanel/VPS/VdcAddExternalAddress.ascx" title="VdcAddExternalAddress" type="View" />
|
|
||||||
<Control key="vdc_private_network" src="WebsitePanel/VPS/VdcPrivateNetwork.ascx" title="VdcPrivateNetwork" type="View" />
|
|
||||||
<Control key="vdc_permissions" src="WebsitePanel/VPS/VdcPermissions.ascx" title="VdcPermissions" type="View" />
|
|
||||||
<Control key="vdc_audit_log" src="WebsitePanel/VPS/VdcAuditLog.ascx" title="VdcAuditLog" type="View" />
|
|
||||||
|
|
||||||
<Control key="vps_general" src="WebsitePanel/VPS/VpsDetailsGeneral.ascx" title="VpsDetailsGeneral" type="View" />
|
|
||||||
<Control key="vps_config" src="WebsitePanel/VPS/VpsDetailsConfiguration.ascx" title="VpsDetailsConfiguration" type="View" />
|
|
||||||
<Control key="vps_edit_config" src="WebsitePanel/VPS/VpsDetailsEditConfiguration.ascx" title="VpsDetailsEditConfiguration" type="View" />
|
|
||||||
<Control key="vps_dvd" src="WebsitePanel/VPS/VpsDetailsDvd.ascx" title="VpsDetailsDvd" type="View" />
|
|
||||||
<Control key="vps_insert_dvd" src="WebsitePanel/VPS/VpsDetailsInsertDvd.ascx" title="VpsDetailsInsertDvd" type="View" />
|
|
||||||
<Control key="vps_snapshots" src="WebsitePanel/VPS/VpsDetailsSnapshots.ascx" title="VpsDetailsSnapshots" type="View" />
|
|
||||||
<Control key="vps_network" src="WebsitePanel/VPS/VpsDetailsNetwork.ascx" title="VpsDetailsNetwork" type="View" />
|
|
||||||
<Control key="vps_add_external_ip" src="WebsitePanel/VPS/VpsDetailsAddExternalAddress.ascx" title="VpsDetailsAddExternalAddress" type="View" />
|
|
||||||
<Control key="vps_add_private_ip" src="WebsitePanel/VPS/VpsDetailsAddPrivateAddress.ascx" title="VpsDetailsAddPrivateAddress" type="View" />
|
|
||||||
<Control key="vps_permissions" src="WebsitePanel/VPS/VpsDetailsPermissions.ascx" title="VpsDetailsNetworking" type="View" />
|
|
||||||
<Control key="vps_tools" src="WebsitePanel/VPS/VpsDetailsTools.ascx" title="VpsDetailsTools" type="View" />
|
|
||||||
<Control key="vps_audit_log" src="WebsitePanel/VPS/VpsDetailsAuditLog.ascx" title="VpsDetailsAuditLog" type="View" />
|
|
||||||
<Control key="vps_help" src="WebsitePanel/VPS/VpsDetailsHelp.ascx" title="VpsDetailsHelp" type="View" />
|
|
||||||
<Control key="vps_tools_delete" src="WebsitePanel/VPS/VpsToolsDeleteServer.ascx" title="VpsToolsDeleteServer" type="View" />
|
|
||||||
<Control key="vps_tools_move" src="WebsitePanel/VPS/VpsMoveServer.ascx" title="VpsMoveServer" type="View" />
|
|
||||||
<Control key="vps_tools_reinstall" src="WebsitePanel/VPS/VpsToolsReinstallServer.ascx" title="VpsToolsReinstallServer" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<ModuleDefinition id="VPSForPC">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/VPSForPC/VdcHome.ascx" title="VdcHome" type="View" />
|
|
||||||
<Control key="vdc_create_server" src="WebsitePanel/VPSForPC/VdcCreateServer.ascx" title="VdcCreateServer" type="View" />
|
|
||||||
<Control key="vdc_import_server" src="WebsitePanel/VPSForPC/VdcImportServer.ascx" title="VdcImportServer" type="View" />
|
|
||||||
<Control key="vdc_FastCreate_server" src="WebsitePanel/VPSForPC/VdcFastCreateServer.ascx" title="VdcFastCreateServer" type="View" />
|
|
||||||
<Control key="vdc_external_network" src="WebsitePanel/VPSForPC/VdcExternalNetwork.ascx" title="VdcExternalNetwork" type="View" />
|
|
||||||
<Control key="vdc_management_network" src="WebsitePanel/VPSForPC/VdcManagementNetwork.ascx" title="VdcManagementNetwork" type="View" />
|
|
||||||
<Control key="vdc_allocate_external_ip" src="WebsitePanel/VPSForPC/VdcAddExternalAddress.ascx" title="VdcAddExternalAddress" type="View" />
|
|
||||||
<Control key="vdc_private_network" src="WebsitePanel/VPSForPC/VdcPrivateNetwork.ascx" title="VdcPrivateNetwork" type="View" />
|
|
||||||
<Control key="vdc_permissions" src="WebsitePanel/VPSForPC/VdcPermissions.ascx" title="VdcPermissions" type="View" />
|
|
||||||
<Control key="vdc_audit_log" src="WebsitePanel/VPSForPC/VdcAuditLog.ascx" title="VdcAuditLog" type="View" />
|
|
||||||
<Control key="vdc_account_vlan_network" src="WebsitePanel/VPSForPC/VdcAccountVLanNetwork.ascx" title="VdcAccountVLanNetwork" type="View" />
|
|
||||||
<Control key="vdc_account_vLan_add" src="WebsitePanel/VPSForPC/VdcAccountVLanAdd.ascx" title="VdcAccountVLanAdd" type="View" />
|
|
||||||
|
|
||||||
<Control key="vps_general" src="WebsitePanel/VPSForPC/VpsDetailsGeneral.ascx" title="VpsDetailsGeneral" type="View" />
|
|
||||||
<Control key="vps_config" src="WebsitePanel/VPSForPC/VpsDetailsConfiguration.ascx" title="VpsDetailsConfiguration" type="View" />
|
|
||||||
<Control key="vps_edit_config" src="WebsitePanel/VPSForPC/VpsDetailsEditConfiguration.ascx" title="VpsDetailsEditConfiguration" type="View" />
|
|
||||||
<Control key="vps_dvd" src="WebsitePanel/VPSForPC/VpsDetailsDvd.ascx" title="VpsDetailsDvd" type="View" />
|
|
||||||
<Control key="vps_insert_dvd" src="WebsitePanel/VPSForPC/VpsDetailsInsertDvd.ascx" title="VpsDetailsInsertDvd" type="View" />
|
|
||||||
<Control key="vps_snapshots" src="WebsitePanel/VPSForPC/VpsDetailsSnapshots.ascx" title="VpsDetailsSnapshots" type="View" />
|
|
||||||
<Control key="vps_network" src="WebsitePanel/VPSForPC/VpsDetailsNetwork.ascx" title="VpsDetailsNetwork" type="View" />
|
|
||||||
<Control key="vps_add_external_ip" src="WebsitePanel/VPSForPC/VpsDetailsAddExternalAddress.ascx" title="VpsDetailsAddExternalAddress" type="View" />
|
|
||||||
<Control key="vps_add_private_ip" src="WebsitePanel/VPSForPC/VpsDetailsAddPrivateAddress.ascx" title="VpsDetailsAddPrivateAddress" type="View" />
|
|
||||||
<Control key="vps_permissions" src="WebsitePanel/VPSForPC/VpsDetailsPermissions.ascx" title="VpsDetailsNetworking" type="View" />
|
|
||||||
<Control key="vps_tools" src="WebsitePanel/VPSForPC/VpsDetailsTools.ascx" title="VpsDetailsTools" type="View" />
|
|
||||||
<Control key="vps_audit_log" src="WebsitePanel/VPSForPC/VpsDetailsAuditLog.ascx" title="VpsDetailsAuditLog" type="View" />
|
|
||||||
<Control key="vps_help" src="WebsitePanel/VPSForPC/VpsDetailsHelp.ascx" title="VpsDetailsHelp" type="View" />
|
|
||||||
<Control key="vps_tools_delete" src="WebsitePanel/VPSForPC/VpsToolsDeleteServer.ascx" title="VpsToolsDeleteServer" type="View" />
|
|
||||||
<Control key="vps_tools_move" src="WebsitePanel/VPSForPC/VpsMoveServer.ascx" title="VpsMoveServer" type="View" />
|
|
||||||
<Control key="vps_tools_reinstall" src="WebsitePanel/VPSForPC/VpsToolsReinstallServer.ascx" title="VpsToolsReinstallServer" type="View" />
|
|
||||||
<Control key="vps_events_log" src="WebsitePanel/VPSForPC/VpsEventsLog.ascx" title="VpsEventsLog" type="View" />
|
|
||||||
<Control key="vps_alerts_log" src="WebsitePanel/VPSForPC/VpsAlertsLog.ascx" title="VpsAlertsLog" type="View" />
|
|
||||||
<Control key="vps_monitoring" src="WebsitePanel/VPSForPC/VpsMonitoring.ascx" title="VpsMonitoring" type="View" />
|
|
||||||
<Control key="vps_checkpoints" src="WebsitePanel/VPSForPC/VpsCheckPoints.ascx" title="VpsCheckPoints" type="View" />
|
|
||||||
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
|
|
||||||
<!-- CO Chnages-->
|
|
||||||
<ModuleDefinition id="ApplyEnableHardQuotaFeature">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/ApplyEnableHardQuotaFeature.ascx" title="ApplyEnableHardQuotaFeature" type="View" icon="calendar_month_2_clock_48.png" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
<!--END-->
|
|
||||||
|
|
||||||
<!-- Hosted Organization -->
|
|
||||||
<ModuleDefinition id="OrganizationMenu">
|
|
||||||
<Controls>
|
|
||||||
<Control key="" src="WebsitePanel/OrganizationMenu.ascx" title="OrganizationMenu" type="View" />
|
|
||||||
</Controls>
|
|
||||||
</ModuleDefinition>
|
|
||||||
</ModuleDefinitions>
|
|
|
@ -1,774 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Pages>
|
|
||||||
|
|
||||||
<include file="ModulesData.config" />
|
|
||||||
|
|
||||||
<Page name="Login" roles="?" skin="Login.ascx" adminskin="Login.ascx" hidden="True">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="Login" title="SignIn" container="Login.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="LoggedUserDetails" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Edit.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="LoggedUserDetails" title="LoggedUserDetails" icon="user_write_48.png" container="Edit.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SearchUsers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Browse1.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SearchUsers" title="SearchUsers" icon="user_zoom_48.png" container="Edit.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SearchSpaces" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Browse1.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SearchSpaces" title="SearchSpaces" icon="sphere_zoom_48.png" container="Edit.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="Home" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" skin="Browse3.ascx" align="right">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="UserCustomersSummary" title="UserCustomersSummary" container="Browse.ascx" icon="group_48.png"/>
|
|
||||||
<Module moduleDefinitionID="UserSpaces" title="UserSpaces" container="Browse.ascx" viewRoles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" icon="sphere_48.png">
|
|
||||||
<ModuleData ref="SpaceIcons"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="UserNotes" title="UserNotes" container="Browse.ascx" viewRoles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" icon="notes_48.png" />
|
|
||||||
</Content>
|
|
||||||
<Content id="RightPane">
|
|
||||||
<Module moduleDefinitionID="UserDetails" title="UserDetails" container="Clear.ascx" />
|
|
||||||
<Module moduleDefinitionID="UserResellerSettings" title="UserResellerSettings" container="Clear.ascx" viewRoles="Administrator,Reseller" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<!-- User Account Menu Pages -->
|
|
||||||
<Page name="UserCustomers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="UserCustomers" title="UserCustomers" icon="group_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="UserSpaces" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx" >
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="UserSpaces" title="UserSpaces" icon="sphere_48.png" readOnlyRoles="PlatformHelpdesk,ResellerHelpdesk" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="UserPeers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="UserPeers" title="UserPeers" icon="motion_blur_48.png" readOnlyRoles="PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="HostingPlans" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="HostingPlans" title="HostingPlans" icon="inventory_48.png" readOnlyRoles="PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="HostingAddons" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="HostingAddons" title="HostingAddons" icon="inventory_add_48.png" readOnlyRoles="PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="UserTasks" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="Tasks" title="Tasks" icon="hourglass_48.png" readOnlyRoles="PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="AuditLog" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="AuditLog" title="AuditLog" icon="record_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<!-- Space Home Page -->
|
|
||||||
<Page name="SpaceHome" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Browse3.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SpaceQuotas" title="SpaceQuotas" container="Browse.ascx" icon="stadistics_48.png" />
|
|
||||||
<Module moduleDefinitionID="SpaceNestedSpacesSummary" title="SpaceNestedSpacesSummary" container="Browse.ascx" viewRoles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" icon="sphere_down_48.png" />
|
|
||||||
<Module moduleDefinitionID="SpaceNotes" title="SpaceNotes" container="Browse.ascx" viewRoles="Administrator,Reseller" icon="notes_48.png" />
|
|
||||||
</Content>
|
|
||||||
<Content id="RightPane">
|
|
||||||
<Module moduleDefinitionID="SpaceDetails" title="SpaceDetails" container="Clear.ascx" />
|
|
||||||
<Module moduleDefinitionID="SpaceSettings" title="SpaceSettings" container="Clear.ascx" viewRoles="Administrator,Reseller"/>
|
|
||||||
<Module moduleDefinitionID="SpaceTools" title="SpaceTools" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<!-- Nested Spaces Page -->
|
|
||||||
<Page name="NestedSpaces" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="NestedSpaces" title="NestedSpaces" icon="sphere_down_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
|
|
||||||
<Page name="SpaceOrganizationHostedSharePoint" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="HostedSolutionMenu" title="HostedSolutionMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="HostedSolutionMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="HostedSharePointSiteCollections" title="HostedSharePointSiteCollections" icon="colors_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceDomains" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="Domains" title="Domains" icon="world_48.png" readOnlyRoles="PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceWeb" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="WebSites" title="WebSites" icon="location_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceWebSites" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="WebSites" title="WebSites" icon="location_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceWebIPAddresses" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="WebSiteIPAddresses" title="WebSiteIPAddresses" icon="adress_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="LyncPhoneNumbers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="LyncPhoneNumbers" title="LyncPhoneNumbers" icon="adress_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceFtpAccounts" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="FtpAccounts" title="FtpAccounts" icon="folder_up_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMail" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True"/>
|
|
||||||
|
|
||||||
<Page name="SpaceMailAccounts" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="MailAccounts" title="MailAccounts" icon="accounting_mail_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMailForwardings" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="MailForwardings" title="MailForwardings" icon="safe-mail_next_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMailGroups" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="MailGroups" title="MailGroups" icon="contacts_mail_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMailLists" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="MailLists" title="MailLists" icon="discussion_group_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMailDomains" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="MailDomains" title="MailDomains" icon="web_mail_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceDatabases" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True"/>
|
|
||||||
|
|
||||||
<Page name="SpaceMsSql2000" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="Sql2000Databases" icon="mssql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2000" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="Sql2000Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2000" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMsSql2005" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="Sql2005Databases" icon="mssql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2005" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="Sql2005Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2005" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMsSql2008" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="Sql2008Databases" icon="mssql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2008" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="Sql2008Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2008" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMsSql2012" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="Sql2012Databases" icon="mssql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2012" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="Sql2012Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2012" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMsSql2014" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="Sql2014Databases" icon="mssql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2014" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="Sql2014Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MsSQL2014" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMySql4" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="MySql4Databases" icon="mysql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MySQL4" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="MySql4Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MySQL4" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceMySql5" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SqlDatabases" title="MySql5Databases" icon="mysql_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MySQL5" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SqlUsers" title="MySql5Users" icon="db_user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR">
|
|
||||||
<Settings>
|
|
||||||
<Add name="GroupName" value="MySQL5" />
|
|
||||||
</Settings>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceSharedSSL" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SharedSSL" title="SharedSSL" icon="world_lock_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceAdvancedStatistics" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="AdvancedStatistics" title="AdvancedStatistics" icon="stadistics_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceOdbc" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ODBC" title="ODBC" icon="export_db_back_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceScheduledTasks" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ScheduledTasks" title="ScheduledTasks" icon="calendar_month_2_clock_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceFileManager" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="FileManager" title="FileManager" icon="cabinet_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceWebApplicationsGallery" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="WebApplicationsGallery" title="WebApplicationsGallery" container="Browse.ascx" icon="dvd_disc_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
|
|
||||||
<Page name="SpaceSharePoint" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True"/>
|
|
||||||
|
|
||||||
<Page name="SpaceSharePointSites" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="HostedSolutionMenu" title="HostedSolutionMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SharePointSites" title="SharePointSites" icon="colors_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceSharePointUsers" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SharePointUsers" title="SharePointUsers" icon="user_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
<Module moduleDefinitionID="SharePointGroups" title="SharePointGroups" icon="group_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="Backup" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<!-- Do not remove this stub page -->
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceExchangeServer" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="Exchange.ascx" adminskin="Exchange.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="OrganizationMenu" title="OrganizationMenu" container="Clear.ascx">
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ExchangeServer" title="ExchangeServer" icon="" container="Exchange.ascx" admincontainer="Exchange.ascx" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceVPS" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="VPS.ascx" adminskin="VPS.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="VPS" title="VirtualPrivateServers" icon="" container="VPS.ascx" admincontainer="VPS.ascx" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="SpaceVPSForPC" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True" skin="VPS.ascx" adminskin="VPS.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="VPSForPC" title="VirtualPrivateServersForPrivateCloud" icon="" container="VPSForPC.ascx" admincontainer="VPSForPC.ascx" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
|
|
||||||
<Page name="OverusageReport" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk" hidden="True" skin="Browse1.ascx">
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="OverusageReport" title="OverusageReport" container="Edit.ascx" icon="table_zoom_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<Page name="Reporting" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" enabled="false" align="left">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="User" title="User" container="Clear.ascx" />
|
|
||||||
<Module moduleDefinitionID="HostingSpace" title="HostingSpace" container="Clear.ascx" />
|
|
||||||
</Content>
|
|
||||||
<Pages>
|
|
||||||
<Page name="DiskspaceReport" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="DiskspaceReport" title="DiskspaceReport" container="Edit.ascx" icon="table_zoom_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="BandwidthReport" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="BandwidthReport" title="BandwidthReport" container="Edit.ascx" icon="table_zoom_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
</Pages>
|
|
||||||
</Page>
|
|
||||||
<Page name="Configuration" roles="Administrator" enabled="false" align="left">
|
|
||||||
<Pages>
|
|
||||||
<Page name="VirtualServers" roles="Administrator" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="VirtualServers" title="VirtualServers" container="Edit.ascx" icon="network_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="Servers" roles="Administrator" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="Servers" title="Servers" container="Edit.ascx" icon="computer_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="RDSServers" roles="Administrator" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="RDSServers" title="RDSServers" icon="computer_48.png" container="Edit.ascx"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="IPAddresses" roles="Administrator" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="IPAddresses" title="IPAddresses" container="Edit.ascx" icon="adress_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="PhoneNumbers" roles="Administrator" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="PhoneNumbers" title="PhoneNumbers" container="Edit.ascx" icon="adress_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<Page name="SystemSettings" roles="Administrator" skin="Browse1.ascx">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="SystemSettings" title="SystemSettings" container="Edit.ascx" icon="tool_48.png" />
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
</Pages>
|
|
||||||
</Page>
|
|
||||||
|
|
||||||
<!-- CO Changes -->
|
|
||||||
<Page name="SpaceApplyEnableHardQuotaFeature" roles="Administrator,Reseller,PlatformCSR,ResellerCSR,PlatformHelpdesk,ResellerHelpdesk,User" hidden="True">
|
|
||||||
<Content id="LeftPane">
|
|
||||||
<Module moduleDefinitionID="UserAccountMenu" title="UserMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="UserMenu"/>
|
|
||||||
</Module>
|
|
||||||
<Module moduleDefinitionID="SpaceMenu" title="SpaceMenu" container="Clear.ascx">
|
|
||||||
<ModuleData ref="SpaceMenu"/>
|
|
||||||
</Module>
|
|
||||||
</Content>
|
|
||||||
<Content id="ContentPane">
|
|
||||||
<Module moduleDefinitionID="ApplyEnableHardQuotaFeature" title="ApplyEnableHardQuotaFeature" icon="cabinet_48.png" readOnlyRoles="PlatformCSR,ResellerCSR"/>
|
|
||||||
</Content>
|
|
||||||
</Page>
|
|
||||||
<!--END-->
|
|
||||||
|
|
||||||
</Pages>
|
|
|
@ -7,9 +7,14 @@ namespace WebsitePanel.WebDavPortal
|
||||||
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
|
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
|
||||||
public static void RegisterBundles(BundleCollection bundles)
|
public static void RegisterBundles(BundleCollection bundles)
|
||||||
{
|
{
|
||||||
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
|
var jQueryBundle = new ScriptBundle("~/bundles/jquery").Include(
|
||||||
"~/Scripts/jquery-{version}.js",
|
"~/Scripts/jquery-{version}.js",
|
||||||
"~/Scripts/jquery.cookie.js"));
|
"~/Scripts/jquery.cookie.js");
|
||||||
|
|
||||||
|
jQueryBundle.IncludeDirectory("~/Scripts", "jquery.dataTables.min.js", true);
|
||||||
|
jQueryBundle.IncludeDirectory("~/Scripts", "dataTables.bootstrap.js", true);
|
||||||
|
|
||||||
|
bundles.Add(jQueryBundle);
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
|
||||||
"~/Scripts/jquery.validate*"));
|
"~/Scripts/jquery.validate*"));
|
||||||
|
@ -24,21 +29,43 @@ namespace WebsitePanel.WebDavPortal
|
||||||
"~/Scripts/respond.js"));
|
"~/Scripts/respond.js"));
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/appScripts").Include(
|
bundles.Add(new ScriptBundle("~/bundles/appScripts").Include(
|
||||||
"~/Scripts/appScripts/recalculateResourseHeight.js",
|
|
||||||
"~/Scripts/appScripts/uploadingData2.js",
|
|
||||||
"~/Scripts/appScripts/authentication.js",
|
|
||||||
"~/Scripts/appScripts/messages.js",
|
"~/Scripts/appScripts/messages.js",
|
||||||
"~/Scripts/appScripts/fileBrowsing.js",
|
"~/Scripts/appScripts/fileBrowsing.js",
|
||||||
"~/Scripts/appScripts/dialogs.js",
|
"~/Scripts/appScripts/dialogs.js",
|
||||||
"~/Scripts/appScripts/wsp.js"
|
"~/Scripts/appScripts/wsp.js"
|
||||||
));
|
));
|
||||||
|
|
||||||
|
bundles.Add(new ScriptBundle("~/bundles/bigIconsScripts").Include(
|
||||||
|
"~/Scripts/appScripts/recalculateResourseHeight.js"
|
||||||
|
));
|
||||||
|
|
||||||
bundles.Add(new ScriptBundle("~/bundles/authScripts").Include(
|
bundles.Add(new ScriptBundle("~/bundles/authScripts").Include(
|
||||||
"~/Scripts/appScripts/authentication.js"));
|
"~/Scripts/appScripts/authentication.js"));
|
||||||
|
|
||||||
bundles.Add(new StyleBundle("~/Content/css").Include(
|
bundles.Add(new ScriptBundle("~/bundles/file-upload").Include(
|
||||||
|
"~/Scripts/jquery.ui.widget.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/tmpl.min.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/load-image.min.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.iframe-transport.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-process.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-image.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-validate.js",
|
||||||
|
"~/Scripts/jQuery.FileUpload/jquery.fileupload-ui.js"
|
||||||
|
));
|
||||||
|
|
||||||
|
var styleBundle = new StyleBundle("~/Content/css");
|
||||||
|
|
||||||
|
styleBundle.Include(
|
||||||
|
"~/Content/jQuery.FileUpload/css/jquery.fileupload.css",
|
||||||
|
"~/Content/jQuery.FileUpload/css/jquery.fileupload-ui.css",
|
||||||
"~/Content/bootstrap.css",
|
"~/Content/bootstrap.css",
|
||||||
"~/Content/site.css"));
|
"~/Content/site.css");
|
||||||
|
|
||||||
|
styleBundle.IncludeDirectory("~/Content", "jquery.datatables.css", true);
|
||||||
|
styleBundle.IncludeDirectory("~/Content", "dataTables.bootstrap.css", true);
|
||||||
|
|
||||||
|
bundles.Add(styleBundle);
|
||||||
|
|
||||||
// Set EnableOptimizations to false for debugging. For more information,
|
// Set EnableOptimizations to false for debugging. For more information,
|
||||||
// visit http://go.microsoft.com/fwlink/?LinkId=301862
|
// visit http://go.microsoft.com/fwlink/?LinkId=301862
|
||||||
|
|
|
@ -26,53 +26,68 @@ namespace WebsitePanel.WebDavPortal
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
routes.MapRoute(
|
#region Owa
|
||||||
name: FileSystemRouteNames.DeleteFiles,
|
|
||||||
url: "files-group-action/delete",
|
|
||||||
defaults: new { controller = "FileSystem", action = "DeleteFiles" }
|
|
||||||
);
|
|
||||||
|
|
||||||
routes.MapRoute(
|
|
||||||
name: FileSystemRouteNames.UploadFile,
|
|
||||||
url: "upload-file/{org}/{*pathPart}",
|
|
||||||
defaults: new { controller = "FileSystem", action = "UploadFile" }
|
|
||||||
);
|
|
||||||
|
|
||||||
routes.MapRoute(
|
|
||||||
name: FileSystemRouteNames.DownloadFile,
|
|
||||||
url: "download-file/{org}/{*pathPart}",
|
|
||||||
defaults: new { controller = "FileSystem", action = "DownloadFile" }
|
|
||||||
);
|
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.ViewOfficeOnline,
|
name: FileSystemRouteNames.ViewOfficeOnline,
|
||||||
url: "office365/view/{org}/{*pathPart}",
|
url: "office365/view/{org}/{*pathPart}",
|
||||||
defaults: new { controller = "FileSystem", action = "ViewOfficeDocument", pathPart = UrlParameter.Optional }
|
defaults:
|
||||||
|
new {controller = "FileSystem", action = "ViewOfficeDocument", pathPart = UrlParameter.Optional}
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.EditOfficeOnline,
|
name: FileSystemRouteNames.EditOfficeOnline,
|
||||||
url: "office365/edit/{org}/{*pathPart}",
|
url: "office365/edit/{org}/{*pathPart}",
|
||||||
defaults: new { controller = "FileSystem", action = "EditOfficeDocument", pathPart = UrlParameter.Optional }
|
defaults:
|
||||||
|
new {controller = "FileSystem", action = "EditOfficeDocument", pathPart = UrlParameter.Optional}
|
||||||
);
|
);
|
||||||
|
|
||||||
//routes.MapRoute(
|
#endregion
|
||||||
// name: FileSystemRouteNames.ShowOfficeOnlinePath,
|
|
||||||
// url: "office365/{org}/{*pathPart}",
|
#region Enterprise storage
|
||||||
// defaults: new { controller = "FileSystem", action = "ShowOfficeDocument", pathPart = UrlParameter.Optional }
|
|
||||||
// );
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.ChangeWebDavViewType,
|
||||||
|
url: "storage/change-view-type/{viewType}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "ChangeViewType" }
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.DeleteFiles,
|
||||||
|
url: "storage/files-group-action/delete",
|
||||||
|
defaults: new { controller = "FileSystem", action = "DeleteFiles" }
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.UploadFile,
|
||||||
|
url: "storage/upload-files/{org}/{*pathPart}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "UploadFiles" }
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.DownloadFile,
|
||||||
|
url: "storage/download-file/{org}/{*pathPart}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "DownloadFile" }
|
||||||
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.ShowAdditionalContent,
|
name: FileSystemRouteNames.ShowAdditionalContent,
|
||||||
url: "show-additional-content/{*path}",
|
url: "storage/show-additional-content/{*path}",
|
||||||
defaults: new { controller = "FileSystem", action = "ShowAdditionalContent", path = UrlParameter.Optional }
|
defaults: new { controller = "FileSystem", action = "ShowAdditionalContent", path = UrlParameter.Optional }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
routes.MapRoute(
|
||||||
|
name: FileSystemRouteNames.ShowContentDetails,
|
||||||
|
url: "storage/details/{org}/{*pathPart}",
|
||||||
|
defaults: new { controller = "FileSystem", action = "GetContentDetails", pathPart = UrlParameter.Optional }
|
||||||
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: FileSystemRouteNames.ShowContentPath,
|
name: FileSystemRouteNames.ShowContentPath,
|
||||||
url: "{org}/{*pathPart}",
|
url: "{org}/{*pathPart}",
|
||||||
defaults: new { controller = "FileSystem", action = "ShowContent", pathPart = UrlParameter.Optional }
|
defaults: new { controller = "FileSystem", action = "ShowContent", pathPart = UrlParameter.Optional }
|
||||||
);
|
);
|
||||||
|
#endregion
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: "Default",
|
name: "Default",
|
||||||
|
|
|
@ -7,7 +7,9 @@ namespace WebsitePanel.WebDavPortal.UI.Routes
|
||||||
{
|
{
|
||||||
public class FileSystemRouteNames
|
public class FileSystemRouteNames
|
||||||
{
|
{
|
||||||
|
public const string ChangeWebDavViewType = "ChangeWebDavViewTypeRoute";
|
||||||
public const string ShowContentPath = "ShowContentRoute";
|
public const string ShowContentPath = "ShowContentRoute";
|
||||||
|
public const string ShowContentDetails = "ShowContentDetailsRoute";
|
||||||
public const string ShowOfficeOnlinePath_ = "ShowOfficeOnlineRoute";
|
public const string ShowOfficeOnlinePath_ = "ShowOfficeOnlineRoute";
|
||||||
public const string ViewOfficeOnline = "ViewOfficeOnlineRoute";
|
public const string ViewOfficeOnline = "ViewOfficeOnlineRoute";
|
||||||
public const string EditOfficeOnline = "EditOfficeOnlineRoute";
|
public const string EditOfficeOnline = "EditOfficeOnlineRoute";
|
|
@ -0,0 +1,24 @@
|
||||||
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||||
|
* AutoFill styles
|
||||||
|
*/
|
||||||
|
|
||||||
|
div.AutoFill_filler {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
height: 14px;
|
||||||
|
width: 14px;
|
||||||
|
background: url(../images/filler.png) no-repeat center center;
|
||||||
|
z-index: 1002;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.AutoFill_border {
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
background-color: #0063dc;
|
||||||
|
z-index: 1001;
|
||||||
|
|
||||||
|
box-shadow: 0px 0px 5px #76b4ff;
|
||||||
|
-moz-box-shadow: 0px 0px 5px #76b4ff;
|
||||||
|
-webkit-box-shadow: 0px 0px 5px #76b4ff;
|
||||||
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue