Merge
This commit is contained in:
commit
b815d95310
76 changed files with 3565 additions and 737 deletions
|
@ -44365,7 +44365,7 @@ Hello #user.FirstName#,
|
|||
</p>
|
||||
|
||||
<p>
|
||||
Please, find below details of your control panel account.
|
||||
Please, find below details of your control panel account. The one time password was generated for you. You should change the password after login.
|
||||
</p>
|
||||
|
||||
<h1>Control Panel URL</h1>
|
||||
|
@ -44374,7 +44374,7 @@ Please, find below details of your control panel account.
|
|||
<tr>
|
||||
<th>Control Panel URL</th>
|
||||
<th>Username</th>
|
||||
<th>Password</th>
|
||||
<th>One Time Password</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
@ -44412,11 +44412,11 @@ INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [Property
|
|||
|
||||
Hello #user.FirstName#,
|
||||
|
||||
Please, find below details of your control panel account.
|
||||
Please, find below details of your control panel account. The one time password was generated for you. You should change the password after login.
|
||||
|
||||
Control Panel URL: http://panel.AcmeHosting.com
|
||||
Username: #user.Username#
|
||||
Password: #user.Password#
|
||||
One Time Password: #user.Password#
|
||||
|
||||
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
|
||||
|
||||
|
|
|
@ -9910,6 +9910,9 @@ BEGIN
|
|||
(SELECT TOP 1 @item_type_id, @group_id, 'SharePointSiteCollection', TypeName, 100, CalculateDiskSpace, CalculateBandwidth, Suspendable, Disposable, Searchable, Importable, Backupable FROM [dbo].[ServiceItemTypes] WHERE DisplayName = 'SharePointFoundationSiteCollection')
|
||||
END
|
||||
|
||||
|
||||
|
||||
|
||||
GO
|
||||
|
||||
UPDATE [dbo].[Quotas] SET GroupID = 45 WHERE QuotaName = 'EnterpriseStorage.DriveMaps'
|
||||
|
@ -10157,8 +10160,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordExpirationLetter', N'HtmlBody', @UserPasswordExpirationLetterHtmlBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordExpirationLetterHtmlBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordExpirationLetter' AND [PropertyName]= N'HtmlBody'
|
||||
GO
|
||||
|
||||
|
||||
|
@ -10174,7 +10175,7 @@ END
|
|||
GO
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordExpirationLetter' AND [PropertyName]= N'LogoUrl' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordExpirationLetter', N'LogoUrl', N'https://controlpanel.virtuworks.net/App_Themes/Default/Images/logo.png')
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordExpirationLetter', N'LogoUrl', N'')
|
||||
END
|
||||
GO
|
||||
|
||||
|
@ -10201,8 +10202,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordExpirationLetter', N'TextBody', @UserPasswordExpirationLetterTextBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordExpirationLetterTextBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordExpirationLetter' AND [PropertyName]= N'TextBody'
|
||||
GO
|
||||
|
||||
|
||||
|
@ -10270,8 +10269,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetLetter', N'HtmlBody', @UserPasswordResetLetterHtmlBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetLetterHtmlBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'HtmlBody'
|
||||
GO
|
||||
|
||||
|
||||
|
@ -10287,7 +10284,7 @@ END
|
|||
GO
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'LogoUrl' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetLetter', N'LogoUrl', N'https://controlpanel.virtuworks.net/App_Themes/Default/Images/logo.png')
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetLetter', N'LogoUrl', N'')
|
||||
END
|
||||
GO
|
||||
|
||||
|
@ -10314,8 +10311,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetLetter', N'TextBody', @UserPasswordResetLetterTextBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetLetterTextBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'TextBody'
|
||||
GO
|
||||
|
||||
|
||||
|
@ -10331,8 +10326,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetLetter', N'PasswordResetLinkSmsBody', @UserPasswordResetSMSBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetSMSBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'PasswordResetLinkSmsBody'
|
||||
GO
|
||||
|
||||
-- USER PASSWORD RESET EMAIL PINCODE TEMPLATE
|
||||
|
@ -10396,8 +10389,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'HtmlBody', @UserPasswordResetPincodeLetterHtmlBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetPincodeLetterHtmlBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'HtmlBody'
|
||||
GO
|
||||
|
||||
|
||||
|
@ -10413,7 +10404,7 @@ END
|
|||
GO
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'LogoUrl' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'LogoUrl', N'https://controlpanel.virtuworks.net/App_Themes/Default/Images/logo.png')
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'LogoUrl', N'')
|
||||
END
|
||||
GO
|
||||
|
||||
|
@ -10440,8 +10431,6 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'TextBody', @UserPasswordResetPincodeLetterTextBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetPincodeLetterTextBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'TextBody'
|
||||
GO
|
||||
|
||||
DECLARE @UserPasswordPincodeSMSBody nvarchar(2500)
|
||||
|
@ -10454,17 +10443,135 @@ IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [Settin
|
|||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'PasswordResetPincodeSmsBody', @UserPasswordPincodeSMSBody)
|
||||
END
|
||||
ELSE
|
||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordPincodeSMSBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'PasswordResetPincodeSmsBody'
|
||||
GO
|
||||
|
||||
|
||||
-- USER PASSWORD REQUEST EMAIL TEMPLATE
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'From' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'From', N'support@HostingCompany.com')
|
||||
END
|
||||
GO
|
||||
|
||||
DECLARE @OrganizationUserPasswordRequestLetterHtmlBody nvarchar(2500)
|
||||
|
||||
Set @OrganizationUserPasswordRequestLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Password request notification</title>
|
||||
<style type="text/css">
|
||||
.Summary { background-color: ##ffffff; padding: 5px; }
|
||||
.Summary .Header { padding: 10px 0px 10px 10px; font-size: 16pt; background-color: ##E5F2FF; color: ##1F4978; border-bottom: solid 2px ##86B9F7; }
|
||||
.Summary A { color: ##0153A4; }
|
||||
.Summary { font-family: Tahoma; font-size: 9pt; }
|
||||
.Summary H1 { font-size: 1.7em; color: ##1F4978; border-bottom: dotted 3px ##efefef; }
|
||||
.Summary H2 { font-size: 1.3em; color: ##1F4978; }
|
||||
.Summary TABLE { border: solid 1px ##e5e5e5; }
|
||||
.Summary TH,
|
||||
.Summary TD.Label { padding: 5px; font-size: 8pt; font-weight: bold; background-color: ##f5f5f5; }
|
||||
.Summary TD { padding: 8px; font-size: 9pt; }
|
||||
.Summary UL LI { font-size: 1.1em; font-weight: bold; }
|
||||
.Summary UL UL LI { font-size: 0.9em; font-weight: normal; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="Summary">
|
||||
<div class="Header">
|
||||
<img src="#logoUrl#">
|
||||
</div>
|
||||
<h1>Password request notification</h1>
|
||||
|
||||
<ad:if test="#user#">
|
||||
<p>
|
||||
Hello #user.FirstName#,
|
||||
</p>
|
||||
</ad:if>
|
||||
|
||||
<p>
|
||||
Your account have been created. In order to create a password for your account, please follow next link:
|
||||
</p>
|
||||
|
||||
<a href="#passwordResetLink#" target="_blank">#passwordResetLink#</a>
|
||||
|
||||
<p>
|
||||
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Best regards
|
||||
</p>
|
||||
</div>
|
||||
</body>';
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'HtmlBody' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'HtmlBody', @OrganizationUserPasswordRequestLetterHtmlBody)
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'Priority' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'Priority', N'Normal')
|
||||
END
|
||||
GO
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'Subject' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'Subject', N'Password request notification')
|
||||
END
|
||||
GO
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'LogoUrl' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'LogoUrl', N'')
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
DECLARE @OrganizationUserPasswordRequestLetterTextBody nvarchar(2500)
|
||||
|
||||
Set @OrganizationUserPasswordRequestLetterTextBody = N'=========================================
|
||||
Password request notification
|
||||
=========================================
|
||||
|
||||
<ad:if test="#user#">
|
||||
Hello #user.FirstName#,
|
||||
</ad:if>
|
||||
|
||||
Your account have been created. In order to create a password for your account, please follow next link:
|
||||
|
||||
#passwordResetLink#
|
||||
|
||||
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
|
||||
|
||||
Best regards'
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'TextBody' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'TextBody', @OrganizationUserPasswordRequestLetterTextBody)
|
||||
END
|
||||
GO
|
||||
|
||||
DECLARE @OrganizationUserPasswordRequestLetterSMSBody nvarchar(2500)
|
||||
|
||||
Set @OrganizationUserPasswordRequestLetterSMSBody = N'
|
||||
User have been created. Password request url:
|
||||
#passwordResetLink#'
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'OrganizationUserPasswordRequestLetter' AND [PropertyName]= N'SMSBody' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'OrganizationUserPasswordRequestLetter', N'SMSBody', @OrganizationUserPasswordRequestLetterSMSBody)
|
||||
END
|
||||
GO
|
||||
|
||||
|
||||
|
||||
-- Exchange setup EMAIL TEMPLATE
|
||||
|
||||
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'ExchangeMailboxSetupLetter' AND [PropertyName]= N'From' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'From', N'orders@virtuworks.com')
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'From', N'')
|
||||
END
|
||||
GO
|
||||
|
||||
|
@ -10500,7 +10607,7 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
<table border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: left; padding: 0px 0px 2px 0px;"><a href="http://www.virtuworks.com"><img src="https://controlpanel.virtuworks.net/vw-email-logo.gif" border="0" alt="VirtuWorks: Run Your Business In The Cloud" /></a></td>
|
||||
<td style="text-align: left; padding: 0px 0px 2px 0px;"><a href=""><img src="" border="0" alt="" /></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -10515,11 +10622,11 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
<table class="menu-bar" border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href="http://www.virtuworks.com">Visit VirtuWorks.com</a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href="https://portal.virtuworks.net/whmcs/clientarea.php">Account Management</a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href="https://controlpanel.virtuworks.net">Control Panel</a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href="http://www.virtuworks.com/support">Support</a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href="http://www.virtuworks.com/company/contact-us.aspx">Contact Us</a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href=""</a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href=""></a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href=""></a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href=""></a></td>
|
||||
<td style="text-align: center;" width="20%"><a style="color: ##ffffff; text-transform: uppercase; font-size: 9px; font-weight: bold; font-family: Arial, Helvetica, sans-serif; text-decoration: none;" href=""></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -10551,7 +10658,7 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
Hello #Account.DisplayName#,
|
||||
</p>
|
||||
<p>
|
||||
Thanks for choosing VirtuWorks as your Exchange hosting provider.
|
||||
Thanks for choosing as your Exchange hosting provider.
|
||||
</p>
|
||||
</ad:if>
|
||||
<ad:if test="#not(PMM)#">
|
||||
|
@ -10590,15 +10697,15 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
<h1>
|
||||
Webmail (OWA, Outlook Web Access)</h1>
|
||||
<p>
|
||||
<a href="https://mail.virtuworks.net/owa" target="_blank">https://mail.virtuworks.net/owa</a>
|
||||
<a href="" target="_blank"></a>
|
||||
</p>
|
||||
<h1>
|
||||
Outlook (Windows Clients)</h1>
|
||||
<p>
|
||||
To configure Outlook 2013 to work with the VirtuWorks servers, please reference:
|
||||
To configure Outlook 2013 to work with the servers, please reference:
|
||||
</p>
|
||||
<p>
|
||||
<a href="http://www.virtuworks.com/how-to-configure-my-outlook-2010-client-to-work-with-my-velum-hosted-exchange-account/" target="_blank">http://www.virtuworks.com/how-to-configure-my-outlook-2010-client-to-work-with-my-velum-hosted-exchange-account/</a>
|
||||
<a href="" target="_blank"></a>
|
||||
</p>
|
||||
<p>
|
||||
If you need to download and install the Outlook client:</p>
|
||||
|
@ -10609,16 +10716,16 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
<tr>
|
||||
<td class="Label">
|
||||
Download URL:</td>
|
||||
<td><a href="http://www.virtuworks.net/saas-downloads/Outlook-2013-32bit.zip">Outlook 2013 - 32bit</a></td>
|
||||
<td><a href=""></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Label"></td>
|
||||
<td><a href="http://www.virtuworks.net/saas-downloads/Outlook-2013-64bit.zip">Outlook 2013 - 64bit</a></td>
|
||||
<td><a href=""></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Label">
|
||||
KEY:</td>
|
||||
<td>HPN4P-JKC89-VCCWD-24CD2-9P8H7</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
@ -10645,13 +10752,13 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
|
||||
<h1>Password Changes</h1>
|
||||
<p>
|
||||
Passwords can be changed at any time using Webmail or the <a href="https://controlpanel.virtuworks.net" target="_blank">Control Panel</a>.</p>
|
||||
Passwords can be changed at any time using Webmail or the <a href="" target="_blank">Control Panel</a>.</p>
|
||||
<h1>Control Panel</h1>
|
||||
<p>
|
||||
If you need to change the details of your account, you can easily do this using <a href="https://controlpanel.virtuworks.net" target="_blank">Control Panel</a>.</p>
|
||||
If you need to change the details of your account, you can easily do this using <a href="" target="_blank">Control Panel</a>.</p>
|
||||
<h1>Support</h1>
|
||||
<p>
|
||||
You have 2 options, email <a href="mailto:help@virtuworks.com">help@virtuworks.com</a> or use the web interface at <a href="http://www.virtuworks.com/support">http://www.virtuworks.com/support</a></p>
|
||||
You have 2 options, email <a href="mailto:"></a> or use the web interface at <a href=""></a></p>
|
||||
|
||||
</div>
|
||||
<!-- End Content -->
|
||||
|
@ -10679,9 +10786,9 @@ Set @ExchangeMailboxSetupLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/
|
|||
<table border="0" cellspacing="0" cellpadding="0" width="100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 9px; text-align: left; color: ##1666af; vertical-align: top;" width="33%"><a style="font-weight: bold; text-transform: uppercase; text-decoration: underline; color: ##1666af;" href="http://www.virtuworks.com">Visit VirtuWorks.com </a><br />Learn more about the services VirtuWorks can provide to improve your business.</td>
|
||||
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 9px; text-align: left; color: ##1666af; padding: 0px 10px 0px 10px; vertical-align: top;" width="34%"><a style="font-weight: bold; text-transform: uppercase; text-decoration: underline; color: ##1666af;" href="http://www.virtuworks.com/privacy-policy">Privacy Policy</a><br />VirtuWorks follows strict guidelines in protecting your privacy. Learn about our <a style="font-weight: bold; text-decoration: underline; color: ##1666af;" href="http://www.virtuworks.com/privacy-policy">Privacy Policy</a>.</td>
|
||||
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 9px; text-align: left; color: ##1666af; vertical-align: top;" width="33%"><a style="font-weight: bold; text-transform: uppercase; text-decoration: underline; color: ##1666af;" href="http://www.virtuworks.com/contact/">Contact Us</a><br />Questions? For more information, <a style="font-weight: bold; text-decoration: underline; color: ##1666af;" href="http://www.virtuworks.com/contact/">contact us</a>.</td>
|
||||
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 9px; text-align: left; color: ##1666af; vertical-align: top;" width="33%"><a style="font-weight: bold; text-transform: uppercase; text-decoration: underline; color: ##1666af;" href=""></a><br />Learn more about the services can provide to improve your business.</td>
|
||||
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 9px; text-align: left; color: ##1666af; padding: 0px 10px 0px 10px; vertical-align: top;" width="34%"><a style="font-weight: bold; text-transform: uppercase; text-decoration: underline; color: ##1666af;" href="">Privacy Policy</a><br /> follows strict guidelines in protecting your privacy. Learn about our <a style="font-weight: bold; text-decoration: underline; color: ##1666af;" href="">Privacy Policy</a>.</td>
|
||||
<td style="font-family: Arial, Helvetica, sans-serif; font-size: 9px; text-align: left; color: ##1666af; vertical-align: top;" width="33%"><a style="font-weight: bold; text-transform: uppercase; text-decoration: underline; color: ##1666af;" href="">Contact Us</a><br />Questions? For more information, <a style="font-weight: bold; text-decoration: underline; color: ##1666af;" href="">contact us</a>.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
@ -10720,7 +10827,7 @@ END
|
|||
GO
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'ExchangeMailboxSetupLetter' AND [PropertyName]= N'Subject' )
|
||||
BEGIN
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'Subject', N'Virtuworks Hosted Exchange Mailbox Setup')
|
||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'ExchangeMailboxSetupLetter', N'Subject', N' Hosted Exchange Mailbox Setup')
|
||||
END
|
||||
GO
|
||||
|
||||
|
@ -10730,7 +10837,7 @@ DECLARE @ExchangeMailboxSetupLetterTextBody nvarchar(2500)
|
|||
Set @ExchangeMailboxSetupLetterTextBody = N'<ad:if test="#Email#">
|
||||
Hello #Account.DisplayName#,
|
||||
|
||||
Thanks for choosing VirtuWorks as your Exchange hosting provider.
|
||||
Thanks for choosing as your Exchange hosting provider.
|
||||
</ad:if>
|
||||
<ad:if test="#not(PMM)#">
|
||||
User Accounts
|
||||
|
@ -10756,22 +10863,21 @@ In order for us to accept mail for your domain, you will need to point your MX r
|
|||
Webmail (OWA, Outlook Web Access)
|
||||
=================================
|
||||
|
||||
https://mail.virtuworks.net/owa
|
||||
|
||||
|
||||
=================================
|
||||
Outlook (Windows Clients)
|
||||
=================================
|
||||
|
||||
To configure Outlook 2010 to work with VirtuWorks servers, please reference:
|
||||
To configure Outlook 2010 to work with servers, please reference:
|
||||
|
||||
|
||||
https://portal.virtuworks.net/whmcs/knowledgebase.php?action=displayarticle&id=2
|
||||
|
||||
If you need to download and install the Outlook 2010 client:
|
||||
|
||||
Outlook 2010 Download URL:
|
||||
32 Bit - http://www.virtuworks.net/downloads/Outlook2010-32bit.zip
|
||||
64 Bit - http://www.virtuworks.net/downloads/Outlook2010-64bit.zip
|
||||
KEY: HXGFV-DY3HM-4W2BQ-3R7KQ-K8P49
|
||||
|
||||
KEY:
|
||||
|
||||
=================================
|
||||
ActiveSync, iPhone, iPad
|
||||
|
@ -10786,21 +10892,21 @@ Your username: #SamUsername#
|
|||
Password Changes
|
||||
=================================
|
||||
|
||||
Passwords can be changed at any time using Webmail or the Control Panel (https://controlpanel.virtuworks.net).
|
||||
Passwords can be changed at any time using Webmail or the Control Panel
|
||||
|
||||
|
||||
=================================
|
||||
Control Panel
|
||||
=================================
|
||||
|
||||
If you need to change the details of your account, you can easily do this using the Control Panel (https://controlpanel.virtuworks.net).
|
||||
If you need to change the details of your account, you can easily do this using the Control Panel
|
||||
|
||||
|
||||
=================================
|
||||
Support
|
||||
=================================
|
||||
|
||||
You have 2 options, email help@virtuworks.com or use the web interface at http://www.virtuworks.com/contact/'
|
||||
You have 2 options, email or use the web interface at '
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'ExchangeMailboxSetupLetter' AND [PropertyName]= N'TextBody' )
|
||||
BEGIN
|
||||
|
@ -12234,7 +12340,7 @@ SET @sqlSpace = @sqlSpace + 'SI.ItemID
|
|||
EA.ItemID AS ItemID,
|
||||
EA.AccountName as TextSearch,
|
||||
''ExchangeAccount'' as ColumnType,
|
||||
''ExchangeAccount'' as FullType,
|
||||
''ExchangeAccountMailbox'' as FullType,
|
||||
SI2.PackageID as PackageID,
|
||||
EA.AccountID as AccountID
|
||||
FROM @ItemsService AS I2
|
||||
|
@ -12330,4 +12436,144 @@ CLOSE @curSpace
|
|||
DEALLOCATE @curSpace
|
||||
CLOSE @curUsers
|
||||
DEALLOCATE @curUsers
|
||||
RETURN
|
||||
RETURN
|
||||
|
||||
|
||||
IF EXISTS (SELECT TOP 1 * FROM ServiceItemTypes WHERE DisplayName = 'SharePointEnterpriseSiteCollection')
|
||||
BEGIN
|
||||
DECLARE @item_type_id AS INT
|
||||
SELECT @item_type_id = ItemTypeId FROM ServiceItemTypes WHERE DisplayName = 'SharePointEnterpriseSiteCollection'
|
||||
UPDATE [dbo].[Quotas] SET ItemTypeID = @item_type_id WHERE QuotaId = 550
|
||||
END
|
||||
GO
|
||||
|
||||
-- OneTimePassword
|
||||
IF NOT EXISTS(select 1 from sys.columns COLS INNER JOIN sys.objects OBJS ON OBJS.object_id=COLS.object_id and OBJS.type='U' AND OBJS.name='Users' AND COLS.name='OneTimePasswordState')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Users] ADD
|
||||
[OneTimePasswordState] int NULL
|
||||
END
|
||||
GO
|
||||
|
||||
IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'SetUserOneTimePassword')
|
||||
DROP PROCEDURE SetUserOneTimePassword
|
||||
GO
|
||||
CREATE PROCEDURE [dbo].[SetUserOneTimePassword]
|
||||
(
|
||||
@UserID int,
|
||||
@Password nvarchar(200),
|
||||
@OneTimePasswordState int
|
||||
)
|
||||
AS
|
||||
UPDATE Users
|
||||
SET Password = @Password, OneTimePasswordState = @OneTimePasswordState
|
||||
WHERE UserID = @UserID
|
||||
RETURN
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[GetUserByUsernameInternally]
|
||||
(
|
||||
@Username nvarchar(50)
|
||||
)
|
||||
AS
|
||||
SELECT
|
||||
U.UserID,
|
||||
U.RoleID,
|
||||
U.StatusID,
|
||||
U.SubscriberNumber,
|
||||
U.LoginStatusId,
|
||||
U.FailedLogins,
|
||||
U.OwnerID,
|
||||
U.Created,
|
||||
U.Changed,
|
||||
U.IsDemo,
|
||||
U.Comments,
|
||||
U.IsPeer,
|
||||
U.Username,
|
||||
U.Password,
|
||||
U.FirstName,
|
||||
U.LastName,
|
||||
U.Email,
|
||||
U.SecondaryEmail,
|
||||
U.Address,
|
||||
U.City,
|
||||
U.State,
|
||||
U.Country,
|
||||
U.Zip,
|
||||
U.PrimaryPhone,
|
||||
U.SecondaryPhone,
|
||||
U.Fax,
|
||||
U.InstantMessenger,
|
||||
U.HtmlMail,
|
||||
U.CompanyName,
|
||||
U.EcommerceEnabled,
|
||||
U.[AdditionalParams],
|
||||
U.OneTimePasswordState
|
||||
FROM Users AS U
|
||||
WHERE U.Username = @Username
|
||||
|
||||
RETURN
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[GetUserByIdInternally]
|
||||
(
|
||||
@UserID int
|
||||
)
|
||||
AS
|
||||
SELECT
|
||||
U.UserID,
|
||||
U.RoleID,
|
||||
U.StatusID,
|
||||
U.SubscriberNumber,
|
||||
U.LoginStatusId,
|
||||
U.FailedLogins,
|
||||
U.OwnerID,
|
||||
U.Created,
|
||||
U.Changed,
|
||||
U.IsDemo,
|
||||
U.Comments,
|
||||
U.IsPeer,
|
||||
U.Username,
|
||||
U.Password,
|
||||
U.FirstName,
|
||||
U.LastName,
|
||||
U.Email,
|
||||
U.SecondaryEmail,
|
||||
U.Address,
|
||||
U.City,
|
||||
U.State,
|
||||
U.Country,
|
||||
U.Zip,
|
||||
U.PrimaryPhone,
|
||||
U.SecondaryPhone,
|
||||
U.Fax,
|
||||
U.InstantMessenger,
|
||||
U.HtmlMail,
|
||||
U.CompanyName,
|
||||
U.EcommerceEnabled,
|
||||
U.[AdditionalParams],
|
||||
U.OneTimePasswordState
|
||||
FROM Users AS U
|
||||
WHERE U.UserID = @UserID
|
||||
|
||||
RETURN
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[ChangeUserPassword]
|
||||
(
|
||||
@ActorID int,
|
||||
@UserID int,
|
||||
@Password nvarchar(200)
|
||||
)
|
||||
AS
|
||||
|
||||
-- check actor rights
|
||||
IF dbo.CanUpdateUserDetails(@ActorID, @UserID) = 0
|
||||
RETURN
|
||||
|
||||
UPDATE Users
|
||||
SET Password = @Password, OneTimePasswordState = 0
|
||||
WHERE UserID = @UserID
|
||||
|
||||
RETURN
|
||||
GO
|
|
@ -67,6 +67,9 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
public const int ERROR_USER_ACCOUNT_DISABLED = -114;
|
||||
public const int ERROR_USER_ACCOUNT_LOCKEDOUT = -115;
|
||||
|
||||
public const int ERROR_USER_EXPIRED_ONETIMEPASSWORD = -116;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Packages
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
// Copyright (c) 2015, 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.EnterpriseServer
|
||||
{
|
||||
public class BusinessSuccessCodes
|
||||
{
|
||||
#region Users
|
||||
|
||||
public const int SUCCESS_USER_ONETIMEPASSWORD = 100;
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.EnterpriseServer
|
||||
{
|
||||
public enum OneTimePasswordStates
|
||||
{
|
||||
None = 0,
|
||||
Active = 1,
|
||||
Expired = 2,
|
||||
}
|
||||
}
|
|
@ -385,68 +385,19 @@ namespace WebsitePanel.EnterpriseServer
|
|||
public class UserInfoInternal : UserInfo
|
||||
{
|
||||
private string password;
|
||||
private string oneTimePassword;
|
||||
private OneTimePasswordStates oneTimePasswordState;
|
||||
|
||||
public string Password
|
||||
{
|
||||
get { return this.password; }
|
||||
set { this.password = value; }
|
||||
}
|
||||
|
||||
public OneTimePasswordStates OneTimePasswordState
|
||||
{
|
||||
get { return oneTimePasswordState; }
|
||||
set { oneTimePasswordState = value; }
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esAuthentication.asmx.cs(51): public int AuthenticateUser(string username, string password, string ip)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esAuthentication.asmx.cs(57): public UserInfo GetUserByUsernamePassword(string username, string password, string ip)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esAuthentication.asmx.cs(63): public int ChangeUserPasswordByUsername(string username, string oldPassword, string newPassword, string ip)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esAuthentication.asmx.cs(69): public int SendPasswordReminder(string username, string ip)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esAuthentication.asmx.cs(81): public int SetupControlPanelAccounts(string passwordA, string passwordB, string ip)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esBlackBerry.asmx.cs(92): public ResultObject SetActivationPasswordWithExpirationTime(int itemId, int accountId, string password, int time)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esExchangeServer.asmx.cs(221): public bool CheckAccountCredentials(int itemId, string email, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esExchangeServer.asmx.cs(231): public int CreateMailbox(int itemId, int accountId, ExchangeAccountType accountType, string accountName, string displayName,
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esExchangeServer.asmx.cs(231): string name, string domain, string password, bool sendSetupInstructions, string setupInstructionMailAddress, int mailboxPlanId, int archivedPlanId, string subscriberNumber, bool EnableArchiving)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(195): public ResultObject SendResetUserPasswordLinkSms(int itemId, int accountId, string reason, string phoneTo = null)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(197): return OrganizationController.SendResetUserPasswordLinkSms(itemId, accountId, reason, phoneTo);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(202): public ResultObject SendResetUserPasswordPincodeSms(Guid token, string phoneTo = null)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(204): return OrganizationController.SendResetUserPasswordPincodeSms(token, phoneTo);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(259): public int CreateUser(int itemId, string displayName, string name, string domain, string password, string subscriberNumber, bool sendNotification, string to)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(262): return OrganizationController.CreateUser(itemId, displayName, name, domain, password, subscriberNumber, true, sendNotification, to, out accountName);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(266): public int ImportUser(int itemId, string accountName, string displayName, string name, string domain, string password, string subscriberNumber)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(268): return OrganizationController.ImportUser(itemId, accountName, displayName, name, domain, password, subscriberNumber);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(293): string password, bool hideAddressBook, bool disabled, bool locked, string firstName, string initials,
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(298): bool userMustChangePassword)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(301): password, hideAddressBook, disabled, locked, firstName, initials,
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(305): webPage, notes, externalEmail, subscriberNumber, levelId, isVIP, userMustChangePassword);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(318): public int SetUserPassword(int itemId, int accountId, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(320): return OrganizationController.SetUserPassword(itemId, accountId, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(353): public PasswordPolicyResult GetPasswordPolicy(int itemId)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(355): return OrganizationController.GetPasswordPolicy(itemId);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(359): public void SendResetUserPasswordEmail(int itemId, int accountId, string reason, string mailTo, bool finalStep)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esOrganizations.asmx.cs(361): OrganizationController.SendResetUserPasswordEmail(itemId, accountId, reason, mailTo, finalStep);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esPackages.asmx.cs(449): public int CreateUserWizard(int parentPackageId, string username, string password,
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esPackages.asmx.cs(456): return UserCreationWizard.CreateUserAccount(parentPackageId, username, password,
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esServers.asmx.cs(108): public int CheckServerAvailable(string serverUrl, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esServers.asmx.cs(110): return ServerController.CheckServerAvailable(serverUrl, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esServers.asmx.cs(126): public int UpdateServerConnectionPassword(int serverId, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esServers.asmx.cs(128): return ServerController.UpdateServerConnectionPassword(serverId, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esServers.asmx.cs(132): public int UpdateServerADPassword(int serverId, string adPassword)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esServers.asmx.cs(134): return ServerController.UpdateServerADPassword(serverId, adPassword);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esUsers.asmx.cs(152): string password,
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esUsers.asmx.cs(178): user.Password = password;
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esUsers.asmx.cs(272): public int ChangeUserPassword(int userId, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esUsers.asmx.cs(274): return UserController.ChangeUserPassword(userId, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(127): return WebServerController.InstallFrontPage(siteItemId, username, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(137): public int ChangeFrontPagePassword(int siteItemId, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(139): return WebServerController.ChangeFrontPagePassword(siteItemId, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(337): public ResultObject GrantWebDeployPublishingAccess(int siteItemId, string accountName, string accountPassword)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(339): return WebServerController.GrantWebDeployPublishingAccess(siteItemId, accountName, accountPassword);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(361): public ResultObject ChangeWebDeployPublishingPassword(int siteItemId, string newAccountPassword)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(363): return WebServerController.ChangeWebDeployPublishingPassword(siteItemId, newAccountPassword);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(536): public ResultObject GrantWebManagementAccess(int siteItemId, string accountName, string accountPassword)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(538): return WebServerController.GrantWebManagementAccess(siteItemId, accountName, accountPassword);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(548): public ResultObject ChangeWebManagementAccessPassword(int siteItemId, string accountPassword)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(550): return WebServerController.ChangeWebManagementAccessPassword(siteItemId, accountPassword);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(567): public ResultObject InstallPfx(byte[] certificate, int siteItemId, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(569): return WebServerController.InstallPfx(certificate, siteItemId, password);
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(597): public byte[] ExportCertificate(int siteId, string serialNumber, string password)
|
||||
//C:\Work\WSPExpert\WebsitePanel\Sources\WebsitePanel.EnterpriseServer\esWebServers.asmx.cs(599): return WebServerController.ExportCertificate(siteId, serialNumber, password);
|
||||
}
|
|
@ -67,6 +67,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
public const string RDS_POLICY = "RdsPolicy";
|
||||
public const string USER_PASSWORD_EXPIRATION_LETTER = "UserPasswordExpirationLetter";
|
||||
public const string USER_PASSWORD_RESET_LETTER = "UserPasswordResetLetter";
|
||||
public const string USER_PASSWORD_REQUEST_LETTER = "OrganizationUserPasswordRequestLetter";
|
||||
public const string USER_PASSWORD_RESET_PINCODE_LETTER = "UserPasswordResetPincodeLetter";
|
||||
public const string HOSTED_ORGANIZATION_PASSWORD_POLICY = "MailboxPasswordPolicy";
|
||||
|
||||
|
|
|
@ -69,6 +69,7 @@
|
|||
<Compile Include="..\VersionInfo.cs">
|
||||
<Link>VersionInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="Common\BusinessSuccessCodes.cs" />
|
||||
<Compile Include="Common\BusinessErrorCodes.cs" />
|
||||
<Compile Include="Common\GenericStringResult.cs">
|
||||
<SubType>Code</SubType>
|
||||
|
@ -165,6 +166,7 @@
|
|||
<Compile Include="Tasks\BackgroundTask.cs" />
|
||||
<Compile Include="Tasks\BackgroundTaskLogRecord.cs" />
|
||||
<Compile Include="Tasks\BackgroundTaskStatus.cs" />
|
||||
<Compile Include="Users\OneTimePasswordStates.cs" />
|
||||
<Compile Include="Users\UserInfo.cs" />
|
||||
<Compile Include="Users\UserLoginStatus.cs" />
|
||||
<Compile Include="Users\UsernamePolicy.cs" />
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
|
||||
//
|
||||
|
||||
|
||||
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||
using WebsitePanel.Providers;
|
||||
using WebsitePanel.Providers.Common;
|
||||
|
@ -37,6 +36,10 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
|
||||
public partial class esOrganizations : Microsoft.Web.Services3.WebServicesClientProtocol {
|
||||
|
||||
private System.Threading.SendOrPostCallback UpdateSupportServiceLevelOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback DeleteSupportServiceLevelOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback AddSupportServiceLevelOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetSupportServiceLevelOperationCompleted;
|
||||
|
@ -93,6 +96,10 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
|
||||
private System.Threading.SendOrPostCallback SendResetUserPasswordPincodeEmailOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback SendUserPasswordRequestSmsOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback SendUserPasswordRequestEmailOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback AddOrganizationDomainOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback ChangeOrganizationDomainTypeOperationCompleted;
|
||||
|
@ -165,15 +172,17 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
|
||||
private System.Threading.SendOrPostCallback GetSupportServiceLevelsOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback UpdateSupportServiceLevelOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback DeleteSupportServiceLevelOperationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public esOrganizations() {
|
||||
this.Url = "http://localhost:9002/esOrganizations.asmx";
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public event UpdateSupportServiceLevelCompletedEventHandler UpdateSupportServiceLevelCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event DeleteSupportServiceLevelCompletedEventHandler DeleteSupportServiceLevelCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event AddSupportServiceLevelCompletedEventHandler AddSupportServiceLevelCompleted;
|
||||
|
||||
|
@ -258,6 +267,12 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
/// <remarks/>
|
||||
public event SendResetUserPasswordPincodeEmailCompletedEventHandler SendResetUserPasswordPincodeEmailCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event SendUserPasswordRequestSmsCompletedEventHandler SendUserPasswordRequestSmsCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event SendUserPasswordRequestEmailCompletedEventHandler SendUserPasswordRequestEmailCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event AddOrganizationDomainCompletedEventHandler AddOrganizationDomainCompleted;
|
||||
|
||||
|
@ -367,10 +382,90 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
public event GetSupportServiceLevelsCompletedEventHandler GetSupportServiceLevelsCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event UpdateSupportServiceLevelCompletedEventHandler UpdateSupportServiceLevelCompleted;
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UpdateSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public void UpdateSupportServiceLevel(int levelID, string levelName, string levelDescription) {
|
||||
this.Invoke("UpdateSupportServiceLevel", new object[] {
|
||||
levelID,
|
||||
levelName,
|
||||
levelDescription});
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public event DeleteSupportServiceLevelCompletedEventHandler DeleteSupportServiceLevelCompleted;
|
||||
public System.IAsyncResult BeginUpdateSupportServiceLevel(int levelID, string levelName, string levelDescription, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("UpdateSupportServiceLevel", new object[] {
|
||||
levelID,
|
||||
levelName,
|
||||
levelDescription}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void EndUpdateSupportServiceLevel(System.IAsyncResult asyncResult) {
|
||||
this.EndInvoke(asyncResult);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void UpdateSupportServiceLevelAsync(int levelID, string levelName, string levelDescription) {
|
||||
this.UpdateSupportServiceLevelAsync(levelID, levelName, levelDescription, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void UpdateSupportServiceLevelAsync(int levelID, string levelName, string levelDescription, object userState) {
|
||||
if ((this.UpdateSupportServiceLevelOperationCompleted == null)) {
|
||||
this.UpdateSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateSupportServiceLevelOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("UpdateSupportServiceLevel", new object[] {
|
||||
levelID,
|
||||
levelName,
|
||||
levelDescription}, this.UpdateSupportServiceLevelOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnUpdateSupportServiceLevelOperationCompleted(object arg) {
|
||||
if ((this.UpdateSupportServiceLevelCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.UpdateSupportServiceLevelCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public ResultObject DeleteSupportServiceLevel(int levelId) {
|
||||
object[] results = this.Invoke("DeleteSupportServiceLevel", new object[] {
|
||||
levelId});
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginDeleteSupportServiceLevel(int levelId, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("DeleteSupportServiceLevel", new object[] {
|
||||
levelId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public ResultObject EndDeleteSupportServiceLevel(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void DeleteSupportServiceLevelAsync(int levelId) {
|
||||
this.DeleteSupportServiceLevelAsync(levelId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void DeleteSupportServiceLevelAsync(int levelId, object userState) {
|
||||
if ((this.DeleteSupportServiceLevelOperationCompleted == null)) {
|
||||
this.DeleteSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteSupportServiceLevelOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("DeleteSupportServiceLevel", new object[] {
|
||||
levelId}, this.DeleteSupportServiceLevelOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnDeleteSupportServiceLevelOperationCompleted(object arg) {
|
||||
if ((this.DeleteSupportServiceLevelCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.DeleteSupportServiceLevelCompleted(this, new DeleteSupportServiceLevelCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
|
@ -1603,6 +1698,107 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SendUserPasswordRequestSms", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public ResultObject SendUserPasswordRequestSms(int itemId, int accountId, string reason, string phoneTo) {
|
||||
object[] results = this.Invoke("SendUserPasswordRequestSms", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
reason,
|
||||
phoneTo});
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginSendUserPasswordRequestSms(int itemId, int accountId, string reason, string phoneTo, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("SendUserPasswordRequestSms", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
reason,
|
||||
phoneTo}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public ResultObject EndSendUserPasswordRequestSms(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void SendUserPasswordRequestSmsAsync(int itemId, int accountId, string reason, string phoneTo) {
|
||||
this.SendUserPasswordRequestSmsAsync(itemId, accountId, reason, phoneTo, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void SendUserPasswordRequestSmsAsync(int itemId, int accountId, string reason, string phoneTo, object userState) {
|
||||
if ((this.SendUserPasswordRequestSmsOperationCompleted == null)) {
|
||||
this.SendUserPasswordRequestSmsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendUserPasswordRequestSmsOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("SendUserPasswordRequestSms", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
reason,
|
||||
phoneTo}, this.SendUserPasswordRequestSmsOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnSendUserPasswordRequestSmsOperationCompleted(object arg) {
|
||||
if ((this.SendUserPasswordRequestSmsCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.SendUserPasswordRequestSmsCompleted(this, new SendUserPasswordRequestSmsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SendUserPasswordRequestEmail", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public void SendUserPasswordRequestEmail(int itemId, int accountId, string reason, string mailTo, bool finalStep) {
|
||||
this.Invoke("SendUserPasswordRequestEmail", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
reason,
|
||||
mailTo,
|
||||
finalStep});
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginSendUserPasswordRequestEmail(int itemId, int accountId, string reason, string mailTo, bool finalStep, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("SendUserPasswordRequestEmail", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
reason,
|
||||
mailTo,
|
||||
finalStep}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void EndSendUserPasswordRequestEmail(System.IAsyncResult asyncResult) {
|
||||
this.EndInvoke(asyncResult);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void SendUserPasswordRequestEmailAsync(int itemId, int accountId, string reason, string mailTo, bool finalStep) {
|
||||
this.SendUserPasswordRequestEmailAsync(itemId, accountId, reason, mailTo, finalStep, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void SendUserPasswordRequestEmailAsync(int itemId, int accountId, string reason, string mailTo, bool finalStep, object userState) {
|
||||
if ((this.SendUserPasswordRequestEmailOperationCompleted == null)) {
|
||||
this.SendUserPasswordRequestEmailOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendUserPasswordRequestEmailOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("SendUserPasswordRequestEmail", new object[] {
|
||||
itemId,
|
||||
accountId,
|
||||
reason,
|
||||
mailTo,
|
||||
finalStep}, this.SendUserPasswordRequestEmailOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnSendUserPasswordRequestEmailOperationCompleted(object arg) {
|
||||
if ((this.SendUserPasswordRequestEmailCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.SendUserPasswordRequestEmailCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddOrganizationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public int AddOrganizationDomain(int itemId, string domainName) {
|
||||
|
@ -3517,98 +3713,42 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UpdateSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public void UpdateSupportServiceLevel(int levelID, string levelName, string levelDescription) {
|
||||
this.Invoke("UpdateSupportServiceLevel", new object[] {
|
||||
levelID,
|
||||
levelName,
|
||||
levelDescription});
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginUpdateSupportServiceLevel(int levelID, string levelName, string levelDescription, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("UpdateSupportServiceLevel", new object[] {
|
||||
levelID,
|
||||
levelName,
|
||||
levelDescription}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void EndUpdateSupportServiceLevel(System.IAsyncResult asyncResult) {
|
||||
this.EndInvoke(asyncResult);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void UpdateSupportServiceLevelAsync(int levelID, string levelName, string levelDescription) {
|
||||
this.UpdateSupportServiceLevelAsync(levelID, levelName, levelDescription, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void UpdateSupportServiceLevelAsync(int levelID, string levelName, string levelDescription, object userState) {
|
||||
if ((this.UpdateSupportServiceLevelOperationCompleted == null)) {
|
||||
this.UpdateSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateSupportServiceLevelOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("UpdateSupportServiceLevel", new object[] {
|
||||
levelID,
|
||||
levelName,
|
||||
levelDescription}, this.UpdateSupportServiceLevelOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnUpdateSupportServiceLevelOperationCompleted(object arg) {
|
||||
if ((this.UpdateSupportServiceLevelCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.UpdateSupportServiceLevelCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public ResultObject DeleteSupportServiceLevel(int levelId) {
|
||||
object[] results = this.Invoke("DeleteSupportServiceLevel", new object[] {
|
||||
levelId});
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginDeleteSupportServiceLevel(int levelId, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("DeleteSupportServiceLevel", new object[] {
|
||||
levelId}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public ResultObject EndDeleteSupportServiceLevel(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void DeleteSupportServiceLevelAsync(int levelId) {
|
||||
this.DeleteSupportServiceLevelAsync(levelId, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void DeleteSupportServiceLevelAsync(int levelId, object userState) {
|
||||
if ((this.DeleteSupportServiceLevelOperationCompleted == null)) {
|
||||
this.DeleteSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteSupportServiceLevelOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("DeleteSupportServiceLevel", new object[] {
|
||||
levelId}, this.DeleteSupportServiceLevelOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnDeleteSupportServiceLevelOperationCompleted(object arg) {
|
||||
if ((this.DeleteSupportServiceLevelCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.DeleteSupportServiceLevelCompleted(this, new DeleteSupportServiceLevelCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void UpdateSupportServiceLevelCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void DeleteSupportServiceLevelCompletedEventHandler(object sender, DeleteSupportServiceLevelCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class DeleteSupportServiceLevelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal DeleteSupportServiceLevelCompletedEventArgs(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 AddSupportServiceLevelCompletedEventHandler(object sender, AddSupportServiceLevelCompletedEventArgs e);
|
||||
|
@ -4227,6 +4367,36 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void SendUserPasswordRequestSmsCompletedEventHandler(object sender, SendUserPasswordRequestSmsCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class SendUserPasswordRequestSmsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal SendUserPasswordRequestSmsCompletedEventArgs(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 SendUserPasswordRequestEmailCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void AddOrganizationDomainCompletedEventHandler(object sender, AddOrganizationDomainCompletedEventArgs e);
|
||||
|
@ -5096,34 +5266,4 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void UpdateSupportServiceLevelCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void DeleteSupportServiceLevelCompletedEventHandler(object sender, DeleteSupportServiceLevelCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class DeleteSupportServiceLevelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal DeleteSupportServiceLevelCompletedEventArgs(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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,8 +20,8 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
using System.Diagnostics;
|
||||
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.EnterpriseServer.Base.RDS;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
using WebsitePanel.EnterpriseServer.Base.RDS;
|
||||
|
||||
|
||||
/// <remarks/>
|
||||
|
@ -139,6 +139,8 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
|
||||
private System.Threading.SendOrPostCallback ShadowSessionOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback ImportCollectionOperationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public esRemoteDesktopServices() {
|
||||
this.Url = "http://localhost:9002/esRemoteDesktopServices.asmx";
|
||||
|
@ -306,6 +308,9 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
/// <remarks/>
|
||||
public event ShadowSessionCompletedEventHandler ShadowSessionCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event ImportCollectionCompletedEventHandler ImportCollectionCompleted;
|
||||
|
||||
/// <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)]
|
||||
public RdsCollection GetRdsCollection(int collectionId) {
|
||||
|
@ -2723,6 +2728,50 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/enterpriseserver/ImportCollection", 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 ImportCollection(int itemId, string collectionName) {
|
||||
object[] results = this.Invoke("ImportCollection", new object[] {
|
||||
itemId,
|
||||
collectionName});
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginImportCollection(int itemId, string collectionName, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("ImportCollection", new object[] {
|
||||
itemId,
|
||||
collectionName}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public ResultObject EndImportCollection(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((ResultObject)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void ImportCollectionAsync(int itemId, string collectionName) {
|
||||
this.ImportCollectionAsync(itemId, collectionName, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void ImportCollectionAsync(int itemId, string collectionName, object userState) {
|
||||
if ((this.ImportCollectionOperationCompleted == null)) {
|
||||
this.ImportCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnImportCollectionOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("ImportCollection", new object[] {
|
||||
itemId,
|
||||
collectionName}, this.ImportCollectionOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnImportCollectionOperationCompleted(object arg) {
|
||||
if ((this.ImportCollectionCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.ImportCollectionCompleted(this, new ImportCollectionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
|
@ -4132,4 +4181,30 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void ImportCollectionCompletedEventHandler(object sender, ImportCollectionCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class ImportCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal ImportCollectionCompletedEventArgs(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]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,8 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
|
||||
private System.Threading.SendOrPostCallback GetSystemSettingsActiveOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback CheckIsTwilioEnabledOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback SetSystemSettingsOperationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
|
@ -44,6 +46,9 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
/// <remarks/>
|
||||
public event GetSystemSettingsActiveCompletedEventHandler GetSystemSettingsActiveCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event CheckIsTwilioEnabledCompletedEventHandler CheckIsTwilioEnabledCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event SetSystemSettingsCompletedEventHandler SetSystemSettingsCompleted;
|
||||
|
||||
|
@ -132,6 +137,44 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckIsTwilioEnabled", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public bool CheckIsTwilioEnabled() {
|
||||
object[] results = this.Invoke("CheckIsTwilioEnabled", new object[0]);
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginCheckIsTwilioEnabled(System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("CheckIsTwilioEnabled", new object[0], callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public bool EndCheckIsTwilioEnabled(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((bool)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckIsTwilioEnabledAsync() {
|
||||
this.CheckIsTwilioEnabledAsync(null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void CheckIsTwilioEnabledAsync(object userState) {
|
||||
if ((this.CheckIsTwilioEnabledOperationCompleted == null)) {
|
||||
this.CheckIsTwilioEnabledOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckIsTwilioEnabledOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("CheckIsTwilioEnabled", new object[0], this.CheckIsTwilioEnabledOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnCheckIsTwilioEnabledOperationCompleted(object arg) {
|
||||
if ((this.CheckIsTwilioEnabledCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.CheckIsTwilioEnabledCompleted(this, new CheckIsTwilioEnabledCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetSystemSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||
public int SetSystemSettings(string settingsName, SystemSettings settings) {
|
||||
|
@ -234,6 +277,32 @@ namespace WebsitePanel.EnterpriseServer {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void CheckIsTwilioEnabledCompletedEventHandler(object sender, CheckIsTwilioEnabledCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class CheckIsTwilioEnabledCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal CheckIsTwilioEnabledCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public bool Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((bool)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void SetSystemSettingsCompletedEventHandler(object sender, SetSystemSettingsCompletedEventArgs e);
|
||||
|
|
|
@ -382,6 +382,15 @@ namespace WebsitePanel.EnterpriseServer
|
|||
new SqlParameter("@password", password));
|
||||
}
|
||||
|
||||
public static void SetUserOneTimePassword(int userId, string password, int auths)
|
||||
{
|
||||
SqlHelper.ExecuteNonQuery(ConnectionString, CommandType.StoredProcedure,
|
||||
ObjectQualifier + "SetUserOneTimePassword",
|
||||
new SqlParameter("@UserID", userId),
|
||||
new SqlParameter("@Password", password),
|
||||
new SqlParameter("@OneTimePasswordState", auths));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region User Settings
|
||||
|
|
|
@ -1632,6 +1632,73 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
public static ResultObject SendUserPasswordRequestSms(int itemId, int accountId, string reason, string phoneTo = null)
|
||||
{
|
||||
var result = TaskManager.StartResultTask<ResultObject>("ORGANIZATION", "SEND_USER_PASSWORD_REQUEST_SMS",
|
||||
itemId);
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
// load organization
|
||||
Organization org = GetOrganization(itemId);
|
||||
|
||||
if (org == null)
|
||||
{
|
||||
throw new Exception(string.Format("Organization not found (ItemId = {0})", itemId));
|
||||
}
|
||||
|
||||
UserInfo owner = PackageController.GetPackageOwner(org.PackageId);
|
||||
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(itemId, accountId);
|
||||
|
||||
user.ItemId = itemId;
|
||||
|
||||
if (string.IsNullOrEmpty(phoneTo))
|
||||
{
|
||||
phoneTo = user.MobilePhone;
|
||||
}
|
||||
|
||||
UserSettings settings = UserController.GetUserSettings(owner.UserId, UserSettings.USER_PASSWORD_REQUEST_LETTER);
|
||||
|
||||
|
||||
string body = settings["SMSBody"];
|
||||
|
||||
var pincode = GeneratePincode();
|
||||
Guid token;
|
||||
|
||||
var items = new Hashtable();
|
||||
|
||||
items["passwordResetLink"] = GenerateUserPasswordResetLink(user.ItemId, user.AccountId, out token, pincode);
|
||||
|
||||
body = PackageController.EvaluateTemplate(body, items);
|
||||
|
||||
TaskManager.Write("Organization ID : " + user.ItemId);
|
||||
TaskManager.Write("Account : " + user.DisplayName);
|
||||
TaskManager.Write("Reason : " + reason);
|
||||
TaskManager.Write("SmsTo : " + phoneTo);
|
||||
|
||||
// send Sms message
|
||||
var response = SendSms(phoneTo, body);
|
||||
|
||||
if (response.RestException != null)
|
||||
{
|
||||
throw new Exception(response.RestException.Message);
|
||||
}
|
||||
|
||||
SetAccessTokenResponse(token, pincode);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
TaskManager.WriteError(ex);
|
||||
TaskManager.CompleteResultTask(result);
|
||||
result.AddError("", ex);
|
||||
return result;
|
||||
}
|
||||
|
||||
TaskManager.CompleteResultTask();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static ResultObject SendResetUserPasswordPincodeSms(Guid token, string phoneTo = null)
|
||||
{
|
||||
var result = TaskManager.StartResultTask<ResultObject>("ORGANIZATION", "SEND_USER_PASSWORD_RESET_SMS_PINCODE");
|
||||
|
@ -1851,6 +1918,33 @@ namespace WebsitePanel.EnterpriseServer
|
|||
SendUserPasswordEmail(owner, user, reason, mailTo, logoUrl, UserSettings.USER_PASSWORD_RESET_LETTER, "USER_PASSWORD_RESET_LETTER", finalStep);
|
||||
}
|
||||
|
||||
public static void SendUserPasswordRequestEmail(int itemId, int accountId, string reason, string mailTo, bool finalStep)
|
||||
{
|
||||
// load organization
|
||||
Organization org = GetOrganization(itemId);
|
||||
|
||||
if (org == null)
|
||||
{
|
||||
throw new Exception(string.Format("Organization not found (ItemId = {0})", itemId));
|
||||
}
|
||||
|
||||
UserInfo owner = PackageController.GetPackageOwner(org.PackageId);
|
||||
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(itemId, accountId);
|
||||
|
||||
user.ItemId = itemId;
|
||||
|
||||
if (string.IsNullOrEmpty(mailTo))
|
||||
{
|
||||
mailTo = user.PrimaryEmailAddress;
|
||||
}
|
||||
|
||||
var generalSettings = OrganizationController.GetOrganizationGeneralSettings(itemId);
|
||||
|
||||
var logoUrl = generalSettings != null ? generalSettings.OrganizationLogoUrl : string.Empty;
|
||||
|
||||
SendUserPasswordEmail(owner, user, reason, mailTo, logoUrl, UserSettings.USER_PASSWORD_REQUEST_LETTER, "USER_PASSWORD_REQUEST_LETTER", finalStep);
|
||||
}
|
||||
|
||||
public static void SendUserExpirationPasswordEmail(UserInfo owner, OrganizationUser user, string reason,
|
||||
string mailTo, string logoUrl)
|
||||
{
|
||||
|
@ -1919,8 +2013,6 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static AccessToken GetAccessToken(Guid accessToken, AccessTokenTypes type)
|
||||
{
|
||||
return ObjectUtils.FillObjectFromDataReader<AccessToken>(DataProvider.GetAccessTokenByAccessToken(accessToken, type));
|
||||
|
|
|
@ -137,7 +137,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
public static List<RdsServer> GetCollectionRdsServers(int collectionId)
|
||||
{
|
||||
{
|
||||
return GetCollectionRdsServersInternal(collectionId);
|
||||
}
|
||||
|
||||
|
@ -304,12 +304,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
public static List<ServiceInfo> GetRdsServices()
|
||||
{
|
||||
return GetRdsServicesInternal();
|
||||
}
|
||||
|
||||
private static List<ServiceInfo> GetRdsServicesInternal()
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataSet<ServiceInfo>(DataProvider.GetServicesByGroupName(SecurityContext.User.UserId, ResourceGroups.RDS));
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetRdsSetupLetter(int itemId, int? accountId)
|
||||
{
|
||||
|
@ -336,6 +331,80 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return ShadowSessionInternal(itemId, sessionId, control);
|
||||
}
|
||||
|
||||
public static ResultObject ImportCollection(int itemId, string collectionName)
|
||||
{
|
||||
return ImportCollectionInternal(itemId, collectionName);
|
||||
}
|
||||
|
||||
private static ResultObject ImportCollectionInternal(int itemId, string collectionName)
|
||||
{
|
||||
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "SHADOW_RDS_SESSION");
|
||||
|
||||
try
|
||||
{
|
||||
Organization org = OrganizationController.GetOrganization(itemId);
|
||||
|
||||
if (org == null)
|
||||
{
|
||||
result.IsSuccess = false;
|
||||
result.AddError("IMPORT_RDS_COLLECTION", new NullReferenceException("Organization not found"));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
var existingCollections = GetRdsCollectionsPaged(itemId, "", "", "", 0, Int32.MaxValue).Collections;
|
||||
|
||||
if (existingCollections.Select(e => e.Name.ToLower()).Contains(collectionName.ToLower()))
|
||||
{
|
||||
result.IsSuccess = false;
|
||||
throw new InvalidOperationException(string.Format("Collection {0} already exists in database", collectionName));
|
||||
}
|
||||
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
var collection = rds.GetExistingCollection(collectionName);
|
||||
var newCollection = new RdsCollection
|
||||
{
|
||||
Name = collection.CollectionName,
|
||||
Description = collection.Description,
|
||||
DisplayName = collection.CollectionName
|
||||
};
|
||||
|
||||
newCollection.Id = DataProvider.AddRDSCollection(itemId, newCollection.Name, newCollection.Description, newCollection.DisplayName);
|
||||
newCollection.Settings = RemoteDesktopServicesHelpers.ParseCollectionSettings(collection.CollectionSettings);
|
||||
newCollection.Settings.RdsCollectionId = newCollection.Id;
|
||||
newCollection.Settings.Id = DataProvider.AddRdsCollectionSettings(newCollection.Settings);
|
||||
var existingSessionHosts = GetRdsServersPagedInternal("", "", "", 1, 1000).Servers;
|
||||
RemoteDesktopServicesHelpers.FillSessionHosts(collection.SessionHosts, existingSessionHosts, newCollection.Id, itemId);
|
||||
newCollection.Servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(newCollection.Id)).ToList();
|
||||
UserInfo user = PackageController.GetPackageOwner(org.PackageId);
|
||||
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(itemId, null, null, null, 0, Int32.MaxValue).PageUsers.Select(u => u.SamAccountName.Split('\\').Last().ToLower());
|
||||
var newUsers = organizationUsers.Where(x => collection.UserGroups.Select(a => a.PropertyValue.ToString().Split('\\').Last().ToLower()).Contains(x));
|
||||
|
||||
rds.ImportCollection(org.OrganizationId, newCollection, newUsers.ToArray());
|
||||
|
||||
var emptySettings = RemoteDesktopServicesHelpers.GetEmptyGpoSettings();
|
||||
string xml = RemoteDesktopServicesHelpers.GetSettingsXml(emptySettings);
|
||||
DataProvider.UpdateRdsServerSettings(newCollection.Id, string.Format("Collection-{0}-Settings", newCollection.Id), xml);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw TaskManager.WriteError(ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (!result.IsSuccess)
|
||||
{
|
||||
TaskManager.CompleteResultTask(result);
|
||||
}
|
||||
else
|
||||
{
|
||||
TaskManager.CompleteResultTask();
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static ResultObject ShadowSessionInternal(int itemId, string sessionId, bool control)
|
||||
{
|
||||
var result = TaskManager.StartResultTask<ResultObject>("REMOTE_DESKTOP_SERVICES", "SHADOW_RDS_SESSION");
|
||||
|
@ -352,7 +421,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
rds.ShadowSession(sessionId, control);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -405,10 +474,10 @@ namespace WebsitePanel.EnterpriseServer
|
|||
try
|
||||
{
|
||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(serverId));
|
||||
var rds = GetRemoteDesktopServices(GetRdsServiceId(collection.ItemId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(GetRdsServiceId(collection.ItemId));
|
||||
Organization org = OrganizationController.GetOrganization(collection.ItemId);
|
||||
rds.ApplyGPO(org.OrganizationId, collection.Name, settings);
|
||||
string xml = GetSettingsXml(settings);
|
||||
string xml = RemoteDesktopServicesHelpers.GetSettingsXml(settings);
|
||||
|
||||
DataProvider.UpdateRdsServerSettings(serverId, settingsName, xml);
|
||||
|
||||
|
@ -442,8 +511,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
string result = EvaluateMailboxTemplate(body, org, accountId, itemId);
|
||||
|
||||
string result = RemoteDesktopServicesHelpers.EvaluateMailboxTemplate(body, org, accountId, itemId);
|
||||
|
||||
return user.HtmlMail ? result : result.Replace("\n", "<br/>");
|
||||
}
|
||||
|
@ -492,9 +561,9 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
to = user.Email;
|
||||
}
|
||||
|
||||
subject = EvaluateMailboxTemplate(subject, org, accountId, itemId);
|
||||
body = EvaluateMailboxTemplate(body, org, accountId, itemId);
|
||||
|
||||
subject = RemoteDesktopServicesHelpers.EvaluateMailboxTemplate(subject, org, accountId, itemId);
|
||||
body = RemoteDesktopServicesHelpers.EvaluateMailboxTemplate(body, org, accountId, itemId);
|
||||
|
||||
return MailHelper.SendMessage(from, to, cc, subject, body, priority, isHtml);
|
||||
}
|
||||
|
@ -506,7 +575,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
try
|
||||
{
|
||||
int serviceId = GetRdsServiceId(rdsServer.ItemId);
|
||||
var rds = GetRemoteDesktopServices(serviceId);
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(serviceId);
|
||||
var certificate = GetRdsCertificateByServiceIdInternal(serviceId);
|
||||
|
||||
var array = Convert.FromBase64String(certificate.Hash);
|
||||
|
@ -605,7 +674,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
result.AddError("", new NullReferenceException("Organization not found"));
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
rds.GetCollection(collection.Name);
|
||||
}
|
||||
|
@ -630,8 +699,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(collection.ItemId, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||
var organizationAdmins = rds.GetRdsCollectionLocalAdmins(org.OrganizationId, collection.Name);
|
||||
|
@ -655,7 +724,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
|
||||
|
||||
rds.SaveRdsCollectionLocalAdmins(users.Select(u => u.AccountName).ToArray(), servers.Select(s => s.FqdName).ToArray(), org.OrganizationId, collection.Name);
|
||||
|
@ -730,7 +799,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return -1;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
foreach(var server in collection.Servers)
|
||||
{
|
||||
|
@ -744,41 +813,15 @@ namespace WebsitePanel.EnterpriseServer
|
|||
throw TaskManager.WriteError(new Exception(string.Format("Unable to connect to {0} server.", server.FqdName)));
|
||||
}
|
||||
}
|
||||
|
||||
collection.Name = GetFormattedCollectionName(collection.DisplayName, org.OrganizationId);
|
||||
|
||||
collection.Settings = new RdsCollectionSettings
|
||||
{
|
||||
DisconnectedSessionLimitMin = 0,
|
||||
ActiveSessionLimitMin = 0,
|
||||
IdleSessionLimitMin = 0,
|
||||
BrokenConnectionAction = BrokenConnectionActionValues.Disconnect.ToString(),
|
||||
AutomaticReconnectionEnabled = true,
|
||||
TemporaryFoldersDeletedOnExit = true,
|
||||
TemporaryFoldersPerSession = true,
|
||||
ClientDeviceRedirectionOptions = string.Join(",", new List<string>
|
||||
{
|
||||
ClientDeviceRedirectionOptionValues.AudioVideoPlayBack.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.AudioRecording.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.SmartCard.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.Clipboard.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.Drive.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.PlugAndPlayDevice.ToString()
|
||||
}.ToArray()),
|
||||
ClientPrinterRedirected = true,
|
||||
ClientPrinterAsDefault = true,
|
||||
RDEasyPrintDriverEnabled = true,
|
||||
MaxRedirectedMonitors = 16,
|
||||
EncryptionLevel = EncryptionLevel.ClientCompatible.ToString(),
|
||||
SecurityLayer = SecurityLayerValues.Negotiate.ToString(),
|
||||
AuthenticateUsingNLA = true
|
||||
};
|
||||
collection.Name = RemoteDesktopServicesHelpers.GetFormattedCollectionName(collection.DisplayName, org.OrganizationId);
|
||||
collection.Settings = RemoteDesktopServicesHelpers.GetDefaultCollectionSettings();
|
||||
|
||||
rds.CreateCollection(org.OrganizationId, collection);
|
||||
var defaultGpoSettings = GetDefaultGpoSettings();
|
||||
var defaultGpoSettings = RemoteDesktopServicesHelpers.GetDefaultGpoSettings();
|
||||
rds.ApplyGPO(org.OrganizationId, collection.Name, defaultGpoSettings);
|
||||
collection.Id = DataProvider.AddRDSCollection(itemId, collection.Name, collection.Description, collection.DisplayName);
|
||||
string xml = GetSettingsXml(defaultGpoSettings);
|
||||
string xml = RemoteDesktopServicesHelpers.GetSettingsXml(defaultGpoSettings);
|
||||
DataProvider.UpdateRdsServerSettings(collection.Id, string.Format("Collection-{0}-Settings", collection.Id), xml);
|
||||
|
||||
collection.Settings.RdsCollectionId = collection.Id;
|
||||
|
@ -824,7 +867,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
var existingServers =
|
||||
ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToList();
|
||||
var removedServers = existingServers.Where(x => !collection.Servers.Select(y => y.Id).Contains(x.Id));
|
||||
|
@ -876,8 +919,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
result.AddError("", new NullReferenceException("Organization not found"));
|
||||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
rds.EditRdsCollectionSettings(collection);
|
||||
var collectionSettings = ObjectUtils.FillObjectFromDataReader<RdsCollectionSettings>(DataProvider.GetRdsCollectionSettingsByCollectionId(collection.Id));
|
||||
|
||||
|
@ -948,7 +991,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
var servers = ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collection.Id)).ToArray();
|
||||
rds.RemoveCollection(org.OrganizationId, collection.Name, servers);
|
||||
|
||||
|
@ -991,7 +1034,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
result.AddRange(rds.GetAvailableRemoteApplications(collectionName));
|
||||
}
|
||||
|
@ -1027,7 +1070,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
foreach (var tmpServer in tmpServers)
|
||||
{
|
||||
FillRdsServerData(tmpServer);
|
||||
RemoteDesktopServicesHelpers.FillRdsServerData(tmpServer);
|
||||
}
|
||||
|
||||
result.Servers = tmpServers.ToArray();
|
||||
|
@ -1046,7 +1089,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(organization.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(organization.PackageId));
|
||||
var userSessions = rds.GetRdsUserSessions(collection.Name).ToList();
|
||||
var organizationUsers = OrganizationController.GetOrganizationUsersPaged(collection.ItemId, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||
|
||||
|
@ -1074,7 +1117,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
var existingServers = rds.GetServersExistingInCollections();
|
||||
|
||||
DataSet ds = DataProvider.GetRDSServersPaged(null, null, filterColumn, filterValue, sortColumn, startRow, maximumRows);
|
||||
|
@ -1100,7 +1143,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
result = rds.GetRdsCollectionSessionHosts(collection.Name).ToList();
|
||||
|
||||
return result;
|
||||
|
@ -1157,7 +1200,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var rdsServer = GetRdsServer(rdsSeverId);
|
||||
|
||||
|
@ -1189,32 +1232,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int GetOrganizationRdsUsersCountInternal(int itemId)
|
||||
{
|
||||
return DataProvider.GetOrganizationRdsUsersCount(itemId);
|
||||
}
|
||||
|
||||
private static int GetOrganizationRdsServersCountInternal(int itemId)
|
||||
{
|
||||
return DataProvider.GetOrganizationRdsServersCount(itemId);
|
||||
}
|
||||
|
||||
private static int GetOrganizationRdsCollectionsCountInternal(int itemId)
|
||||
{
|
||||
return DataProvider.GetOrganizationRdsCollectionsCount(itemId);
|
||||
}
|
||||
|
||||
private static List<RdsServer> GetCollectionRdsServersInternal(int collectionId)
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collectionId)).ToList();
|
||||
}
|
||||
|
||||
private static List<RdsServer> GetOrganizationRdsServersInternal(int itemId)
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByItemId(itemId)).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
private static ResultObject AddRdsServerInternal(RdsServer rdsServer)
|
||||
{
|
||||
|
@ -1223,7 +1241,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
try
|
||||
{
|
||||
int serviceId = GetRdsMainServiceId();
|
||||
var rds = GetRemoteDesktopServices(serviceId);
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(serviceId);
|
||||
|
||||
if (rds.CheckRDSServerAvaliable(rdsServer.FqdName))
|
||||
{
|
||||
|
@ -1275,7 +1293,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
if (!rds.CheckSessionHostFeatureInstallation(rdsServer.FqdName))
|
||||
{
|
||||
|
@ -1320,7 +1338,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
rds.RemoveSessionHostServerFromCollection(org.OrganizationId, rdsCollection.Name, rdsServer);
|
||||
|
||||
|
@ -1387,7 +1405,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
RdsServer rdsServer = GetRdsServer(serverId);
|
||||
rds.MoveRdsServerToTenantOU(rdsServer.FqdName, org.OrganizationId);
|
||||
|
@ -1428,7 +1446,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
var rdsServer = ObjectUtils.FillObjectFromDataReader<RdsServer>(DataProvider.GetRDSServerById(rdsServerId));
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
rds.RemoveRdsServerFromTenantOU(rdsServer.FqdName, org.OrganizationId);
|
||||
DataProvider.RemoveRDSServerFromOrganization(rdsServerId);
|
||||
}
|
||||
|
@ -1498,7 +1516,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var collection = GetRdsCollection(collectionId);
|
||||
|
||||
|
@ -1571,7 +1589,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||
var users = rds.GetApplicationUsers(collection.Name, remoteApp.Alias);
|
||||
result.AddRange(users);
|
||||
|
@ -1594,7 +1612,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
rds.SetApplicationUsers(collection.Name, remoteApp, users.ToArray());
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -1631,8 +1649,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
rds.LogOffRdsUser(unifiedSessionId, hostServer);
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -1669,7 +1687,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
if (!string.IsNullOrEmpty(remoteApp.Alias))
|
||||
{
|
||||
|
@ -1696,41 +1714,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static RdsServerInfo GetRdsServerInfoInternal(int? itemId, string fqdnName)
|
||||
{
|
||||
int serviceId = GetRdsServiceId(itemId);
|
||||
var result = new RdsServerInfo();
|
||||
|
||||
if (serviceId != -1)
|
||||
{
|
||||
var rds = GetRemoteDesktopServices(serviceId);
|
||||
result = rds.GetRdsServerInfo(fqdnName);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string GetRdsServerStatusInternal(int? itemId, string fqdnName)
|
||||
{
|
||||
var result = "Unavailable";
|
||||
var serviceId = GetRdsServiceId(itemId);
|
||||
|
||||
try
|
||||
{
|
||||
if (serviceId != -1)
|
||||
{
|
||||
var rds = GetRemoteDesktopServices(serviceId);
|
||||
result = rds.GetRdsServerStatus(fqdnName);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private static ResultObject ShutDownRdsServerInternal(int? itemId, string fqdnName)
|
||||
{
|
||||
|
@ -1742,7 +1726,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
if (serviceId != -1)
|
||||
{
|
||||
var rds = GetRemoteDesktopServices(serviceId);
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(serviceId);
|
||||
rds.ShutDownRdsServer(fqdnName);
|
||||
}
|
||||
}
|
||||
|
@ -1775,7 +1759,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
if (serviceId != -1)
|
||||
{
|
||||
var rds = GetRemoteDesktopServices(serviceId);
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(serviceId);
|
||||
rds.RestartRdsServer(fqdnName);
|
||||
}
|
||||
}
|
||||
|
@ -1810,7 +1794,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
result.AddRange(rds.GetCollectionRemoteApplications(collectionName));
|
||||
|
||||
|
@ -1832,7 +1816,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
rds.RemoveRemoteApplication(collection.Name, application);
|
||||
}
|
||||
|
@ -1869,7 +1853,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId));
|
||||
|
||||
var collection = GetRdsCollection(collectionId);
|
||||
|
||||
|
@ -1911,35 +1895,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static RdsCollection FillRdsCollection(RdsCollection collection)
|
||||
{
|
||||
collection.Servers = GetCollectionRdsServers(collection.Id) ?? new List<RdsServer>();
|
||||
|
||||
return collection;
|
||||
}
|
||||
|
||||
private static RdsServer FillRdsServerData(RdsServer server)
|
||||
{
|
||||
server.Address = GetServerIp(server.FqdName).ToString();
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
private static System.Net.IPAddress GetServerIp(string hostname, AddressFamily addressFamily = AddressFamily.InterNetwork)
|
||||
{
|
||||
var address = GetServerIps(hostname);
|
||||
|
||||
return address.FirstOrDefault(x => x.AddressFamily == addressFamily);
|
||||
}
|
||||
|
||||
private static IEnumerable<System.Net.IPAddress> GetServerIps(string hostname)
|
||||
{
|
||||
var address = Dns.GetHostAddresses(hostname);
|
||||
|
||||
return address;
|
||||
}
|
||||
}
|
||||
|
||||
private static ResultObject DeleteRemoteDesktopServiceInternal(int itemId)
|
||||
{
|
||||
|
@ -1980,49 +1936,43 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return result;
|
||||
}
|
||||
|
||||
private static int GetRemoteDesktopServiceID(int packageId)
|
||||
private static int GetOrganizationRdsUsersCountInternal(int itemId)
|
||||
{
|
||||
return PackageController.GetPackageServiceId(packageId, ResourceGroups.RDS);
|
||||
}
|
||||
|
||||
private static int GetRdsServiceId(int? itemId)
|
||||
{
|
||||
int serviceId = -1;
|
||||
|
||||
if (itemId.HasValue)
|
||||
{
|
||||
Organization org = OrganizationController.GetOrganization(itemId.Value);
|
||||
|
||||
if (org == null)
|
||||
{
|
||||
return serviceId;
|
||||
}
|
||||
|
||||
serviceId = GetRemoteDesktopServiceID(org.PackageId);
|
||||
}
|
||||
else
|
||||
{
|
||||
serviceId = GetRdsMainServiceId();
|
||||
}
|
||||
|
||||
return serviceId;
|
||||
return DataProvider.GetOrganizationRdsUsersCount(itemId);
|
||||
}
|
||||
|
||||
private static RemoteDesktopServices GetRemoteDesktopServices(int serviceId)
|
||||
private static int GetOrganizationRdsServersCountInternal(int itemId)
|
||||
{
|
||||
var rds = new RemoteDesktopServices();
|
||||
ServiceProviderProxy.Init(rds, serviceId);
|
||||
|
||||
return rds;
|
||||
return DataProvider.GetOrganizationRdsServersCount(itemId);
|
||||
}
|
||||
|
||||
private static int GetRdsMainServiceId()
|
||||
private static int GetOrganizationRdsCollectionsCountInternal(int itemId)
|
||||
{
|
||||
var settings = SystemController.GetSystemSettings(WebsitePanel.EnterpriseServer.SystemSettings.RDS_SETTINGS);
|
||||
return DataProvider.GetOrganizationRdsCollectionsCount(itemId);
|
||||
}
|
||||
|
||||
private static List<RdsServer> GetCollectionRdsServersInternal(int collectionId)
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByCollectionId(collectionId)).ToList();
|
||||
}
|
||||
|
||||
private static List<RdsServer> GetOrganizationRdsServersInternal(int itemId)
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataReader<RdsServer>(DataProvider.GetRDSServersByItemId(itemId)).ToList();
|
||||
}
|
||||
|
||||
private static List<ServiceInfo> GetRdsServicesInternal()
|
||||
{
|
||||
return ObjectUtils.CreateListFromDataSet<ServiceInfo>(DataProvider.GetServicesByGroupName(SecurityContext.User.UserId, ResourceGroups.RDS));
|
||||
}
|
||||
|
||||
protected static int GetRdsMainServiceId()
|
||||
{
|
||||
var settings = SystemController.GetSystemSettings(WebsitePanel.EnterpriseServer.SystemSettings.RDS_SETTINGS);
|
||||
|
||||
if (!string.IsNullOrEmpty(settings["RdsMainController"]))
|
||||
{
|
||||
return Convert.ToInt32(settings["RdsMainController"]);
|
||||
return Convert.ToInt32(settings["RdsMainController"]);
|
||||
}
|
||||
|
||||
var rdsServices = GetRdsServicesInternal();
|
||||
|
@ -2035,146 +1985,68 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return -1;
|
||||
}
|
||||
|
||||
private static string GetFormattedCollectionName(string displayName, string organizationId)
|
||||
protected static RdsCollection FillRdsCollection(RdsCollection collection)
|
||||
{
|
||||
return string.Format("{0}-{1}", organizationId, displayName.Replace(" ", "_"));
|
||||
collection.Servers = GetCollectionRdsServersInternal(collection.Id) ?? new List<RdsServer>();
|
||||
|
||||
return collection;
|
||||
}
|
||||
|
||||
private static string EvaluateMailboxTemplate(string template, Organization org, int? accountId, int itemId)
|
||||
protected static int GetRdsServiceId(int? itemId)
|
||||
{
|
||||
OrganizationUser user = null;
|
||||
int serviceId = -1;
|
||||
|
||||
if (accountId.HasValue)
|
||||
if (itemId.HasValue)
|
||||
{
|
||||
user = OrganizationController.GetAccount(itemId, accountId.Value);
|
||||
}
|
||||
Organization org = OrganizationController.GetOrganization(itemId.Value);
|
||||
|
||||
Hashtable items = new Hashtable();
|
||||
items["Organization"] = org;
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
items["account"] = user;
|
||||
}
|
||||
|
||||
return PackageController.EvaluateTemplate(template, items);
|
||||
}
|
||||
|
||||
private static RdsServerSettings GetDefaultGpoSettings()
|
||||
{
|
||||
var defaultSettings = UserController.GetUserSettings(SecurityContext.User.UserId, UserSettings.RDS_POLICY);
|
||||
var settings = new RdsServerSettings();
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.LOCK_SCREEN_TIMEOUT,
|
||||
PropertyValue = defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_VALUE],
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_RUN_COMMAND,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_RUN_COMMAND_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_RUN_COMMAND_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_POWERSHELL_COMMAND,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_POWERSHELL_COMMAND_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_POWERSHELL_COMMAND_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.HIDE_C_DRIVE,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.HIDE_C_DRIVE_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.HIDE_C_DRIVE_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_SHUTDOWN_RESTART,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_SHUTDOWN_RESTART_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_SHUTDOWN_RESTART_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.DISABLE_TASK_MANAGER,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_TASK_MANAGER_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_TASK_MANAGER_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.CHANGE_DESKTOP_DISABLED,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.CHANGE_DESKTOP_DISABLED_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.CHANGE_DESKTOP_DISABLED_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.SCREEN_SAVER_DISABLED,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.SCREEN_SAVER_DISABLED_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.SCREEN_SAVER_DISABLED_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION_Users])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION_Users])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.DISABLE_CMD,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_CMD_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_CMD_USERS])
|
||||
});
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
private static string GetSettingsXml(RdsServerSettings settings)
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
XmlElement nodeProps = doc.CreateElement("properties");
|
||||
|
||||
if (settings != null)
|
||||
{
|
||||
foreach (var setting in settings.Settings)
|
||||
if (org == null)
|
||||
{
|
||||
XmlElement nodeProp = doc.CreateElement("property");
|
||||
nodeProp.SetAttribute("name", setting.PropertyName);
|
||||
nodeProp.SetAttribute("value", setting.PropertyValue);
|
||||
nodeProp.SetAttribute("applyUsers", setting.ApplyUsers ? "1" : "0");
|
||||
nodeProp.SetAttribute("applyAdministrators", setting.ApplyAdministrators ? "1" : "0");
|
||||
nodeProps.AppendChild(nodeProp);
|
||||
return serviceId;
|
||||
}
|
||||
|
||||
serviceId = RemoteDesktopServicesHelpers.GetRemoteDesktopServiceID(org.PackageId);
|
||||
}
|
||||
else
|
||||
{
|
||||
serviceId = GetRdsMainServiceId();
|
||||
}
|
||||
|
||||
return serviceId;
|
||||
}
|
||||
|
||||
private static RdsServerInfo GetRdsServerInfoInternal(int? itemId, string fqdnName)
|
||||
{
|
||||
int serviceId = GetRdsServiceId(itemId);
|
||||
var result = new RdsServerInfo();
|
||||
|
||||
if (serviceId != -1)
|
||||
{
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(serviceId);
|
||||
result = rds.GetRdsServerInfo(fqdnName);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static string GetRdsServerStatusInternal(int? itemId, string fqdnName)
|
||||
{
|
||||
var result = "Unavailable";
|
||||
var serviceId = GetRdsServiceId(itemId);
|
||||
|
||||
try
|
||||
{
|
||||
if (serviceId != -1)
|
||||
{
|
||||
var rds = RemoteDesktopServicesHelpers.GetRemoteDesktopServices(serviceId);
|
||||
result = rds.GetRdsServerStatus(fqdnName);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return nodeProps.OuterXml;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,357 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Net.NetworkInformation;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using WebsitePanel.EnterpriseServer.Base.RDS;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
using WebsitePanel.Providers.RemoteDesktopServices;
|
||||
|
||||
namespace WebsitePanel.EnterpriseServer
|
||||
{
|
||||
public class RemoteDesktopServicesHelpers
|
||||
{
|
||||
public static string GetFormattedCollectionName(string displayName, string organizationId)
|
||||
{
|
||||
return string.Format("{0}-{1}", organizationId, displayName.Replace(" ", "_"));
|
||||
}
|
||||
|
||||
public static string EvaluateMailboxTemplate(string template, Organization org, int? accountId, int itemId)
|
||||
{
|
||||
OrganizationUser user = null;
|
||||
|
||||
if (accountId.HasValue)
|
||||
{
|
||||
user = OrganizationController.GetAccount(itemId, accountId.Value);
|
||||
}
|
||||
|
||||
Hashtable items = new Hashtable();
|
||||
items["Organization"] = org;
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
items["account"] = user;
|
||||
}
|
||||
|
||||
return PackageController.EvaluateTemplate(template, items);
|
||||
}
|
||||
|
||||
public static RdsCollectionSettings GetDefaultCollectionSettings()
|
||||
{
|
||||
return new RdsCollectionSettings
|
||||
{
|
||||
DisconnectedSessionLimitMin = 0,
|
||||
ActiveSessionLimitMin = 0,
|
||||
IdleSessionLimitMin = 0,
|
||||
BrokenConnectionAction = BrokenConnectionActionValues.Disconnect.ToString(),
|
||||
AutomaticReconnectionEnabled = true,
|
||||
TemporaryFoldersDeletedOnExit = true,
|
||||
TemporaryFoldersPerSession = true,
|
||||
ClientDeviceRedirectionOptions = string.Join(",", new List<string>
|
||||
{
|
||||
ClientDeviceRedirectionOptionValues.AudioVideoPlayBack.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.AudioRecording.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.SmartCard.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.Clipboard.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.Drive.ToString(),
|
||||
ClientDeviceRedirectionOptionValues.PlugAndPlayDevice.ToString()
|
||||
}.ToArray()),
|
||||
ClientPrinterRedirected = true,
|
||||
ClientPrinterAsDefault = true,
|
||||
RDEasyPrintDriverEnabled = true,
|
||||
MaxRedirectedMonitors = 16,
|
||||
EncryptionLevel = EncryptionLevel.ClientCompatible.ToString(),
|
||||
SecurityLayer = SecurityLayerValues.Negotiate.ToString(),
|
||||
AuthenticateUsingNLA = true
|
||||
};
|
||||
}
|
||||
|
||||
public static RdsServerSettings GetDefaultGpoSettings()
|
||||
{
|
||||
var defaultSettings = UserController.GetUserSettings(SecurityContext.User.UserId, UserSettings.RDS_POLICY);
|
||||
var settings = new RdsServerSettings();
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.LOCK_SCREEN_TIMEOUT,
|
||||
PropertyValue = defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_VALUE],
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_RUN_COMMAND,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_RUN_COMMAND_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_RUN_COMMAND_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_POWERSHELL_COMMAND,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_POWERSHELL_COMMAND_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_POWERSHELL_COMMAND_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.HIDE_C_DRIVE,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.HIDE_C_DRIVE_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.HIDE_C_DRIVE_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_SHUTDOWN_RESTART,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_SHUTDOWN_RESTART_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.REMOVE_SHUTDOWN_RESTART_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.DISABLE_TASK_MANAGER,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_TASK_MANAGER_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_TASK_MANAGER_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.CHANGE_DESKTOP_DISABLED,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.CHANGE_DESKTOP_DISABLED_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.CHANGE_DESKTOP_DISABLED_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.SCREEN_SAVER_DISABLED,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.SCREEN_SAVER_DISABLED_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.SCREEN_SAVER_DISABLED_USERS])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION_Users])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION_Users])
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.DISABLE_CMD,
|
||||
PropertyValue = "",
|
||||
ApplyAdministrators = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_CMD_ADMINISTRATORS]),
|
||||
ApplyUsers = Convert.ToBoolean(defaultSettings[RdsServerSettings.DISABLE_CMD_USERS])
|
||||
});
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
public static RdsServerSettings GetEmptyGpoSettings()
|
||||
{
|
||||
var defaultSettings = UserController.GetUserSettings(SecurityContext.User.UserId, UserSettings.RDS_POLICY);
|
||||
var settings = new RdsServerSettings();
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.LOCK_SCREEN_TIMEOUT,
|
||||
PropertyValue = defaultSettings[RdsServerSettings.LOCK_SCREEN_TIMEOUT_VALUE]
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_RUN_COMMAND,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_POWERSHELL_COMMAND,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.HIDE_C_DRIVE,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.REMOVE_SHUTDOWN_RESTART,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.DISABLE_TASK_MANAGER,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.CHANGE_DESKTOP_DISABLED,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.SCREEN_SAVER_DISABLED,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.RDS_VIEW_WITHOUT_PERMISSION,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
settings.Settings.Add(new RdsServerSetting
|
||||
{
|
||||
PropertyName = RdsServerSettings.DISABLE_CMD,
|
||||
PropertyValue = ""
|
||||
});
|
||||
|
||||
return settings;
|
||||
}
|
||||
|
||||
public static string GetSettingsXml(RdsServerSettings settings)
|
||||
{
|
||||
XmlDocument doc = new XmlDocument();
|
||||
XmlElement nodeProps = doc.CreateElement("properties");
|
||||
|
||||
if (settings != null)
|
||||
{
|
||||
foreach (var setting in settings.Settings)
|
||||
{
|
||||
XmlElement nodeProp = doc.CreateElement("property");
|
||||
nodeProp.SetAttribute("name", setting.PropertyName);
|
||||
nodeProp.SetAttribute("value", setting.PropertyValue);
|
||||
nodeProp.SetAttribute("applyUsers", setting.ApplyUsers ? "1" : "0");
|
||||
nodeProp.SetAttribute("applyAdministrators", setting.ApplyAdministrators ? "1" : "0");
|
||||
nodeProps.AppendChild(nodeProp);
|
||||
}
|
||||
}
|
||||
|
||||
return nodeProps.OuterXml;
|
||||
}
|
||||
|
||||
public static int GetRemoteDesktopServiceID(int packageId)
|
||||
{
|
||||
return PackageController.GetPackageServiceId(packageId, ResourceGroups.RDS);
|
||||
}
|
||||
|
||||
public static RemoteDesktopServices GetRemoteDesktopServices(int serviceId)
|
||||
{
|
||||
var rds = new RemoteDesktopServices();
|
||||
ServiceProviderProxy.Init(rds, serviceId);
|
||||
|
||||
return rds;
|
||||
}
|
||||
|
||||
public static RdsServer FillRdsServerData(RdsServer server)
|
||||
{
|
||||
server.Address = GetServerIp(server.FqdName).ToString();
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
public static System.Net.IPAddress GetServerIp(string hostname, AddressFamily addressFamily = AddressFamily.InterNetwork)
|
||||
{
|
||||
var address = GetServerIps(hostname);
|
||||
|
||||
return address.FirstOrDefault(x => x.AddressFamily == addressFamily);
|
||||
}
|
||||
|
||||
public static RdsCollectionSettings ParseCollectionSettings(List<RdsCollectionSetting> settings)
|
||||
{
|
||||
var collectionSettings = new RdsCollectionSettings();
|
||||
var properties = typeof(RdsCollectionSettings).GetProperties().Where(p => p.Name.ToLower() != "id" && p.Name.ToLower() != "rdscollectionid");
|
||||
|
||||
foreach (var prop in properties)
|
||||
{
|
||||
var values = settings.Where(s => s.PropertyName.Equals(prop.Name, StringComparison.InvariantCultureIgnoreCase));
|
||||
|
||||
if (values.Count() == 1)
|
||||
{
|
||||
switch(prop.Name.ToLower())
|
||||
{
|
||||
case "brokenconnectionaction":
|
||||
prop.SetValue(collectionSettings, ((BrokenConnectionActionValues)values.First().PropertyValue).ToString(), null);
|
||||
break;
|
||||
case "clientdeviceredirectionoptions":
|
||||
prop.SetValue(collectionSettings, ((ClientDeviceRedirectionOptionValues)values.First().PropertyValue).ToString(), null);
|
||||
break;
|
||||
case "encryptionlevel":
|
||||
prop.SetValue(collectionSettings, ((EncryptionLevel)values.First().PropertyValue).ToString(), null);
|
||||
break;
|
||||
case "securitylayer":
|
||||
prop.SetValue(collectionSettings, ((SecurityLayerValues)values.First().PropertyValue).ToString(), null);
|
||||
break;
|
||||
default:
|
||||
prop.SetValue(collectionSettings, Convert.ChangeType(values.First().PropertyValue, prop.PropertyType), null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return collectionSettings;
|
||||
}
|
||||
|
||||
public static void FillSessionHosts(IEnumerable<string> sessionHosts, IEnumerable<RdsServer> existingSessionHosts, int collectionId, int itemId)
|
||||
{
|
||||
var domainName = string.Format(".{0}", IPGlobalProperties.GetIPGlobalProperties().DomainName);
|
||||
|
||||
foreach (var sessionHost in sessionHosts)
|
||||
{
|
||||
var existingSessionHost = existingSessionHosts.FirstOrDefault(e => e.FqdName.Equals(sessionHost, StringComparison.InvariantCultureIgnoreCase));
|
||||
int serverId = -1;
|
||||
|
||||
if (existingSessionHost == null)
|
||||
{
|
||||
var serverName = sessionHost.Replace(domainName, "");
|
||||
serverId = DataProvider.AddRDSServer(serverName, sessionHost, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
serverId = existingSessionHost.Id;
|
||||
}
|
||||
|
||||
DataProvider.AddRDSServerToOrganization(itemId, serverId);
|
||||
DataProvider.AddRDSServerToCollection(serverId, collectionId);
|
||||
}
|
||||
}
|
||||
|
||||
private static IEnumerable<System.Net.IPAddress> GetServerIps(string hostname)
|
||||
{
|
||||
var address = Dns.GetHostAddresses(hostname);
|
||||
|
||||
return address;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -202,5 +202,15 @@ namespace WebsitePanel.EnterpriseServer
|
|||
TaskManager.CompleteTask();
|
||||
}
|
||||
}
|
||||
|
||||
public static bool CheckIsTwilioEnabled()
|
||||
{
|
||||
var settings = SystemController.GetSystemSettingsActive(SystemSettings.TWILIO_SETTINGS, false);
|
||||
|
||||
return settings != null
|
||||
&& !string.IsNullOrEmpty(settings.GetValueOrDefault(SystemSettings.TWILIO_ACCOUNTSID_KEY, string.Empty))
|
||||
&& !string.IsNullOrEmpty(settings.GetValueOrDefault(SystemSettings.TWILIO_AUTHTOKEN_KEY, string.Empty))
|
||||
&& !string.IsNullOrEmpty(settings.GetValueOrDefault(SystemSettings.TWILIO_PHONEFROM_KEY, string.Empty));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.EnterpriseServer
|
||||
{
|
||||
public class OneTimePasswordHelper
|
||||
{
|
||||
public static string SetOneTimePassword(int userId)
|
||||
{
|
||||
int passwordLength = 12; // default length
|
||||
|
||||
// load password policy
|
||||
UserSettings userSettings = UserController.GetUserSettings(userId, UserSettings.WEBSITEPANEL_POLICY);
|
||||
string passwordPolicy = userSettings["PasswordPolicy"];
|
||||
|
||||
if (!String.IsNullOrEmpty(passwordPolicy))
|
||||
{
|
||||
// get third parameter - max length
|
||||
try
|
||||
{
|
||||
passwordLength = Utils.ParseInt(passwordPolicy.Split(';')[2].Trim(), passwordLength);
|
||||
}
|
||||
catch { /* skip */ }
|
||||
}
|
||||
|
||||
// generate password
|
||||
var password = Utils.GetRandomString(passwordLength);
|
||||
|
||||
DataProvider.SetUserOneTimePassword(userId, CryptoUtils.Encrypt(password), (int) OneTimePasswordStates.Active);
|
||||
|
||||
return password;
|
||||
}
|
||||
|
||||
public static void FireSuccessAuth(UserInfoInternal user)
|
||||
{
|
||||
DataProvider.SetUserOneTimePassword(user.UserId, CryptoUtils.Encrypt(user.Password), (int) OneTimePasswordStates.Expired);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -57,6 +57,8 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
try
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
// try to get user from database
|
||||
UserInfoInternal user = GetUserInternally(username);
|
||||
|
||||
|
@ -99,16 +101,31 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
|
||||
// compare user passwords
|
||||
if (CryptoUtils.SHA1(user.Password) != password)
|
||||
if (CryptoUtils.SHA1(user.Password) == password)
|
||||
{
|
||||
switch (user.OneTimePasswordState)
|
||||
{
|
||||
case OneTimePasswordStates.Active:
|
||||
result = BusinessSuccessCodes.SUCCESS_USER_ONETIMEPASSWORD;
|
||||
OneTimePasswordHelper.FireSuccessAuth(user);
|
||||
break;
|
||||
case OneTimePasswordStates.Expired:
|
||||
if (lockOut >= 0) DataProvider.UpdateUserFailedLoginAttempt(user.UserId, lockOut, false);
|
||||
TaskManager.WriteWarning("Expired one time password");
|
||||
return BusinessErrorCodes.ERROR_USER_EXPIRED_ONETIMEPASSWORD;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lockOut >= 0)
|
||||
DataProvider.UpdateUserFailedLoginAttempt(user.UserId, lockOut, false);
|
||||
|
||||
TaskManager.WriteWarning("Wrong password");
|
||||
return BusinessErrorCodes.ERROR_USER_WRONG_PASSWORD;
|
||||
return BusinessErrorCodes.ERROR_USER_WRONG_PASSWORD;
|
||||
}
|
||||
else
|
||||
DataProvider.UpdateUserFailedLoginAttempt(user.UserId, lockOut, true);
|
||||
|
||||
DataProvider.UpdateUserFailedLoginAttempt(user.UserId, lockOut, true);
|
||||
|
||||
// check status
|
||||
if (user.Status == UserStatus.Cancelled)
|
||||
|
@ -123,7 +140,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return BusinessErrorCodes.ERROR_USER_ACCOUNT_PENDING;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return result;
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -155,7 +172,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
// compare user passwords
|
||||
if (CryptoUtils.SHA1(user.Password) == password)
|
||||
if (CryptoUtils.SHA1(user.Password) == password)
|
||||
return new UserInfo(user);
|
||||
|
||||
return null;
|
||||
|
@ -210,7 +227,7 @@ namespace WebsitePanel.EnterpriseServer
|
|||
try
|
||||
{
|
||||
// try to get user from database
|
||||
UserInfo user = GetUserInternally(username);
|
||||
UserInfoInternal user = GetUserInternally(username);
|
||||
if (user == null)
|
||||
{
|
||||
TaskManager.WriteWarning("Account not found");
|
||||
|
@ -232,18 +249,20 @@ namespace WebsitePanel.EnterpriseServer
|
|||
|
||||
if (body == null || body == "")
|
||||
return BusinessErrorCodes.ERROR_SETTINGS_PASSWORD_LETTER_EMPTY_BODY;
|
||||
|
||||
// One Time Password feature
|
||||
user.Password = OneTimePasswordHelper.SetOneTimePassword(user.UserId);
|
||||
|
||||
// set template context items
|
||||
Hashtable items = new Hashtable();
|
||||
items["user"] = user;
|
||||
items["Email"] = true;
|
||||
// set template context items
|
||||
Hashtable items = new Hashtable();
|
||||
items["user"] = user;
|
||||
items["Email"] = true;
|
||||
|
||||
// get reseller details
|
||||
// get reseller details
|
||||
UserInfoInternal reseller = UserController.GetUser(user.OwnerId);
|
||||
if (reseller != null)
|
||||
{
|
||||
reseller.Password = "";
|
||||
items["reseller"] = reseller;
|
||||
items["reseller"] = new UserInfo(reseller);
|
||||
}
|
||||
|
||||
subject = PackageController.EvaluateTemplate(subject, items);
|
||||
|
@ -264,52 +283,40 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
internal static UserInfoInternal GetUserInternally(int userId)
|
||||
{
|
||||
// try to get user from database
|
||||
UserInfoInternal user = ObjectUtils.FillObjectFromDataReader<UserInfoInternal>(
|
||||
DataProvider.GetUserByIdInternally(userId));
|
||||
|
||||
if (user != null)
|
||||
user.Password = CryptoUtils.Decrypt(user.Password);
|
||||
return user;
|
||||
return GetUser(DataProvider.GetUserByIdInternally(userId));
|
||||
}
|
||||
|
||||
internal static UserInfoInternal GetUserInternally(string username)
|
||||
{
|
||||
// try to get user from database
|
||||
UserInfoInternal user = ObjectUtils.FillObjectFromDataReader<UserInfoInternal>(
|
||||
DataProvider.GetUserByUsernameInternally(username));
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
user.Password = CryptoUtils.Decrypt(user.Password);
|
||||
}
|
||||
return user;
|
||||
return GetUser(DataProvider.GetUserByUsernameInternally(username));
|
||||
}
|
||||
|
||||
public static UserInfoInternal GetUser(int userId)
|
||||
{
|
||||
// try to get user from database
|
||||
UserInfoInternal user = ObjectUtils.FillObjectFromDataReader<UserInfoInternal>(
|
||||
DataProvider.GetUserById(SecurityContext.User.UserId, userId));
|
||||
|
||||
if (user != null)
|
||||
user.Password = CryptoUtils.Decrypt(user.Password);
|
||||
return user;
|
||||
return GetUser(DataProvider.GetUserById(SecurityContext.User.UserId, userId));
|
||||
}
|
||||
|
||||
public static UserInfoInternal GetUser(string username)
|
||||
{
|
||||
// try to get user from database
|
||||
UserInfoInternal user = ObjectUtils.FillObjectFromDataReader<UserInfoInternal>(
|
||||
DataProvider.GetUserByUsername(SecurityContext.User.UserId, username));
|
||||
|
||||
if (user != null)
|
||||
user.Password = CryptoUtils.Decrypt(user.Password);
|
||||
return user;
|
||||
return GetUser(DataProvider.GetUserByUsername(SecurityContext.User.UserId, username));
|
||||
}
|
||||
|
||||
private static UserInfoInternal GetUser(IDataReader reader)
|
||||
{
|
||||
// try to get user from database
|
||||
UserInfoInternal user = ObjectUtils.FillObjectFromDataReader<UserInfoInternal>(reader);
|
||||
|
||||
if (user != null)
|
||||
{
|
||||
user.Password = CryptoUtils.Decrypt(user.Password);
|
||||
}
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public static List<UserInfo> GetUserParents(int userId)
|
||||
{
|
||||
// get users from database
|
||||
|
|
|
@ -147,6 +147,7 @@
|
|||
<Compile Include="Provisioning\IImportController.cs" />
|
||||
<Compile Include="Provisioning\ImportAsyncWorker.cs" />
|
||||
<Compile Include="Provisioning\ImportController.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RemoteDesktopServicesHelpers.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RemoteDesktopServicesController.cs" />
|
||||
<Compile Include="SchedulerTasks\ActivatePaidInvoicesTask.cs" />
|
||||
<Compile Include="SchedulerTasks\BackupDatabaseTask.cs" />
|
||||
|
@ -183,6 +184,7 @@
|
|||
<Compile Include="Tasks\TaskController.cs" />
|
||||
<Compile Include="Tasks\TaskEventHandler.cs" />
|
||||
<Compile Include="Tasks\TaskManager.cs" />
|
||||
<Compile Include="Users\Helpers\OneTimePasswordHelper.cs" />
|
||||
<Compile Include="Users\UserAsyncWorker.cs" />
|
||||
<Compile Include="Users\UserController.cs" />
|
||||
<Compile Include="Virtualization2012\CreateServerAsyncWorker2012.cs" />
|
||||
|
|
|
@ -211,6 +211,18 @@ namespace WebsitePanel.EnterpriseServer
|
|||
}
|
||||
|
||||
|
||||
[WebMethod]
|
||||
public ResultObject SendUserPasswordRequestSms(int itemId, int accountId, string reason, string phoneTo)
|
||||
{
|
||||
return OrganizationController.SendUserPasswordRequestSms(itemId, accountId, reason, phoneTo);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void SendUserPasswordRequestEmail(int itemId, int accountId, string reason, string mailTo, bool finalStep)
|
||||
{
|
||||
OrganizationController.SendUserPasswordRequestEmail(itemId, accountId, reason, mailTo, finalStep);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Domains
|
||||
|
|
|
@ -386,5 +386,11 @@ namespace WebsitePanel.EnterpriseServer
|
|||
{
|
||||
return RemoteDesktopServicesController.ShadowSession(itemId, sessionId, control);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public ResultObject ImportCollection(int itemId, string collectionName)
|
||||
{
|
||||
return RemoteDesktopServicesController.ImportCollection(itemId, collectionName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,12 @@ namespace WebsitePanel.EnterpriseServer
|
|||
return SystemController.GetSystemSettingsActive(settingsName, decrypt);
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public bool CheckIsTwilioEnabled()
|
||||
{
|
||||
return SystemController.CheckIsTwilioEnabled();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public int SetSystemSettings(string settingsName, SystemSettings settings)
|
||||
{
|
||||
|
|
|
@ -84,5 +84,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
|||
void ApplyGPO(string organizationId, string collectionName, RdsServerSettings serverSettings);
|
||||
void ShadowSession(string sessionId, bool control);
|
||||
void MoveSessionHostsToCollectionOU(List<RdsServer> servers, string collectionName, string organizationId);
|
||||
ImportedRdsCollection GetExistingCollection(string collectionName);
|
||||
void ImportCollection(string organizationId, RdsCollection collection, List<string> users);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using WebsitePanel.EnterpriseServer.Base.RDS;
|
||||
|
||||
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||
{
|
||||
public class ImportedRdsCollection
|
||||
{
|
||||
public string CollectionName { get; set; }
|
||||
public string Description { get; set; }
|
||||
public List<RdsCollectionSetting> CollectionSettings { get; set; }
|
||||
public List<RdsCollectionSetting> UserGroups { get; set; }
|
||||
public List<string> SessionHosts { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||
{
|
||||
public class RdsCollectionSetting
|
||||
{
|
||||
public string PropertyName { get; set; }
|
||||
|
||||
public object PropertyValue { get; set; }
|
||||
}
|
||||
}
|
|
@ -48,6 +48,7 @@ namespace WebsitePanel.EnterpriseServer.Base.RDS
|
|||
public const string DISABLE_CMD = "DisableCMD";
|
||||
public const string DISABLE_CMD_ADMINISTRATORS = "DisableCMDAdministrators";
|
||||
public const string DISABLE_CMD_USERS = "DisableCMDUsers";
|
||||
public const string ALLOWCONNECTIONSIMPORT = "AllowConnectionsImport";
|
||||
|
||||
public string SettingsName { get; set; }
|
||||
public int ServerId { get; set; }
|
||||
|
|
|
@ -134,10 +134,12 @@
|
|||
<Compile Include="OS\Quota.cs" />
|
||||
<Compile Include="OS\QuotaType.cs" />
|
||||
<Compile Include="OS\SystemFilesPaged.cs" />
|
||||
<Compile Include="RemoteDesktopServices\ImportedRdsCollection.cs" />
|
||||
<Compile Include="RemoteDesktopServices\IRemoteDesktopServices.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsCertificate.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsCollection.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsCollectionPaged.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsCollectionSetting.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsCollectionSettings.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsEnums.cs" />
|
||||
<Compile Include="RemoteDesktopServices\RdsPolicyTypes.cs" />
|
||||
|
|
|
@ -0,0 +1,169 @@
|
|||
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 WebsitePanel.Server.Utils;
|
||||
|
||||
namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||
{
|
||||
public static class RdsRunspaceExtensions
|
||||
{
|
||||
public static RdsCollection GetCollection(this Runspace runspace, string collectionName, string connectionBroker, string primaryDomainController)
|
||||
{
|
||||
RdsCollection collection = null;
|
||||
Command cmd = new Command("Get-RDSessionCollection");
|
||||
cmd.Parameters.Add("CollectionName", collectionName);
|
||||
cmd.Parameters.Add("ConnectionBroker", connectionBroker);
|
||||
|
||||
var collectionPs = ExecuteShellCommand(runspace, cmd, false, primaryDomainController).FirstOrDefault();
|
||||
|
||||
if (collectionPs != null)
|
||||
{
|
||||
collection = new RdsCollection();
|
||||
collection.Name = Convert.ToString(GetPSObjectProperty(collectionPs, "CollectionName"));
|
||||
collection.Description = Convert.ToString(GetPSObjectProperty(collectionPs, "CollectionDescription"));
|
||||
}
|
||||
|
||||
return collection;
|
||||
}
|
||||
|
||||
public static List<RdsCollectionSetting> GetCollectionSettings(this Runspace runspace, string collectionName, string connectionBroker, string primaryDomainController, out object[] errors)
|
||||
{
|
||||
var result = new List<RdsCollectionSetting>();
|
||||
var errorsList = new List<object>();
|
||||
|
||||
result.AddRange(GetCollectionSettings(runspace, collectionName, connectionBroker, primaryDomainController, "Connection", out errors));
|
||||
errorsList.AddRange(errors);
|
||||
result.AddRange(GetCollectionSettings(runspace, collectionName, connectionBroker, primaryDomainController, "UserProfileDisk", out errors));
|
||||
errorsList.AddRange(errors);
|
||||
result.AddRange(GetCollectionSettings(runspace, collectionName, connectionBroker, primaryDomainController, "Security", out errors));
|
||||
errorsList.AddRange(errors);
|
||||
result.AddRange(GetCollectionSettings(runspace, collectionName, connectionBroker, primaryDomainController, "LoadBalancing", out errors));
|
||||
errorsList.AddRange(errors);
|
||||
result.AddRange(GetCollectionSettings(runspace, collectionName, connectionBroker, primaryDomainController, "Client", out errors));
|
||||
errorsList.AddRange(errors);
|
||||
errors = errorsList.ToArray();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static List<RdsCollectionSetting> GetCollectionUserGroups(this Runspace runspace, string collectionName, string connectionBroker, string primaryDomainController, out object[] errors)
|
||||
{
|
||||
return GetCollectionSettings(runspace, collectionName, connectionBroker, primaryDomainController, "UserGroup", out errors);
|
||||
}
|
||||
|
||||
public static List<string> GetSessionHosts(this Runspace runspace, string collectionName, string connectionBroker, string primaryDomainController, out object[] errors)
|
||||
{
|
||||
Command cmd = new Command("Get-RDSessionHost");
|
||||
cmd.Parameters.Add("CollectionName", collectionName);
|
||||
cmd.Parameters.Add("ConnectionBroker", connectionBroker);
|
||||
|
||||
var psObjects = ExecuteShellCommand(runspace, cmd, false, primaryDomainController, out errors);
|
||||
var rdsServers = new List<string>();
|
||||
|
||||
if (psObjects != null)
|
||||
{
|
||||
foreach(var psObject in psObjects)
|
||||
{
|
||||
rdsServers.Add(GetPSObjectProperty(psObject, "SessionHost").ToString());
|
||||
}
|
||||
}
|
||||
|
||||
return rdsServers;
|
||||
}
|
||||
|
||||
private static List<RdsCollectionSetting> GetCollectionSettings(this Runspace runspace, string collectionName, string connectionBroker, string primaryDomainController, string param, out object[] errors)
|
||||
{
|
||||
Command cmd = new Command("Get-RDSessionCollectionConfiguration");
|
||||
cmd.Parameters.Add("CollectionName", collectionName);
|
||||
cmd.Parameters.Add("ConnectionBroker", connectionBroker);
|
||||
|
||||
if (!string.IsNullOrEmpty(param))
|
||||
{
|
||||
cmd.Parameters.Add(param, true);
|
||||
}
|
||||
|
||||
var psObject = ExecuteShellCommand(runspace, cmd, false, primaryDomainController, out errors).FirstOrDefault();
|
||||
|
||||
var properties = typeof(RdsCollectionSettings).GetProperties().Select(p => p.Name.ToLower());
|
||||
var collectionSettings = new RdsCollectionSettings();
|
||||
var result = new List<RdsCollectionSetting>();
|
||||
|
||||
if (psObject != null)
|
||||
{
|
||||
foreach (var prop in psObject.Properties)
|
||||
{
|
||||
if (prop.Name.ToLower() != "id" && prop.Name.ToLower() != "rdscollectionid")
|
||||
{
|
||||
result.Add(new RdsCollectionSetting
|
||||
{
|
||||
PropertyName = prop.Name,
|
||||
PropertyValue = prop.Value
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
private static Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd, bool useDomainController, string primaryDomainController)
|
||||
{
|
||||
object[] errors;
|
||||
return ExecuteShellCommand(runSpace, cmd, useDomainController, primaryDomainController, out errors);
|
||||
}
|
||||
|
||||
private static Collection<PSObject> ExecuteShellCommand(Runspace runSpace, Command cmd, bool useDomainController, string primaryDomainController,
|
||||
out object[] errors)
|
||||
{
|
||||
Log.WriteStart("ExecuteShellCommand");
|
||||
List<object> errorList = new List<object>();
|
||||
|
||||
if (useDomainController)
|
||||
{
|
||||
CommandParameter dc = new CommandParameter("DomainController", primaryDomainController);
|
||||
if (!cmd.Parameters.Contains(dc))
|
||||
{
|
||||
cmd.Parameters.Add(dc);
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
Log.WriteWarning(errorMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
pipeLine = null;
|
||||
errors = errorList.ToArray();
|
||||
Log.WriteEnd("ExecuteShellCommand");
|
||||
return results;
|
||||
}
|
||||
|
||||
private static object GetPSObjectProperty(PSObject obj, string name)
|
||||
{
|
||||
return obj.Members[name].Value;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -46,6 +46,7 @@
|
|||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="RdsRunspaceExtensions.cs" />
|
||||
<Compile Include="Windows2012.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="VersionInfo.cs" />
|
||||
|
|
|
@ -486,19 +486,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
|||
try
|
||||
{
|
||||
runSpace = OpenRunspace();
|
||||
|
||||
Command cmd = new Command("Get-RDSessionCollection");
|
||||
cmd.Parameters.Add("CollectionName", collectionName);
|
||||
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
||||
|
||||
var collectionPs = ExecuteShellCommand(runSpace, cmd, false).FirstOrDefault();
|
||||
|
||||
if (collectionPs != null)
|
||||
{
|
||||
collection = new RdsCollection();
|
||||
collection.Name = Convert.ToString(GetPSObjectProperty(collectionPs, "CollectionName"));
|
||||
collection.Description = Convert.ToString(GetPSObjectProperty(collectionPs, "CollectionDescription"));
|
||||
}
|
||||
collection = runSpace.GetCollection(collectionName, ConnectionBroker, PrimaryDomainController);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@ -1656,6 +1644,124 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
|||
|
||||
#endregion
|
||||
|
||||
#region Import Collection
|
||||
|
||||
public ImportedRdsCollection GetExistingCollection(string collectionName)
|
||||
{
|
||||
Runspace runspace = null;
|
||||
ImportedRdsCollection result;
|
||||
|
||||
try
|
||||
{
|
||||
runspace = OpenRunspace();
|
||||
var collection = runspace.GetCollection(collectionName, ConnectionBroker, PrimaryDomainController);
|
||||
result = new ImportedRdsCollection
|
||||
{
|
||||
CollectionName = collection.Name,
|
||||
Description = collection.Description
|
||||
};
|
||||
|
||||
if (collection == null)
|
||||
{
|
||||
throw new NullReferenceException(string.Format("Collection \"{0}\" not found", collectionName));
|
||||
}
|
||||
|
||||
object[] errors;
|
||||
result.CollectionSettings = runspace.GetCollectionSettings(collectionName, ConnectionBroker, PrimaryDomainController, out errors).ToList();
|
||||
|
||||
if (errors.Any())
|
||||
{
|
||||
throw new Exception(string.Format("Collection not imported:\r\n{0}", string.Join("r\\n\\", errors.Select(e => e.ToString()).ToArray())));
|
||||
}
|
||||
|
||||
result.SessionHosts = runspace.GetSessionHosts(collectionName, ConnectionBroker, PrimaryDomainController, out errors);
|
||||
|
||||
if (errors.Any())
|
||||
{
|
||||
throw new Exception(string.Format("Collection not imported:\r\n{0}", string.Join("r\\n\\", errors.Select(e => e.ToString()).ToArray())));
|
||||
}
|
||||
|
||||
result.UserGroups = runspace.GetCollectionUserGroups(collectionName, ConnectionBroker, PrimaryDomainController, out errors).ToList();
|
||||
|
||||
if (errors.Any())
|
||||
{
|
||||
throw new Exception(string.Format("Collection not imported:\r\n{0}", string.Join("r\\n\\", errors.Select(e => e.ToString()).ToArray())));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
CloseRunspace(runspace);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void ImportCollection(string organizationId, RdsCollection collection, List<string> users)
|
||||
{
|
||||
Runspace runSpace = null;
|
||||
|
||||
try
|
||||
{
|
||||
runSpace = OpenRunspace();
|
||||
var orgPath = GetOrganizationPath(organizationId);
|
||||
CheckOrCreateAdGroup(GetComputerGroupPath(organizationId, collection.Name), orgPath, GetComputersGroupName(collection.Name), RdsCollectionComputersGroupDescription);
|
||||
CheckOrCreateHelpDeskComputerGroup();
|
||||
string helpDeskGroupSamAccountName = CheckOrCreateAdGroup(GetHelpDeskGroupPath(RDSHelpDeskGroup), GetRootOUPath(), RDSHelpDeskGroup, RDSHelpDeskGroupDescription);
|
||||
string groupName = GetLocalAdminsGroupName(collection.Name);
|
||||
string groupPath = GetGroupPath(organizationId, collection.Name, groupName);
|
||||
string localAdminsGroupSamAccountName = CheckOrCreateAdGroup(groupPath, GetOrganizationPath(organizationId), groupName, WspAdministratorsGroupDescription);
|
||||
CheckOrCreateAdGroup(GetUsersGroupPath(organizationId, collection.Name), orgPath, GetUsersGroupName(collection.Name), RdsCollectionUsersGroupDescription);
|
||||
|
||||
var capPolicyName = GetPolicyName(organizationId, collection.Name, RdsPolicyTypes.RdCap);
|
||||
var rapPolicyName = GetPolicyName(organizationId, collection.Name, RdsPolicyTypes.RdRap);
|
||||
|
||||
foreach (var gateway in Gateways)
|
||||
{
|
||||
CreateHelpDeskRdCapForce(runSpace, gateway);
|
||||
CreateHelpDeskRdRapForce(runSpace, gateway);
|
||||
|
||||
if (!CentralNps)
|
||||
{
|
||||
CreateRdCapForce(runSpace, gateway, capPolicyName, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
||||
}
|
||||
|
||||
CreateRdRapForce(runSpace, gateway, rapPolicyName, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
||||
}
|
||||
|
||||
if (CentralNps)
|
||||
{
|
||||
CreateCentralNpsPolicy(runSpace, CentralNpsHost, capPolicyName, collection.Name, organizationId);
|
||||
}
|
||||
|
||||
//add user group to collection
|
||||
AddUserGroupsToCollection(runSpace, collection.Name, new List<string> { GetUsersGroupName(collection.Name) });
|
||||
|
||||
//add session servers to group
|
||||
foreach (var rdsServer in collection.Servers)
|
||||
{
|
||||
MoveSessionHostToCollectionOU(rdsServer.Name, collection.Name, organizationId);
|
||||
AddAdGroupToLocalAdmins(runSpace, rdsServer.FqdName, helpDeskGroupSamAccountName);
|
||||
AddAdGroupToLocalAdmins(runSpace, rdsServer.FqdName, localAdminsGroupSamAccountName);
|
||||
AddComputerToCollectionAdComputerGroup(organizationId, collection.Name, rdsServer);
|
||||
}
|
||||
|
||||
string collectionComputersPath = GetComputerGroupPath(organizationId, collection.Name);
|
||||
CreatePolicy(runSpace, organizationId, string.Format("{0}-administrators", collection.Name),
|
||||
new DirectoryEntry(GetGroupPath(organizationId, collection.Name, GetLocalAdminsGroupName(collection.Name))), new DirectoryEntry(collectionComputersPath), collection.Name);
|
||||
CreatePolicy(runSpace, organizationId, string.Format("{0}-users", collection.Name), new DirectoryEntry(GetUsersGroupPath(organizationId, collection.Name))
|
||||
, new DirectoryEntry(collectionComputersPath), collection.Name);
|
||||
CreateHelpDeskPolicy(runSpace, new DirectoryEntry(GetHelpDeskGroupPath(RDSHelpDeskGroup)), new DirectoryEntry(collectionComputersPath), organizationId, collection.Name);
|
||||
|
||||
SetUsersInCollection(organizationId, collection.Name, users);
|
||||
}
|
||||
finally
|
||||
{
|
||||
CloseRunspace(runSpace);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void AddRdsServerToDeployment(Runspace runSpace, RdsServer server)
|
||||
{
|
||||
Command cmd = new Command("Add-RDserver");
|
||||
|
@ -2723,6 +2829,11 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
|||
cmd.Parameters.Add("CollectionName", collection.Name);
|
||||
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
||||
|
||||
if (string.IsNullOrEmpty(collection.Settings.ClientDeviceRedirectionOptions))
|
||||
{
|
||||
collection.Settings.ClientDeviceRedirectionOptions = "None";
|
||||
}
|
||||
|
||||
var properties = collection.Settings.GetType().GetProperties();
|
||||
|
||||
foreach(var prop in properties)
|
||||
|
@ -2733,7 +2844,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
|||
|
||||
if (value != null)
|
||||
{
|
||||
cmd.Parameters.Add(prop.Name, value);
|
||||
cmd.Parameters.Add(prop.Name, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,6 +108,10 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
|||
|
||||
private System.Threading.SendOrPostCallback MoveSessionHostsToCollectionOUOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback GetExistingCollectionOperationCompleted;
|
||||
|
||||
private System.Threading.SendOrPostCallback ImportCollectionOperationCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public RemoteDesktopServices() {
|
||||
this.Url = "http://localhost:9003/RemoteDesktopServices.asmx";
|
||||
|
@ -230,6 +234,12 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
|||
/// <remarks/>
|
||||
public event MoveSessionHostsToCollectionOUCompletedEventHandler MoveSessionHostsToCollectionOUCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event GetExistingCollectionCompletedEventHandler GetExistingCollectionCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
public event ImportCollectionCompletedEventHandler ImportCollectionCompleted;
|
||||
|
||||
/// <remarks/>
|
||||
[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)]
|
||||
|
@ -1933,6 +1943,94 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
|||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetExistingCollection", 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 ImportedRdsCollection GetExistingCollection(string collectionName) {
|
||||
object[] results = this.Invoke("GetExistingCollection", new object[] {
|
||||
collectionName});
|
||||
return ((ImportedRdsCollection)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginGetExistingCollection(string collectionName, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("GetExistingCollection", new object[] {
|
||||
collectionName}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public ImportedRdsCollection EndGetExistingCollection(System.IAsyncResult asyncResult) {
|
||||
object[] results = this.EndInvoke(asyncResult);
|
||||
return ((ImportedRdsCollection)(results[0]));
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetExistingCollectionAsync(string collectionName) {
|
||||
this.GetExistingCollectionAsync(collectionName, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void GetExistingCollectionAsync(string collectionName, object userState) {
|
||||
if ((this.GetExistingCollectionOperationCompleted == null)) {
|
||||
this.GetExistingCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetExistingCollectionOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("GetExistingCollection", new object[] {
|
||||
collectionName}, this.GetExistingCollectionOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnGetExistingCollectionOperationCompleted(object arg) {
|
||||
if ((this.GetExistingCollectionCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.GetExistingCollectionCompleted(this, new GetExistingCollectionCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")]
|
||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ImportCollection", 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 ImportCollection(string organizationId, RdsCollection collection, string[] users) {
|
||||
this.Invoke("ImportCollection", new object[] {
|
||||
organizationId,
|
||||
collection,
|
||||
users});
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public System.IAsyncResult BeginImportCollection(string organizationId, RdsCollection collection, string[] users, System.AsyncCallback callback, object asyncState) {
|
||||
return this.BeginInvoke("ImportCollection", new object[] {
|
||||
organizationId,
|
||||
collection,
|
||||
users}, callback, asyncState);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void EndImportCollection(System.IAsyncResult asyncResult) {
|
||||
this.EndInvoke(asyncResult);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void ImportCollectionAsync(string organizationId, RdsCollection collection, string[] users) {
|
||||
this.ImportCollectionAsync(organizationId, collection, users, null);
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public void ImportCollectionAsync(string organizationId, RdsCollection collection, string[] users, object userState) {
|
||||
if ((this.ImportCollectionOperationCompleted == null)) {
|
||||
this.ImportCollectionOperationCompleted = new System.Threading.SendOrPostCallback(this.OnImportCollectionOperationCompleted);
|
||||
}
|
||||
this.InvokeAsync("ImportCollection", new object[] {
|
||||
organizationId,
|
||||
collection,
|
||||
users}, this.ImportCollectionOperationCompleted, userState);
|
||||
}
|
||||
|
||||
private void OnImportCollectionOperationCompleted(object arg) {
|
||||
if ((this.ImportCollectionCompleted != null)) {
|
||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||
this.ImportCollectionCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public new void CancelAsync(object userState) {
|
||||
base.CancelAsync(userState);
|
||||
|
@ -2578,4 +2676,34 @@ namespace WebsitePanel.Providers.RemoteDesktopServices {
|
|||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void MoveSessionHostsToCollectionOUCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void GetExistingCollectionCompletedEventHandler(object sender, GetExistingCollectionCompletedEventArgs e);
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||
public partial class GetExistingCollectionCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||
|
||||
private object[] results;
|
||||
|
||||
internal GetExistingCollectionCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||
base(exception, cancelled, userState) {
|
||||
this.results = results;
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
public ImportedRdsCollection Result {
|
||||
get {
|
||||
this.RaiseExceptionIfNecessary();
|
||||
return ((ImportedRdsCollection)(this.results[0]));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <remarks/>
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||
public delegate void ImportCollectionCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||
}
|
||||
|
|
|
@ -711,5 +711,37 @@ namespace WebsitePanel.Server
|
|||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
[WebMethod, SoapHeader("settings")]
|
||||
public ImportedRdsCollection GetExistingCollection(string collectionName)
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.WriteStart("'{0}' GetExistingCollection", ProviderSettings.ProviderName);
|
||||
return RDSProvider.GetExistingCollection(collectionName);
|
||||
Log.WriteEnd("'{0}' GetExistingCollection", ProviderSettings.ProviderName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(String.Format("'{0}' GetExistingCollection", ProviderSettings.ProviderName), ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
[WebMethod, SoapHeader("settings")]
|
||||
public void ImportCollection(string organizationId, RdsCollection collection, List<string> users)
|
||||
{
|
||||
try
|
||||
{
|
||||
Log.WriteStart("'{0}' ImportCollection", ProviderSettings.ProviderName);
|
||||
RDSProvider.ImportCollection(organizationId, collection, users);
|
||||
Log.WriteEnd("'{0}' ImportCollection", ProviderSettings.ProviderName);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.WriteError(String.Format("'{0}' ImportCollection", ProviderSettings.ProviderName), ex);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -88,11 +88,11 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Address Inforamtion.
|
||||
/// Looks up a localized string similar to Address Information.
|
||||
/// </summary>
|
||||
public static string AddressInforamtion {
|
||||
public static string AddressInformation {
|
||||
get {
|
||||
return ResourceManager.GetString("AddressInforamtion", resourceCulture);
|
||||
return ResourceManager.GetString("AddressInformation", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -123,8 +123,8 @@
|
|||
<data name="Address" xml:space="preserve">
|
||||
<value>Address</value>
|
||||
</data>
|
||||
<data name="AddressInforamtion" xml:space="preserve">
|
||||
<value>Address Inforamtion</value>
|
||||
<data name="AddressInformation" xml:space="preserve">
|
||||
<value>Address Information</value>
|
||||
</data>
|
||||
<data name="Back" xml:space="preserve">
|
||||
<value>Back</value>
|
||||
|
|
|
@ -169,7 +169,7 @@
|
|||
<div class="panel-heading" role="tab" id="heading-address-information">
|
||||
<h4 class="panel-title">
|
||||
<a class="collapsed" data-toggle="collapse" href="#address-information" aria-expanded="false" aria-controls="address-information">
|
||||
@UI.AddressInforamtion
|
||||
@UI.AddressInformation
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
|
|
@ -158,6 +158,7 @@
|
|||
|
||||
<Control key="rds_collections" />
|
||||
<Control key="rds_create_collection" general_key="rds_collections" />
|
||||
<Control key="rds_import_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" />
|
||||
<Control key="rds_application_edit_users" general_key="rds_collections" />
|
||||
|
|
|
@ -401,7 +401,8 @@
|
|||
<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" />
|
||||
<Control key="change_onetimepassword" src="WebsitePanel/UserAccountChangePassword.ascx" title="UserAccountChangePassword" type="View" icon="admin_lock_48.png" />
|
||||
<Control key="scpa" src="WebsitePanel/SetupControlPanelAccounts.ascx" title="SetupControlPanelAccounts" type="View" />
|
||||
</Controls>
|
||||
</ModuleDefinition>
|
||||
<ModuleDefinition id="AuditLog">
|
||||
|
@ -606,6 +607,7 @@
|
|||
<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_import_collection" src="WebsitePanel/RDS/RDSImportCollection.ascx" title="RDSImportCollection" 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" />
|
||||
<Control key="deleted_users" src="WebsitePanel/ExchangeServer/OrganizationDeletedUsers.ascx" title="OrganizationDeletedUsers" type="View" />
|
||||
|
|
|
@ -4581,6 +4581,9 @@
|
|||
<data name="Error.ERROR_USER_ACCOUNT_SUSPENDED" xml:space="preserve">
|
||||
<value>User account is Suspended</value>
|
||||
</data>
|
||||
<data name="Warning.USER_SHOULD_CHANGE_ONETIMEPASSWORD" xml:space="preserve">
|
||||
<value>You should change your one time password.</value>
|
||||
</data>
|
||||
<data name="VPS.VPS_CREATE_EMPTY_HOSTNAME_PATTERN" xml:space="preserve">
|
||||
<value>Hostname pattern is not specified. Could not create VPS with blank hostname.</value>
|
||||
</data>
|
||||
|
@ -5289,6 +5292,9 @@
|
|||
<data name="UserItemType.ExchangeAccount" xml:space="preserve">
|
||||
<value>Exchange Account</value>
|
||||
</data>
|
||||
<data name="UserItemType.Users" xml:space="preserve">
|
||||
<value>Account Home</value>
|
||||
</data>
|
||||
<data name="Error.WEB_PUB_DISABLE" xml:space="preserve">
|
||||
<value>Could not disable access to Web Publishing feature for the account specified</value>
|
||||
</data>
|
||||
|
@ -5784,6 +5790,9 @@
|
|||
<data name="Error.RDS_CREATE_COLLECTION_RDSSERVER_REQUAIRED" xml:space="preserve">
|
||||
<value>Error creating rds collection. You need to add at least 1 rds server to collection</value>
|
||||
</data>
|
||||
<data name="Error.RDS_IMPORT_COLLECTION_NOT_FOUND" xml:space="preserve">
|
||||
<value>Error importing rds collection. Collection not found</value>
|
||||
</data>
|
||||
<data name="Quota.Exchange2013.ResourceMailboxes" xml:space="preserve">
|
||||
<value>Resource Mailboxes per Organization</value>
|
||||
</data>
|
||||
|
@ -5820,6 +5829,9 @@
|
|||
<data name="ERROR.RDSCOLLECTION_NOT_CREATED" xml:space="preserve">
|
||||
<value>Collection not created</value>
|
||||
</data>
|
||||
<data name="ERROR.RDSCOLLECTION_NOT_IMPORTED" xml:space="preserve">
|
||||
<value>Collection not imported</value>
|
||||
</data>
|
||||
<data name="ERROR.RDSSESSIONHOST_CERTIFICATE_NOT_INSTALLED" xml:space="preserve">
|
||||
<value>Session host certificate not installed</value>
|
||||
</data>
|
||||
|
|
|
@ -382,7 +382,7 @@ namespace WebsitePanel.Portal
|
|||
else return BusinessErrorCodes.ERROR_USER_ACCOUNT_ROLE_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return authResult;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
|
|
@ -120,9 +120,15 @@
|
|||
<data name="cbAdministrators.Text" xml:space="preserve">
|
||||
<value>Administrators</value>
|
||||
</data>
|
||||
<data name="cbAllowImport.Text" xml:space="preserve">
|
||||
<value>Allow</value>
|
||||
</data>
|
||||
<data name="cbUsers.Text" xml:space="preserve">
|
||||
<value>Users</value>
|
||||
</data>
|
||||
<data name="secAllowImport.Text" xml:space="preserve">
|
||||
<value>Connections Import</value>
|
||||
</data>
|
||||
<data name="secChangeDesktop.Text" xml:space="preserve">
|
||||
<value>Changing Desktop Disabled</value>
|
||||
</data>
|
||||
|
|
|
@ -0,0 +1,162 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ddlPriorityItem.High" xml:space="preserve">
|
||||
<value>High</value>
|
||||
</data>
|
||||
<data name="ddlPriorityItem.Low" xml:space="preserve">
|
||||
<value>Low</value>
|
||||
</data>
|
||||
<data name="ddlPriorityItem.Normal" xml:space="preserve">
|
||||
<value>Normal</value>
|
||||
</data>
|
||||
<data name="lblFrom.Text" xml:space="preserve">
|
||||
<value>From:</value>
|
||||
</data>
|
||||
<data name="lblHtmlBody.Text" xml:space="preserve">
|
||||
<value>HTML Body:</value>
|
||||
</data>
|
||||
<data name="lblLogoUrl.Text" xml:space="preserve">
|
||||
<value>Logo Url:</value>
|
||||
</data>
|
||||
<data name="lblNoChangesHtmlBody" xml:space="preserve">
|
||||
<value>No Changes HTML Body:</value>
|
||||
</data>
|
||||
<data name="lblNoChangesTextBody.Text" xml:space="preserve">
|
||||
<value>No Changes Text Body:</value>
|
||||
</data>
|
||||
<data name="lblPasswordResetLinkSmsBody.Text" xml:space="preserve">
|
||||
<value>Password Reset Link Sms Body:</value>
|
||||
</data>
|
||||
<data name="lblPasswordResetPincodeSmsBody.Text" xml:space="preserve">
|
||||
<value>Password Reset Link Pincode Body:</value>
|
||||
</data>
|
||||
<data name="lblPriority.Text" xml:space="preserve">
|
||||
<value>Priority:</value>
|
||||
</data>
|
||||
<data name="lblSubject.Text" xml:space="preserve">
|
||||
<value>Subject:</value>
|
||||
</data>
|
||||
<data name="lblTextBody.Text" xml:space="preserve">
|
||||
<value>Text Body:</value>
|
||||
</data>
|
||||
<data name="lblSmsBody.Text" xml:space="preserve">
|
||||
<value>SMS</value>
|
||||
</data>
|
||||
</root>
|
|
@ -172,7 +172,7 @@
|
|||
<value>Webdav Portal URL</value>
|
||||
</data>
|
||||
<data name="WebdavPortalSettings.Text" xml:space="preserve">
|
||||
<value>Webdav Portal</value>
|
||||
<value>Organization Password Reset Module</value>
|
||||
</data>
|
||||
<data name="chkEnablePasswordReset.Text" xml:space="preserve">
|
||||
<value>Yes</value>
|
||||
|
|
|
@ -159,4 +159,7 @@
|
|||
<data name="lnkOrganizationUserPasswordResetPincodeLetter.Text" xml:space="preserve">
|
||||
<value>Organization User Password Reset Pincode Letter</value>
|
||||
</data>
|
||||
<data name="lnkOrganizationUserPasswordRequestLetter.Text" xml:space="preserve">
|
||||
<value>Organization User Password Request Letter</value>
|
||||
</data>
|
||||
</root>
|
|
@ -102,6 +102,7 @@ namespace WebsitePanel.WebPortal
|
|||
obj["ItemID"] = row["ItemID"].ToString();
|
||||
obj["PackageID"] = row["PackageID"].ToString();
|
||||
obj["FullType"] = "Space";
|
||||
obj["FullTypeLocalized"] = GetTypeDisplayName("Space");
|
||||
obj["AccountID"] = row["AccountID"].ToString();
|
||||
dataList.Add(obj);
|
||||
}
|
||||
|
@ -117,17 +118,23 @@ namespace WebsitePanel.WebPortal
|
|||
String.Format("%{0}%", filterValue), 0, 0, "", iNumResults, columnType, fullType);
|
||||
DataTable dt = dsObjectItems.Tables[2];
|
||||
List<Dictionary<string, string>> dataList = new List<Dictionary<string, string>>();
|
||||
int currUser = 0;
|
||||
for (int i = 0; i < dt.Rows.Count; ++i)
|
||||
{
|
||||
DataRow row = dt.Rows[i];
|
||||
string type = row["FullType"].ToString();
|
||||
Dictionary<string, string> obj = new Dictionary<string, string>();
|
||||
obj["ColumnType"] = row["ColumnType"].ToString();
|
||||
obj["TextSearch"] = row["TextSearch"].ToString();
|
||||
obj["ItemID"] = row["ItemID"].ToString();
|
||||
obj["PackageID"] = row["PackageID"].ToString();
|
||||
obj["FullType"] = row["FullType"].ToString();
|
||||
obj["FullType"] = type;
|
||||
obj["FullTypeLocalized"] = GetTypeDisplayName(type);
|
||||
obj["AccountID"] = row["AccountID"].ToString();
|
||||
dataList.Add(obj);
|
||||
if (String.Equals(type, "Users"))
|
||||
dataList.Insert(currUser++, obj);
|
||||
else
|
||||
dataList.Add(obj);
|
||||
}
|
||||
|
||||
var jsonSerialiser = new JavaScriptSerializer();
|
||||
|
@ -136,5 +143,14 @@ namespace WebsitePanel.WebPortal
|
|||
context.Response.Write(json);
|
||||
}
|
||||
}
|
||||
|
||||
protected const string ModuleName = "WebsitePanel";
|
||||
|
||||
protected string GetTypeDisplayName(string type)
|
||||
{
|
||||
return PortalUtils.GetSharedLocalizedString(ModuleName, "ServiceItemType." + type)
|
||||
?? PortalUtils.GetSharedLocalizedString(ModuleName, "UserItemType." + type)
|
||||
?? type;
|
||||
}
|
||||
}
|
||||
};
|
|
@ -8,6 +8,7 @@
|
|||
<%@ Register Src="UserControls/Breadcrumb.ascx" TagName="Breadcrumb" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
<%@ Register Src="UserControls/MailboxPlanSelector.ascx" TagName="MailboxPlanSelector" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/SendToControl.ascx" TagName="SendToControl" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
|
@ -105,12 +106,17 @@
|
|||
</wsp:EmailAddress>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<wsp:SendToControl id="sendToControl" runat="server" ValidationGroup="CreateMailbox" ControlToHide="PasswordBlock"></wsp:SendToControl>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="PasswordBlock" runat="server" Visible="false">
|
||||
<td class="FormLabel150" valign="top"><asp:Localize ID="locPassword" runat="server" meta:resourcekey="locPassword" Text="Password: *"></asp:Localize></td>
|
||||
<td>
|
||||
<wsp:PasswordControl id="password" runat="server" ValidationGroup="CreateMailbox" AllowGeneratePassword="true">
|
||||
<wsp:PasswordControl id="password" runat="server" ValidationGroup="CreateMailbox" AllowGeneratePassword="false">
|
||||
</wsp:PasswordControl>
|
||||
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" />
|
||||
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" Visible="False"/>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Web.Security;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
|
@ -161,12 +162,19 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
|
||||
string subscriberNumber = IsNewUser ? txtSubscriberNumber.Text.Trim() : userSelector.GetSubscriberNumber();
|
||||
|
||||
var passwordString = password.Password;
|
||||
|
||||
if (sendToControl.IsRequestSend && IsNewUser)
|
||||
{
|
||||
passwordString = Membership.GeneratePassword(16, 3);
|
||||
}
|
||||
|
||||
accountId = ES.Services.ExchangeServer.CreateMailbox(PanelRequest.ItemID, accountId, type,
|
||||
accountName,
|
||||
displayName,
|
||||
name,
|
||||
domain,
|
||||
password.Password,
|
||||
passwordString,
|
||||
chkSendInstructions.Checked,
|
||||
sendInstructionEmail.Text,
|
||||
Convert.ToInt32(mailboxPlanSelector.MailboxPlanId),
|
||||
|
@ -187,6 +195,15 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
}
|
||||
}
|
||||
|
||||
if (sendToControl.SendEmail && IsNewUser)
|
||||
{
|
||||
ES.Services.Organizations.SendUserPasswordRequestEmail(PanelRequest.ItemID, accountId, "User creation", sendToControl.Email, true);
|
||||
}
|
||||
else if (sendToControl.SendMobile && IsNewUser)
|
||||
{
|
||||
ES.Services.Organizations.SendUserPasswordRequestSms(PanelRequest.ItemID, accountId, "User creation", sendToControl.Mobile);
|
||||
}
|
||||
|
||||
Response.Redirect(EditUrl("AccountID", accountId.ToString(), "mailbox_settings",
|
||||
"SpaceID=" + PanelSecurity.PackageId.ToString(),
|
||||
"ItemID=" + PanelRequest.ItemID.ToString()));
|
||||
|
|
|
@ -228,6 +228,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
|
|||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email;
|
||||
|
||||
/// <summary>
|
||||
/// sendToControl control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SendToControl sendToControl;
|
||||
|
||||
/// <summary>
|
||||
/// PasswordBlock control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow PasswordBlock;
|
||||
|
||||
/// <summary>
|
||||
/// locPassword control.
|
||||
/// </summary>
|
||||
|
|
|
@ -5,106 +5,122 @@
|
|||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/QuotaViewer.ascx" TagName="QuotaViewer" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/EmailControl.ascx" TagName="EmailControl" TagPrefix="wsp" %>
|
||||
<%@ Register Src="../UserControls/SendToControl.ascx" TagName="SendToControl" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
|
||||
<div runat="server" id="divWrapper">
|
||||
<script language="javascript" type="text/javascript">
|
||||
function buildDisplayName() {
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = '';
|
||||
<script language="javascript" type="text/javascript">
|
||||
function buildDisplayName() {
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = '';
|
||||
|
||||
if (document.getElementById("<%= txtFirstName.ClientID %>").value != '')
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = document.getElementById("<%= txtFirstName.ClientID %>").value + ' ';
|
||||
if (document.getElementById("<%= txtFirstName.ClientID %>").value != '')
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = document.getElementById("<%= txtFirstName.ClientID %>").value + ' ';
|
||||
|
||||
if (document.getElementById("<%= txtInitials.ClientID %>").value != '')
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = document.getElementById("<%= txtDisplayName.ClientID %>").value + document.getElementById("<%= txtInitials.ClientID %>").value + ' ';
|
||||
if (document.getElementById("<%= txtInitials.ClientID %>").value != '')
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = document.getElementById("<%= txtDisplayName.ClientID %>").value + document.getElementById("<%= txtInitials.ClientID %>").value + ' ';
|
||||
|
||||
if (document.getElementById("<%= txtLastName.ClientID %>").value != '')
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = document.getElementById("<%= txtDisplayName.ClientID %>").value + document.getElementById("<%= txtLastName.ClientID %>").value;
|
||||
}
|
||||
</script>
|
||||
if (document.getElementById("<%= txtLastName.ClientID %>").value != '')
|
||||
document.getElementById("<%= txtDisplayName.ClientID %>").value = document.getElementById("<%= txtDisplayName.ClientID %>").value + document.getElementById("<%= txtLastName.ClientID %>").value;
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Left">
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="OrganizationUserAdd48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Create User"></asp:Localize>
|
||||
</div>
|
||||
<div class="FormBody">
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locFirstName" runat="server" meta:resourcekey="locFirstName" Text="First Name: "></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtFirstName" runat="server" CssClass="TextBox100" onKeyUp="buildDisplayName();" ></asp:TextBox>
|
||||
|
||||
<div class="Module">
|
||||
<div class="Left">
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="Image1" SkinID="OrganizationUserAdd48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Create User"></asp:Localize>
|
||||
</div>
|
||||
<asp:UpdatePanel ID="CreateUserUpdatePanel" runat="server" UpdateMode="Conditional">
|
||||
<ContentTemplate>
|
||||
<div class="FormBody">
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locFirstName" runat="server" meta:resourcekey="locFirstName" Text="First Name: "></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtFirstName" runat="server" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
|
||||
<asp:Localize ID="locInitials" runat="server" meta:resourcekey="locInitials" Text="Initials:" />
|
||||
<asp:TextBox ID="txtInitials" runat="server" MaxLength="6" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locLastName" runat="server" meta:resourcekey="locLastName" Text="Last Name: "></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtLastName" runat="server" CssClass="TextBox200" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locDisplayName" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtDisplayName" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireDisplayName" runat="server" meta:resourcekey="valRequireDisplayName" ControlToValidate="txtDisplayName"
|
||||
ErrorMessage="Enter Display Name" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locSubscriberNumber" runat="server" meta:resourcekey="locSubscriberNumber" Text="Account Number: *"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtSubscriberNumber" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireSubscriberNumber" runat="server" meta:resourcekey="valRequireSubscriberNumber" ControlToValidate="txtSubscriberNumber"
|
||||
ErrorMessage="Enter Account Number" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locAccount" runat="server" meta:resourcekey="locAccount" Text="E-mail Address: *"></asp:Localize></td>
|
||||
<td>
|
||||
<wsp:EmailAddress id="email" runat="server" ValidationGroup="CreateMailbox">
|
||||
</wsp:EmailAddress>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150" valign="top"><asp:Localize ID="locPassword" runat="server" meta:resourcekey="locPassword" Text="Password: *"></asp:Localize></td>
|
||||
<td>
|
||||
<wsp:PasswordControl id="password" runat="server" ValidationGroup="CreateMailbox" AllowGeneratePassword="true" >
|
||||
</wsp:PasswordControl>
|
||||
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
<asp:TextBox ID="txtInitials" runat="server" MaxLength="6" CssClass="TextBox100" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locLastName" runat="server" meta:resourcekey="locLastName" Text="Last Name: "></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtLastName" runat="server" CssClass="TextBox200" onKeyUp="buildDisplayName();"></asp:TextBox>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locDisplayName" runat="server" meta:resourcekey="locDisplayName" Text="Display Name: *"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtDisplayName" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireDisplayName" runat="server" meta:resourcekey="valRequireDisplayName" ControlToValidate="txtDisplayName"
|
||||
ErrorMessage="Enter Display Name" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locSubscriberNumber" runat="server" meta:resourcekey="locSubscriberNumber" Text="Account Number: *"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtSubscriberNumber" runat="server" CssClass="HugeTextBox200"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequireSubscriberNumber" runat="server" meta:resourcekey="valRequireSubscriberNumber" ControlToValidate="txtSubscriberNumber"
|
||||
ErrorMessage="Enter Account Number" ValidationGroup="CreateMailbox" Display="Dynamic" Text="*" SetFocusOnError="True"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locAccount" runat="server" meta:resourcekey="locAccount" Text="E-mail Address: *"></asp:Localize></td>
|
||||
<td>
|
||||
<wsp:EmailAddress id="email" runat="server" ValidationGroup="CreateMailbox">
|
||||
</wsp:EmailAddress>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<wsp:SendToControl id="sendToControl" runat="server" ValidationGroup="CreateMailbox" ControlToHide="PasswordBlock"></wsp:SendToControl>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="PasswordBlock" runat="server" Visible="false">
|
||||
<td class="FormLabel150" valign="top">
|
||||
<asp:Localize ID="locPassword" runat="server" meta:resourcekey="locPassword" Text="Password: *"></asp:Localize></td>
|
||||
<td>
|
||||
<wsp:PasswordControl id="password" runat="server" ValidationGroup="CreateMailbox" AllowGeneratePassword="false">
|
||||
</wsp:PasswordControl>
|
||||
<asp:CheckBox ID="chkUserMustChangePassword" runat="server" meta:resourcekey="chkUserMustChangePassword" Text="User must change password at next login" Visible="False"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:CheckBox ID="chkSendInstructions" runat="server" meta:resourcekey="chkSendInstructions" Text="Send Setup Instructions" Checked="true" />
|
||||
</td>
|
||||
<td><wsp:EmailControl id="sendInstructionEmail" runat="server" RequiredEnabled="true" ValidationGroup="CreateMailbox"></wsp:EmailControl></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button id="btnCreate" runat="server" Text="Create Mailbox"
|
||||
CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateMailbox"
|
||||
OnClick="btnCreate_Click"
|
||||
OnClientClick="ShowProgressDialog('Creating mailbox...');"></asp:Button>
|
||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateMailbox" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:CheckBox ID="chkSendInstructions" runat="server" meta:resourcekey="chkSendInstructions" Text="Send Setup Instructions" Checked="true" />
|
||||
</td>
|
||||
<td>
|
||||
<wsp:EmailControl id="sendInstructionEmail" runat="server" RequiredEnabled="true" ValidationGroup="CreateMailbox"></wsp:EmailControl></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</ContentTemplate>
|
||||
</asp:UpdatePanel>
|
||||
<div class="FormFooterClean">
|
||||
<asp:Button ID="btnCreate" runat="server" Text="Create Mailbox"
|
||||
CssClass="Button1" meta:resourcekey="btnCreate" ValidationGroup="CreateMailbox"
|
||||
OnClick="btnCreate_Click"
|
||||
OnClientClick="ShowProgressDialog('Creating user...');"></asp:Button>
|
||||
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="CreateMailbox" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
using System;
|
||||
using System.Web.Security;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.Providers.ResultObjects;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
|
@ -98,10 +99,17 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
|
||||
try
|
||||
{
|
||||
var passwordString = password.Password;
|
||||
|
||||
if (sendToControl.IsRequestSend)
|
||||
{
|
||||
passwordString = Membership.GeneratePassword(16, 3);
|
||||
}
|
||||
|
||||
int accountId = ES.Services.Organizations.CreateUser(PanelRequest.ItemID, txtDisplayName.Text.Trim(),
|
||||
email.AccountName.ToLower(),
|
||||
email.DomainName.ToLower(),
|
||||
password.Password,
|
||||
passwordString,
|
||||
txtSubscriberNumber.Text.Trim(),
|
||||
chkSendInstructions.Checked,
|
||||
sendInstructionEmail.Text);
|
||||
|
@ -119,6 +127,15 @@ namespace WebsitePanel.Portal.HostedSolution
|
|||
}
|
||||
}
|
||||
|
||||
if (sendToControl.SendEmail)
|
||||
{
|
||||
ES.Services.Organizations.SendUserPasswordRequestEmail(PanelRequest.ItemID, accountId, "User creation", sendToControl.Email, true);
|
||||
}
|
||||
else if (sendToControl.SendMobile)
|
||||
{
|
||||
ES.Services.Organizations.SendUserPasswordRequestSms(PanelRequest.ItemID, accountId, "User creation", sendToControl.Mobile);
|
||||
}
|
||||
|
||||
Response.Redirect(EditUrl("AccountID", accountId.ToString(), "edit_user",
|
||||
"SpaceID=" + PanelSecurity.PackageId,
|
||||
"ItemID=" + PanelRequest.ItemID,
|
||||
|
|
|
@ -48,6 +48,15 @@ namespace WebsitePanel.Portal.HostedSolution {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// CreateUserUpdatePanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.UpdatePanel CreateUserUpdatePanel;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
|
@ -183,6 +192,24 @@ namespace WebsitePanel.Portal.HostedSolution {
|
|||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.ExchangeServer.UserControls.EmailAddress email;
|
||||
|
||||
/// <summary>
|
||||
/// sendToControl control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SendToControl sendToControl;
|
||||
|
||||
/// <summary>
|
||||
/// PasswordBlock control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow PasswordBlock;
|
||||
|
||||
/// <summary>
|
||||
/// locPassword control.
|
||||
/// </summary>
|
||||
|
|
|
@ -186,6 +186,11 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
ShowWarningMessage("WrongLogin");
|
||||
}
|
||||
else if (loginStatus == BusinessSuccessCodes.SUCCESS_USER_ONETIMEPASSWORD)
|
||||
{
|
||||
// One time password should be changed after login
|
||||
Response.Redirect(EditUrl("UserID", PanelSecurity.LoggedUserId.ToString(), "change_onetimepassword", "onetimepassword=true"), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
// redirect by shortcut
|
||||
|
|
|
@ -150,4 +150,7 @@
|
|||
<data name="locQuota.Text" xml:space="preserve">
|
||||
<value>Total Remote Desktop Collections Created:</value>
|
||||
</data>
|
||||
<data name="btnImportCollection.Text" xml:space="preserve">
|
||||
<value>Import RDS Collection</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,126 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btnSave.Text" xml:space="preserve">
|
||||
<value>Import</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Import RDSCollection</value>
|
||||
</data>
|
||||
</root>
|
|
@ -22,6 +22,8 @@
|
|||
<div class="FormButtonsBarCleanLeft">
|
||||
<asp:Button ID="btnAddCollection" runat="server" meta:resourcekey="btnAddCollection"
|
||||
Text="Create New RDS Collection" CssClass="Button1" OnClick="btnAddCollection_Click" />
|
||||
<asp:Button ID="btnImportCollection" runat="server" meta:resourcekey="btnImportCollection"
|
||||
Text="Import RDS Collection" CssClass="Button1" OnClick="btnImportCollection_Click" />
|
||||
</div>
|
||||
<div class="FormButtonsBarCleanRight">
|
||||
<asp:Panel ID="SearchPanel" runat="server" DefaultButton="cmdSearch">
|
||||
|
|
|
@ -30,6 +30,7 @@ using System;
|
|||
using System.Linq;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
using WebsitePanel.EnterpriseServer.Base.RDS;
|
||||
using WebsitePanel.Providers.Common;
|
||||
using WebsitePanel.Providers.HostedSolution;
|
||||
using WebsitePanel.Providers.OS;
|
||||
|
@ -53,6 +54,14 @@ namespace WebsitePanel.Portal.RDS
|
|||
{
|
||||
btnAddCollection.Enabled = (!(cntx.Quotas[Quotas.RDS_COLLECTIONS].QuotaAllocatedValue <= gvRDSCollections.Rows.Count) || (cntx.Quotas[Quotas.RDS_COLLECTIONS].QuotaAllocatedValue == -1));
|
||||
}
|
||||
|
||||
var defaultSettings = ES.Services.Users.GetUserSettings(PanelSecurity.EffectiveUserId, UserSettings.RDS_POLICY);
|
||||
var allowImport = Convert.ToBoolean(defaultSettings[RdsServerSettings.ALLOWCONNECTIONSIMPORT]);
|
||||
|
||||
if (!allowImport)
|
||||
{
|
||||
btnImportCollection.Visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void BindQuota(PackageContext cntx)
|
||||
|
@ -83,6 +92,12 @@ namespace WebsitePanel.Portal.RDS
|
|||
"SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
|
||||
protected void btnImportCollection_Click(object sender, EventArgs e)
|
||||
{
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_import_collection",
|
||||
"SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
|
||||
protected void gvRDSCollections_RowCommand(object sender, GridViewCommandEventArgs e)
|
||||
{
|
||||
if (e.CommandName == "DeleteItem")
|
||||
|
|
|
@ -57,6 +57,15 @@ namespace WebsitePanel.Portal.RDS {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnAddCollection;
|
||||
|
||||
/// <summary>
|
||||
/// btnImportCollection control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnImportCollection;
|
||||
|
||||
/// <summary>
|
||||
/// SearchPanel control.
|
||||
/// </summary>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="imgAddRDSServer" SkinID="AddRDSServer48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Add Server To Organization"></asp:Localize>
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Create New RDS Collection"></asp:Localize>
|
||||
</div>
|
||||
<div class="FormContentRDS">
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RDSImportCollection.ascx.cs" Inherits="WebsitePanel.Portal.RDS.RDSImportCollection" %>
|
||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||
|
||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||
<div id="ExchangeContainer">
|
||||
<div class="Module">
|
||||
<div class="Left">
|
||||
</div>
|
||||
<div class="Content">
|
||||
<div class="Center">
|
||||
<div class="Title">
|
||||
<asp:Image ID="imgAddRDSServer" SkinID="AddRDSServer48" runat="server" />
|
||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Import RDS Collection"></asp:Localize>
|
||||
</div>
|
||||
<div class="FormContentRDS">
|
||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="FormLabel150" style="width: 100px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtCollectionName" runat="server" CssClass="TextBox300" />
|
||||
<asp:RequiredFieldValidator ID="valCollectionName" runat="server" ErrorMessage="*" ControlToValidate="txtCollectionName" ValidationGroup="SaveRDSCollection"></asp:RequiredFieldValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="FormFooter">
|
||||
<asp:Button id="btnSave" runat="server" Text="Import" CssClass="Button1" meta:resourcekey="btnSave" OnClick="btnSave_Click" OnClientClick="ShowProgressDialog('Importing collection...');" ValidationGroup="SaveRDSCollection"></asp:Button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,35 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
namespace WebsitePanel.Portal.RDS
|
||||
{
|
||||
public partial class RDSImportCollection : WebsitePanelModuleBase
|
||||
{
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected void btnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Page.IsValid)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
ES.Services.RDS.ImportCollection(PanelRequest.ItemID, txtCollectionName.Text);
|
||||
Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "rds_collections", "SpaceID=" + PanelSecurity.PackageId));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ShowErrorMessage("RDSCOLLECTION_NOT_IMPORTED", ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.RDS {
|
||||
|
||||
|
||||
public partial class RDSImportCollection {
|
||||
|
||||
/// <summary>
|
||||
/// imgAddRDSServer control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Image imgAddRDSServer;
|
||||
|
||||
/// <summary>
|
||||
/// locTitle control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||
|
||||
/// <summary>
|
||||
/// messageBox control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
||||
|
||||
/// <summary>
|
||||
/// locCollectionName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locCollectionName;
|
||||
|
||||
/// <summary>
|
||||
/// txtCollectionName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtCollectionName;
|
||||
|
||||
/// <summary>
|
||||
/// valCollectionName control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator valCollectionName;
|
||||
|
||||
/// <summary>
|
||||
/// btnSave control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
||||
}
|
||||
}
|
|
@ -180,4 +180,15 @@
|
|||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
</asp:Panel>
|
||||
<wsp:CollapsiblePanel id="secAllowImport" runat="server" TargetControlID="allowImportPanel" meta:resourcekey="secAllowImport" Text="Connections Import"/>
|
||||
<asp:Panel ID="allowImportPanel" runat="server" Height="0" style="overflow:hidden;">
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<asp:CheckBox runat="server" Text="Users" ID="cbAllowImport" meta:resourcekey="cbAllowImport" Checked="false" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<br />
|
||||
</asp:Panel>
|
||||
|
|
|
@ -53,6 +53,7 @@ namespace WebsitePanel.Portal
|
|||
cbDisableCmdUsers.Checked = Convert.ToBoolean(settings[RdsServerSettings.DISABLE_CMD_USERS]);
|
||||
|
||||
ddTreshold.SelectedValue = settings[RdsServerSettings.DRIVE_SPACE_THRESHOLD_VALUE];
|
||||
cbAllowImport.Checked = Convert.ToBoolean(settings[RdsServerSettings.ALLOWCONNECTIONSIMPORT]);
|
||||
}
|
||||
|
||||
public void SaveSettings(UserSettings settings)
|
||||
|
@ -81,6 +82,7 @@ namespace WebsitePanel.Portal
|
|||
settings[RdsServerSettings.RDS_CONTROL_WITHOUT_PERMISSION_Users] = cbControlSessionUsers.Checked.ToString();
|
||||
settings[RdsServerSettings.DISABLE_CMD_ADMINISTRATORS] = cbDisableCmdAdministrators.Checked.ToString();
|
||||
settings[RdsServerSettings.DISABLE_CMD_USERS] = cbDisableCmdUsers.Checked.ToString();
|
||||
settings[RdsServerSettings.ALLOWCONNECTIONSIMPORT] = cbAllowImport.Checked.ToString();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -443,5 +443,32 @@ namespace WebsitePanel.Portal {
|
|||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbDisableCmdAdministrators;
|
||||
|
||||
/// <summary>
|
||||
/// secAllowImport control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::WebsitePanel.Portal.CollapsiblePanel secAllowImport;
|
||||
|
||||
/// <summary>
|
||||
/// allowImportPanel control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Panel allowImportPanel;
|
||||
|
||||
/// <summary>
|
||||
/// cbAllowImport control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox cbAllowImport;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SettingsUserPasswordRequestLetter.ascx.cs" Inherits="WebsitePanel.Portal.SettingsUserPasswordRequestLetter" %>
|
||||
|
||||
|
||||
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td class="SubHead" width="150" nowrap><asp:Label ID="lblFrom" runat="server" meta:resourcekey="lblFrom" Text="From:"></asp:Label></td>
|
||||
<td class="Normal" width="100%">
|
||||
<asp:TextBox ID="txtFrom" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblSubject" runat="server" meta:resourcekey="lblSubject" Text="Subject:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtSubject" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblPriority" runat="server" meta:resourcekey="lblPriority" Text="Priority"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:DropDownList ID="ddlPriority" runat="server" CssClass="NormalTextBox" resourcekey="ddlPriority">
|
||||
<asp:ListItem Value="High">High</asp:ListItem>
|
||||
<asp:ListItem Value="Normal">Normal</asp:ListItem>
|
||||
<asp:ListItem Value="Low">Low</asp:ListItem>
|
||||
</asp:DropDownList>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead"><asp:Label ID="lblLogoUrl" runat="server" meta:resourcekey="lblLogoUrl" Text="Logo Url:"></asp:Label></td>
|
||||
<td class="Normal">
|
||||
<asp:TextBox ID="txtLogoUrl" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblHtmlBody" runat="server" meta:resourcekey="lblHtmlBody" Text="HTML Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtHtmlBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblTextBody" runat="server" meta:resourcekey="lblTextBody" Text="Text Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtTextBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblSmsBody" runat="server" meta:resourcekey="lblSmsBody" Text="SMS Body:"></asp:Label></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="Normal" colspan="2">
|
||||
<asp:TextBox ID="txtSmsBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
|
@ -0,0 +1,37 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using WebsitePanel.EnterpriseServer;
|
||||
|
||||
namespace WebsitePanel.Portal
|
||||
{
|
||||
public partial class SettingsUserPasswordRequestLetter : WebsitePanelControlBase, IUserSettingsEditorControl
|
||||
{
|
||||
public void BindSettings(UserSettings settings)
|
||||
{
|
||||
txtFrom.Text = settings["From"];
|
||||
txtSubject.Text = settings["Subject"];
|
||||
Utils.SelectListItem(ddlPriority, settings["Priority"]);
|
||||
txtHtmlBody.Text = settings["HtmlBody"];
|
||||
txtTextBody.Text = settings["TextBody"];
|
||||
txtLogoUrl.Text = settings["LogoUrl"];
|
||||
|
||||
txtSmsBody.Text = settings["SMSBody"];
|
||||
}
|
||||
|
||||
public void SaveSettings(UserSettings settings)
|
||||
{
|
||||
settings["From"] = txtFrom.Text;
|
||||
settings["Subject"] = txtSubject.Text;
|
||||
settings["Priority"] = ddlPriority.SelectedValue;
|
||||
settings["HtmlBody"] = txtHtmlBody.Text;
|
||||
settings["TextBody"] = txtTextBody.Text;
|
||||
settings["LogoUrl"] = txtLogoUrl.Text;
|
||||
|
||||
settings["SMSBody"] = txtSmsBody.Text;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,141 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal {
|
||||
|
||||
|
||||
public partial class SettingsUserPasswordRequestLetter {
|
||||
|
||||
/// <summary>
|
||||
/// lblFrom control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblFrom;
|
||||
|
||||
/// <summary>
|
||||
/// txtFrom control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtFrom;
|
||||
|
||||
/// <summary>
|
||||
/// lblSubject control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblSubject;
|
||||
|
||||
/// <summary>
|
||||
/// txtSubject control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtSubject;
|
||||
|
||||
/// <summary>
|
||||
/// lblPriority control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblPriority;
|
||||
|
||||
/// <summary>
|
||||
/// ddlPriority control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DropDownList ddlPriority;
|
||||
|
||||
/// <summary>
|
||||
/// lblLogoUrl control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// txtLogoUrl control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtLogoUrl;
|
||||
|
||||
/// <summary>
|
||||
/// lblHtmlBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblHtmlBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtHtmlBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtHtmlBody;
|
||||
|
||||
/// <summary>
|
||||
/// lblTextBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblTextBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtTextBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtTextBody;
|
||||
|
||||
/// <summary>
|
||||
/// lblSmsBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Label lblSmsBody;
|
||||
|
||||
/// <summary>
|
||||
/// txtSmsBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtSmsBody;
|
||||
}
|
||||
}
|
|
@ -30,7 +30,7 @@
|
|||
{
|
||||
response($.map(data, function (item) {
|
||||
return {
|
||||
label: item.TextSearch + " [" + item.FullType + "]",
|
||||
label: item.TextSearch + " [" + item.FullTypeLocalized + "]",
|
||||
code: item
|
||||
};
|
||||
}));
|
||||
|
|
|
@ -48,6 +48,7 @@ namespace WebsitePanel.Portal.SkinControls
|
|||
const string TYPE_DOMAIN = "Domain";
|
||||
const string TYPE_ORGANIZATION = "Organization";
|
||||
const string TYPE_EXCHANGEACCOUNT = "ExchangeAccount";
|
||||
const string TYPE_EXCHANGEACCOUNT_MAILBOX = "ExchangeAccountMailbox";
|
||||
const string PID_SPACE_WEBSITES = "SpaceWebSites";
|
||||
const string PID_SPACE_DIMAINS = "SpaceDomains";
|
||||
const string PID_SPACE_EXCHANGESERVER = "SpaceExchangeServer";
|
||||
|
@ -155,6 +156,12 @@ namespace WebsitePanel.Portal.SkinControls
|
|||
"AccountID="+this.tbAccountId.Text,"Context=User",
|
||||
"moduleDefId=ExchangeServer");
|
||||
break;
|
||||
case TYPE_EXCHANGEACCOUNT_MAILBOX:
|
||||
res = PortalUtils.NavigatePageURL(PID_SPACE_EXCHANGESERVER, "ItemID", itemId.ToString(),
|
||||
PortalUtils.SPACE_ID_PARAM + "=" + spaceId, "ctl=edit_user",//"mid="+this.ModuleID.ToString(),
|
||||
"AccountID=" + this.tbAccountId.Text, "Context=Mailbox",
|
||||
"moduleDefId=ExchangeServer");
|
||||
break;
|
||||
default:
|
||||
res = PortalUtils.GetSpaceHomePageUrl(itemId);
|
||||
break;
|
||||
|
|
|
@ -80,6 +80,11 @@ namespace WebsitePanel.Portal
|
|||
if (!String.IsNullOrEmpty(changePasswordWarningText))
|
||||
lblChangePasswordWarning.Text = changePasswordWarningText;
|
||||
}
|
||||
|
||||
if (PanelRequest.GetBool("onetimepassword"))
|
||||
{
|
||||
ShowWarningMessage("USER_SHOULD_CHANGE_ONETIMEPASSWORD");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
|
@ -54,6 +54,10 @@
|
|||
<asp:HyperLink ID="lnkOrganizationUserPasswordResetPincodeLetter" runat="server" meta:resourcekey="lnkOrganizationUserPasswordResetPincodeLetter"
|
||||
Text="User Password Reset Pincode Letter" NavigateUrl='<%# GetSettingsLink("UserPasswordResetPincodeLetter", "SettingsUserPasswordResetPincodeLetter") %>'></asp:HyperLink>
|
||||
</li>
|
||||
<li>
|
||||
<asp:HyperLink ID="HyperLink3" runat="server" meta:resourcekey="lnkOrganizationUserPasswordRequestLetter"
|
||||
Text="Organization User Password Request Letter" NavigateUrl='<%# GetSettingsLink("OrganizationUserPasswordRequestLetter", "SettingsUserPasswordRequestLetter") %>'></asp:HyperLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="FormFooter">
|
||||
|
|
|
@ -129,6 +129,15 @@ namespace WebsitePanel.Portal {
|
|||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HyperLink lnkOrganizationUserPasswordResetPincodeLetter;
|
||||
|
||||
/// <summary>
|
||||
/// HyperLink3 control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.HyperLink HyperLink3;
|
||||
|
||||
/// <summary>
|
||||
/// btnCancel control.
|
||||
/// </summary>
|
||||
|
|
|
@ -0,0 +1,150 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="btnResetPassoword.Text" xml:space="preserve">
|
||||
<value>Send Password Reset Email</value>
|
||||
</data>
|
||||
<data name="chkSaveAsMobile.Text" xml:space="preserve">
|
||||
<value>Save as user mobile</value>
|
||||
</data>
|
||||
<data name="locEmailAddress.Text" xml:space="preserve">
|
||||
<value>Email: *</value>
|
||||
</data>
|
||||
<data name="locMobile.Text" xml:space="preserve">
|
||||
<value>Mobile: *</value>
|
||||
</data>
|
||||
<data name="locReason.Text" xml:space="preserve">
|
||||
<value>Reason:</value>
|
||||
</data>
|
||||
<data name="locSendTo.Text" xml:space="preserve">
|
||||
<value>Send to:</value>
|
||||
</data>
|
||||
<data name="locTitle.Text" xml:space="preserve">
|
||||
<value>Reset Password</value>
|
||||
</data>
|
||||
<data name="rbtnEmail.Text" xml:space="preserve">
|
||||
<value>Email</value>
|
||||
</data>
|
||||
<data name="rbtnMobile.Text" xml:space="preserve">
|
||||
<value>Mobile</value>
|
||||
</data>
|
||||
<data name="chkSendPasswordResetEmail.Text" xml:space="preserve">
|
||||
<value>Send Password Request</value>
|
||||
</data>
|
||||
</root>
|
|
@ -0,0 +1,52 @@
|
|||
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SendToControl.ascx.cs" Inherits="WebsitePanel.Portal.UserControls.SendToControl" %>
|
||||
|
||||
|
||||
<table id="send-to-table">
|
||||
<tr>
|
||||
<td class="FormLabel150"></td>
|
||||
<td>
|
||||
<asp:CheckBox ID="chkSendPasswordResetEmail" runat="server" meta:resourcekey="chkSendPasswordResetEmail" Text="Send Password Request" AutoPostBack="true" Checked="True" OnCheckedChanged="chkSendPasswordResetEmail_StateChanged" />
|
||||
</td>
|
||||
</tr>
|
||||
<tbody id="SendToBody" runat="server" visible="False">
|
||||
<tr>
|
||||
<td class="FormLabel150">
|
||||
<asp:Localize ID="locSendTo" runat="server" meta:resourcekey="locSendTo" Text="Send to:"></asp:Localize></td>
|
||||
<td class="FormRBtnL">
|
||||
<asp:RadioButton ID="rbtnEmail" runat="server" meta:resourcekey="rbtnEmail" Text="Email" GroupName="SendToGroup" AutoPostBack="true" Checked="true" OnCheckedChanged="SendToGroupCheckedChanged" />
|
||||
<asp:RadioButton ID="rbtnMobile" runat="server" meta:resourcekey="rbtnMobile" Text="Mobile" GroupName="SendToGroup" AutoPostBack="true" OnCheckedChanged="SendToGroupCheckedChanged" />
|
||||
<br />
|
||||
<br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="EmailRow" runat="server">
|
||||
<td class="FormLabel150" valign="top">
|
||||
<asp:Localize ID="locEmailAddress" runat="server" meta:resourcekey="locEmailAddress"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox runat="server" ID="txtEmailAddress" CssClass="HugeTextBox200" />
|
||||
<asp:RequiredFieldValidator ID="valEmailAddress" runat="server" ErrorMessage="*" ControlToValidate="txtEmailAddress" ValidationGroup="ResetUserPassword"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ValidationGroup="ResetUserPassword" ControlToValidate="txtEmailAddress" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="MobileRow" runat="server" visible="False">
|
||||
<td class="FormLabel150" valign="top">
|
||||
<asp:Localize ID="locMobile" runat="server" meta:resourcekey="locMobile"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox runat="server" ID="txtMobile" CssClass="HugeTextBox200" />
|
||||
<asp:RequiredFieldValidator ID="valMobile" runat="server" ErrorMessage="*" ControlToValidate="txtMobile" ValidationGroup="ResetUserPassword"></asp:RequiredFieldValidator>
|
||||
<asp:RegularExpressionValidator ID="regexMobileValid" runat="server" ValidationExpression="^\+?\d+$" ValidationGroup="ResetUserPassword" ControlToValidate="txtMobile" ErrorMessage="Invalid Mobile Format"></asp:RegularExpressionValidator>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<div runat="server" id="divWrapper">
|
||||
<script language="javascript" type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$("#send-to-table input").live("click", function (e) {
|
||||
DisableProgressDialog();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</div>
|
|
@ -0,0 +1,91 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
|
||||
namespace WebsitePanel.Portal.UserControls
|
||||
{
|
||||
public partial class SendToControl : WebsitePanelControlBase
|
||||
{
|
||||
public string ValidationGroup
|
||||
{
|
||||
get { return valEmailAddress.ValidationGroup; }
|
||||
set
|
||||
{
|
||||
valEmailAddress.ValidationGroup = value;
|
||||
regexEmailValid.ValidationGroup = value;
|
||||
valMobile.ValidationGroup = value;
|
||||
regexMobileValid.ValidationGroup = value;
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsRequestSend
|
||||
{
|
||||
get { return chkSendPasswordResetEmail.Checked; }
|
||||
}
|
||||
|
||||
public bool SendEmail
|
||||
{
|
||||
get { return chkSendPasswordResetEmail.Checked && rbtnEmail.Checked; }
|
||||
}
|
||||
|
||||
public bool SendMobile
|
||||
{
|
||||
get { return chkSendPasswordResetEmail.Checked && rbtnMobile.Checked; }
|
||||
}
|
||||
|
||||
public string Email
|
||||
{
|
||||
get { return txtEmailAddress.Text; }
|
||||
}
|
||||
|
||||
public string Mobile
|
||||
{
|
||||
get { return txtMobile.Text; }
|
||||
}
|
||||
|
||||
public string ControlToHide { get; set; }
|
||||
|
||||
protected void SendToGroupCheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
EmailRow.Visible = rbtnEmail.Checked;
|
||||
MobileRow.Visible = !rbtnEmail.Checked;
|
||||
}
|
||||
|
||||
protected void chkSendPasswordResetEmail_StateChanged(object sender, EventArgs e)
|
||||
{
|
||||
SendToBody.Visible = chkSendPasswordResetEmail.Checked;
|
||||
|
||||
if (!string.IsNullOrEmpty(ControlToHide))
|
||||
{
|
||||
var control = Parent.FindControl(ControlToHide);
|
||||
|
||||
if (control != null)
|
||||
{
|
||||
control.Visible = !chkSendPasswordResetEmail.Checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
var isTwilioEnabled = ES.Services.System.CheckIsTwilioEnabled();
|
||||
|
||||
rbtnMobile.Visible = isTwilioEnabled;
|
||||
|
||||
if (!Page.IsPostBack)
|
||||
{
|
||||
if (isTwilioEnabled)
|
||||
{
|
||||
rbtnMobile.Checked = true;
|
||||
rbtnEmail.Checked = false;
|
||||
SendToGroupCheckedChanged(null, null);
|
||||
}
|
||||
|
||||
chkSendPasswordResetEmail_StateChanged(null, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,159 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace WebsitePanel.Portal.UserControls {
|
||||
|
||||
|
||||
public partial class SendToControl {
|
||||
|
||||
/// <summary>
|
||||
/// chkSendPasswordResetEmail control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.CheckBox chkSendPasswordResetEmail;
|
||||
|
||||
/// <summary>
|
||||
/// SendToBody control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl SendToBody;
|
||||
|
||||
/// <summary>
|
||||
/// locSendTo control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locSendTo;
|
||||
|
||||
/// <summary>
|
||||
/// rbtnEmail control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton rbtnEmail;
|
||||
|
||||
/// <summary>
|
||||
/// rbtnMobile control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RadioButton rbtnMobile;
|
||||
|
||||
/// <summary>
|
||||
/// EmailRow control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow EmailRow;
|
||||
|
||||
/// <summary>
|
||||
/// locEmailAddress control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locEmailAddress;
|
||||
|
||||
/// <summary>
|
||||
/// txtEmailAddress control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtEmailAddress;
|
||||
|
||||
/// <summary>
|
||||
/// valEmailAddress control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator valEmailAddress;
|
||||
|
||||
/// <summary>
|
||||
/// regexEmailValid control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator regexEmailValid;
|
||||
|
||||
/// <summary>
|
||||
/// MobileRow control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlTableRow MobileRow;
|
||||
|
||||
/// <summary>
|
||||
/// locMobile control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.Localize locMobile;
|
||||
|
||||
/// <summary>
|
||||
/// txtMobile control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.TextBox txtMobile;
|
||||
|
||||
/// <summary>
|
||||
/// valMobile control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RequiredFieldValidator valMobile;
|
||||
|
||||
/// <summary>
|
||||
/// regexMobileValid control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.RegularExpressionValidator regexMobileValid;
|
||||
|
||||
/// <summary>
|
||||
/// divWrapper control.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Auto-generated field.
|
||||
/// To modify move field declaration from designer file to code-behind file.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divWrapper;
|
||||
}
|
||||
}
|
|
@ -332,6 +332,27 @@
|
|||
<Compile Include="HostedSharePoint\HostedSharePointEnterpriseStorageUsage.ascx.designer.cs">
|
||||
<DependentUpon>HostedSharePointEnterpriseStorageUsage.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="RDS\RDSImportCollection.ascx.cs">
|
||||
<DependentUpon>RDSImportCollection.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="RDS\RDSImportCollection.ascx.designer.cs">
|
||||
<DependentUpon>RDSImportCollection.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordRequestLetter.ascx.cs">
|
||||
<DependentUpon>SettingsUserPasswordRequestLetter.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="SettingsUserPasswordRequestLetter.ascx.designer.cs">
|
||||
<DependentUpon>SettingsUserPasswordRequestLetter.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\SendToControl.ascx.cs">
|
||||
<DependentUpon>SendToControl.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UserControls\SendToControl.ascx.designer.cs">
|
||||
<DependentUpon>SendToControl.ascx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="VpsMenu.ascx.cs">
|
||||
<DependentUpon>VpsMenu.ascx</DependentUpon>
|
||||
<SubType>ASPXCodeBehind</SubType>
|
||||
|
@ -4901,6 +4922,9 @@
|
|||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseRestoreSiteCollection.ascx" />
|
||||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseStorageSettings.ascx" />
|
||||
<Content Include="HostedSharePoint\HostedSharePointEnterpriseStorageUsage.ascx" />
|
||||
<Content Include="RDS\RDSImportCollection.ascx" />
|
||||
<Content Include="SettingsUserPasswordRequestLetter.ascx" />
|
||||
<Content Include="UserControls\SendToControl.ascx" />
|
||||
<Content Include="VpsMenu.ascx" />
|
||||
<Content Include="ProviderControls\HyperV2012R2_Settings.ascx" />
|
||||
<Content Include="SearchObject.ascx" />
|
||||
|
@ -5026,6 +5050,9 @@
|
|||
<Content Include="App_LocalResources\VpsMenu.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="App_LocalResources\SettingsUserPasswordRequestLetter.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<EmbeddedResource Include="RDS\App_LocalResources\RDSEditCollectionSettings.ascx.resx" />
|
||||
<Content Include="RDSServersEditServer.ascx" />
|
||||
<Content Include="RDS\AssignedRDSServers.ascx" />
|
||||
|
@ -5066,6 +5093,7 @@
|
|||
<Content Include="RDS\App_LocalResources\RDSLocalAdmins.ascx.resx" />
|
||||
<Content Include="RDS\App_LocalResources\RDSSetupLetter.ascx.resx" />
|
||||
<Content Include="RDS\App_LocalResources\RDSEditUserExperience.ascx.resx" />
|
||||
<Content Include="RDS\App_LocalResources\RDSImportCollection.ascx.resx" />
|
||||
<EmbeddedResource Include="ScheduleTaskControls\App_LocalResources\DomainLookupView.ascx.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>DomainLookupView.ascx.Designer.cs</LastGenOutput>
|
||||
|
@ -5225,6 +5253,7 @@
|
|||
<Content Include="UserControls\App_LocalResources\MailAccountActions.ascx.resx" />
|
||||
<Content Include="ScheduleTaskControls\App_LocalResources\UserPasswordExpirationNotificationView.ascx.resx" />
|
||||
<Content Include="SkinControls\App_LocalResources\SearchObject.ascx.resx" />
|
||||
<Content Include="UserControls\App_LocalResources\SendToControl.ascx.resx" />
|
||||
<EmbeddedResource Include="UserControls\App_LocalResources\WebsiteActions.ascx.resx" />
|
||||
<Content Include="VPS\UserControls\App_LocalResources\Generation.ascx.resx">
|
||||
<SubType>Designer</SubType>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue