Remote Application users changes
This commit is contained in:
parent
fe0edfbed2
commit
4ca584a5ca
12 changed files with 210 additions and 99 deletions
|
@ -1111,7 +1111,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
var collection = GetRdsCollection(collectionId);
|
var collection = GetRdsCollection(collectionId);
|
||||||
|
|
||||||
result.AddRange(rds.GetApplicationUsers(collection.Name, remoteApp.DisplayName));
|
result.AddRange(rds.GetApplicationUsers(collection.Name, remoteApp.Alias));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -1130,7 +1130,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
var collection = GetRdsCollection(collectionId);
|
var collection = ObjectUtils.FillObjectFromDataReader<RdsCollection>(DataProvider.GetRDSCollectionById(collectionId));
|
||||||
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
var rds = GetRemoteDesktopServices(GetRemoteDesktopServiceID(org.PackageId));
|
||||||
rds.SetApplicationUsers(collection.Name, remoteApp, users.ToArray());
|
rds.SetApplicationUsers(collection.Name, remoteApp, users.ToArray());
|
||||||
}
|
}
|
||||||
|
@ -1214,7 +1214,6 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
remoteApp.ShowInWebAccess = true;
|
remoteApp.ShowInWebAccess = true;
|
||||||
|
|
||||||
rds.AddRemoteApplication(collection.Name, remoteApp);
|
rds.AddRemoteApplication(collection.Name, remoteApp);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
@ -1319,13 +1318,14 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
List<RemoteApplication> existingCollectionApps = GetCollectionRemoteApplications(itemId, collection.Name);
|
List<RemoteApplication> existingCollectionApps = GetCollectionRemoteApplications(itemId, collection.Name);
|
||||||
List<RemoteApplication> remoteAppsToAdd = remoteApps.Where(x => !existingCollectionApps.Select(p => p.DisplayName).Contains(x.DisplayName)).ToList();
|
List<RemoteApplication> remoteAppsToAdd = remoteApps.Where(x => !existingCollectionApps.Select(p => p.Alias).Contains(x.Alias)).ToList();
|
||||||
foreach (var app in remoteAppsToAdd)
|
foreach (var app in remoteAppsToAdd)
|
||||||
{
|
{
|
||||||
|
app.ShowInWebAccess = true;
|
||||||
AddRemoteApplicationToCollection(itemId, collection, app);
|
AddRemoteApplicationToCollection(itemId, collection, app);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<RemoteApplication> remoteAppsToRemove = existingCollectionApps.Where(x => !remoteApps.Select(p => p.DisplayName).Contains(x.DisplayName)).ToList();
|
List<RemoteApplication> remoteAppsToRemove = existingCollectionApps.Where(x => !remoteApps.Select(p => p.Alias).Contains(x.Alias)).ToList();
|
||||||
foreach (var app in remoteAppsToRemove)
|
foreach (var app in remoteAppsToRemove)
|
||||||
{
|
{
|
||||||
RemoveRemoteApplicationFromCollection(itemId, collection, app);
|
RemoveRemoteApplicationFromCollection(itemId, collection, app);
|
||||||
|
|
|
@ -34,5 +34,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
public string FilePath { get; set; }
|
public string FilePath { get; set; }
|
||||||
public string FileVirtualPath { get; set; }
|
public string FileVirtualPath { get; set; }
|
||||||
public string RequiredCommandLine { get; set; }
|
public string RequiredCommandLine { get; set; }
|
||||||
|
public string Alias { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -643,7 +643,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
Command cmd = new Command("Get-RDRemoteApp");
|
Command cmd = new Command("Get-RDRemoteApp");
|
||||||
cmd.Parameters.Add("CollectionName", collectionName);
|
cmd.Parameters.Add("CollectionName", collectionName);
|
||||||
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
cmd.Parameters.Add("ConnectionBroker", ConnectionBroker);
|
||||||
cmd.Parameters.Add("DisplayName", applicationName);
|
cmd.Parameters.Add("Alias", applicationName);
|
||||||
|
|
||||||
var application = ExecuteShellCommand(runspace, cmd, false).FirstOrDefault();
|
var application = ExecuteShellCommand(runspace, cmd, false).FirstOrDefault();
|
||||||
|
|
||||||
|
@ -900,7 +900,6 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
RemoveRdRap(runSpace, gatewayHost, policyName);
|
RemoveRdRap(runSpace, gatewayHost, policyName);
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.WriteWarning(gatewayHost);
|
|
||||||
var userGroupParametr = string.Format("@({0})", string.Join(",", groups.Select(x => string.Format("\"{0}@{1}\"", x, RootDomain)).ToArray()));
|
var userGroupParametr = string.Format("@({0})", string.Join(",", groups.Select(x => string.Format("\"{0}@{1}\"", x, RootDomain)).ToArray()));
|
||||||
var computerGroupParametr = string.Format("\"{0}@{1}\"", GetComputersGroupName(collectionName), RootDomain);
|
var computerGroupParametr = string.Format("\"{0}@{1}\"", GetComputersGroupName(collectionName), RootDomain);
|
||||||
|
|
||||||
|
@ -910,10 +909,24 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
rdRapCommand.Parameters.Add("UserGroups", userGroupParametr);
|
rdRapCommand.Parameters.Add("UserGroups", userGroupParametr);
|
||||||
rdRapCommand.Parameters.Add("ComputerGroupType", 1);
|
rdRapCommand.Parameters.Add("ComputerGroupType", 1);
|
||||||
rdRapCommand.Parameters.Add("ComputerGroup", computerGroupParametr);
|
rdRapCommand.Parameters.Add("ComputerGroup", computerGroupParametr);
|
||||||
Log.WriteWarning("User Group:" + userGroupParametr);
|
|
||||||
Log.WriteWarning("Computer Group:" + computerGroupParametr);
|
object[] errors;
|
||||||
ExecuteRemoteShellCommand(runSpace, gatewayHost, rdRapCommand, RdsModuleName);
|
|
||||||
Log.WriteWarning("RD RAP Added");
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Format("Adding RD RAP ... {0}\r\nGateway Host\t{1}\r\nUser Group\t{2}\r\nComputer Group\t{3}", i + 1, gatewayHost, userGroupParametr, computerGroupParametr));
|
||||||
|
ExecuteRemoteShellCommand(runSpace, gatewayHost, rdRapCommand, out errors, RdsModuleName);
|
||||||
|
|
||||||
|
if (errors == null || !errors.Any())
|
||||||
|
{
|
||||||
|
Log.WriteWarning("RD RAP Added Successfully");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Log.WriteWarning(string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void RemoveRdRap(Runspace runSpace, string gatewayHost, string name)
|
internal void RemoveRdRap(Runspace runSpace, string gatewayHost, string name)
|
||||||
|
@ -1179,6 +1192,8 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
FileVirtualPath = Convert.ToString(GetPSObjectProperty(psObject, "FileVirtualPath"))
|
FileVirtualPath = Convert.ToString(GetPSObjectProperty(psObject, "FileVirtualPath"))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
remoteApp.Alias = remoteApp.DisplayName;
|
||||||
|
|
||||||
return remoteApp;
|
return remoteApp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1493,6 +1508,12 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, Command cmd, params string[] moduleImports)
|
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, Command cmd, params string[] moduleImports)
|
||||||
|
{
|
||||||
|
object[] errors;
|
||||||
|
return ExecuteRemoteShellCommand(runSpace, hostName, cmd, out errors, moduleImports);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, Command cmd, out object[] errors, params string[] moduleImports)
|
||||||
{
|
{
|
||||||
Command invokeCommand = new Command("Invoke-Command");
|
Command invokeCommand = new Command("Invoke-Command");
|
||||||
invokeCommand.Parameters.Add("ComputerName", hostName);
|
invokeCommand.Parameters.Add("ComputerName", hostName);
|
||||||
|
@ -1514,7 +1535,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
|
|
||||||
invokeCommand.Parameters.Add("ScriptBlock", sb);
|
invokeCommand.Parameters.Add("ScriptBlock", sb);
|
||||||
|
|
||||||
return ExecuteShellCommand(runSpace, invokeCommand, false);
|
return ExecuteShellCommand(runSpace, invokeCommand, false, out errors);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, List<string> scripts, params string[] moduleImports)
|
internal Collection<PSObject> ExecuteRemoteShellCommand(Runspace runSpace, string hostName, List<string> scripts, params string[] moduleImports)
|
||||||
|
@ -1779,12 +1800,28 @@ namespace WebsitePanel.Providers.RemoteDesktopServices
|
||||||
prop.SetValue(session, GetPSObjectProperty(userSession, prop.Name).ToString(), null);
|
prop.SetValue(session, GetPSObjectProperty(userSession, prop.Name).ToString(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
session.UserName = GetUserFullName(session.DomainName, session.UserName, runSpace);
|
||||||
result.Add(session);
|
result.Add(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetUserFullName(string domain, string userName, Runspace runspace)
|
||||||
|
{
|
||||||
|
Command cmd = new Command("Get-WmiObject");
|
||||||
|
cmd.Parameters.Add("Class", "win32_useraccount");
|
||||||
|
cmd.Parameters.Add("Filter", string.Format("Domain = '{0}' AND Name = '{1}'", domain, userName));
|
||||||
|
var names = ExecuteShellCommand(runspace, cmd, false);
|
||||||
|
|
||||||
|
if (names.Any())
|
||||||
|
{
|
||||||
|
return names.First().Members["FullName"].Value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5641,6 +5641,9 @@
|
||||||
<data name="ERROR.RDSCOLLECTIONSETTINGS_NOT_UPDATES" xml:space="preserve">
|
<data name="ERROR.RDSCOLLECTIONSETTINGS_NOT_UPDATES" xml:space="preserve">
|
||||||
<value>RDS Collection settings not updated</value>
|
<value>RDS Collection settings not updated</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ERROR.REMOTEAPPUSERS_NOT_UPDATED" xml:space="preserve">
|
||||||
|
<value>Remote application users not updated</value>
|
||||||
|
</data>
|
||||||
<data name="ERROR.REMOTE_DESKTOP_SERVICES_LOG_OFF_USER" xml:space="preserve">
|
<data name="ERROR.REMOTE_DESKTOP_SERVICES_LOG_OFF_USER" xml:space="preserve">
|
||||||
<value>RDS User logging off error</value>
|
<value>RDS User logging off error</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -127,10 +127,10 @@
|
||||||
<value />
|
<value />
|
||||||
</data>
|
</data>
|
||||||
<data name="Text.PageName" xml:space="preserve">
|
<data name="Text.PageName" xml:space="preserve">
|
||||||
<value>Edit RDS Application</value>
|
<value>Edit RDS Collection</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="locTitle.Text" xml:space="preserve">
|
<data name="locTitle.Text" xml:space="preserve">
|
||||||
<value>Edit RDS Application</value>
|
<value>Edit RDS Collection</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="locCollectionName.Text" xml:space="preserve">
|
<data name="locCollectionName.Text" xml:space="preserve">
|
||||||
<value>Collection Name:</value>
|
<value>Collection Name:</value>
|
||||||
|
@ -144,4 +144,13 @@
|
||||||
<data name="locApplicationName.Text" xml:space="preserve">
|
<data name="locApplicationName.Text" xml:space="preserve">
|
||||||
<value>Application Name:</value>
|
<value>Application Name:</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="secRdsApplicationUsers.Text" xml:space="preserve">
|
||||||
|
<value>Users</value>
|
||||||
|
</data>
|
||||||
|
<data name="secRdsApplicationEdit.Text" xml:space="preserve">
|
||||||
|
<value />
|
||||||
|
</data>
|
||||||
|
<data name="locLblApplicationName" xml:space="preserve">
|
||||||
|
<value>Application Name</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -2,6 +2,9 @@
|
||||||
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
<%@ Register Src="../UserControls/SimpleMessageBox.ascx" TagName="SimpleMessageBox" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
<%@ Register Src="../UserControls/EnableAsyncTasksSupport.ascx" TagName="EnableAsyncTasksSupport" TagPrefix="wsp" %>
|
||||||
<%@ Register Src="UserControls/RDSCollectionUsers.ascx" TagName="CollectionUsers" TagPrefix="wsp"%>
|
<%@ Register Src="UserControls/RDSCollectionUsers.ascx" TagName="CollectionUsers" TagPrefix="wsp"%>
|
||||||
|
<%@ Register Src="UserControls/RDSCollectionTabs.ascx" TagName="CollectionTabs" TagPrefix="wsp" %>
|
||||||
|
<%@ Register TagPrefix="wsp" TagName="CollapsiblePanel" Src="../UserControls/CollapsiblePanel.ascx" %>
|
||||||
|
<%@ Register Src="../UserControls/ItemButtonPanel.ascx" TagName="ItemButtonPanel" TagPrefix="wsp" %>
|
||||||
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
<script type="text/javascript" src="/JavaScript/jquery.min.js?v=1.4.4"></script>
|
||||||
|
|
||||||
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
<wsp:EnableAsyncTasksSupport id="asyncTasks" runat="server"/>
|
||||||
|
@ -12,39 +15,49 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="Content">
|
<div class="Content">
|
||||||
<div class="Center">
|
<div class="Center">
|
||||||
<div class="Title">
|
<div class="Title">
|
||||||
<asp:Image ID="imgEditRDSCollection" SkinID="EnterpriseStorageSpace48" runat="server" />
|
<asp:Image ID="imgEditRDSCollection" SkinID="EnterpriseStorageSpace48" runat="server" />
|
||||||
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit RDS Application"></asp:Localize>
|
<asp:Localize ID="locTitle" runat="server" meta:resourcekey="locTitle" Text="Edit RDS Collection"></asp:Localize>
|
||||||
|
-
|
||||||
|
<asp:Literal ID="litCollectionName" runat="server" Text="" />
|
||||||
</div>
|
</div>
|
||||||
<div class="FormContentRDS">
|
<div class="FormContentRDS">
|
||||||
<wsp:SimpleMessageBox id="messageBox" runat="server" />
|
<wsp:SimpleMessageBox id="SimpleMessageBox1" runat="server" />
|
||||||
|
<wsp:CollectionTabs id="tabs" runat="server" SelectedTab="rds_collection_edit_apps" />
|
||||||
|
|
||||||
<table>
|
<wsp:CollapsiblePanel id="secRdsApplicationEdit" runat="server"
|
||||||
<tr>
|
TargetControlID="panelRdsApplicationEdit" meta:resourcekey="secRdsApplicationEdit" Text="">
|
||||||
<td class="FormSimpleLabel" style="width: 120px;"><asp:Localize ID="locCollectionName" runat="server" meta:resourcekey="locCollectionName" Text="Collection Name:"></asp:Localize></td>
|
</wsp:CollapsiblePanel>
|
||||||
<td class="FormSimpleLabel">
|
|
||||||
<asp:Localize ID="locCName" runat="server" Text="" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="FormSimpleLabel" style="width: 120px;"><asp:Localize ID="locApplicationName" runat="server" meta:resourcekey="locApplicationName" Text="Collection Name:"></asp:Localize></td>
|
|
||||||
<td class="FormSimpleLabel">
|
|
||||||
<asp:Localize ID="locAppName" runat="server" Text="" />
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<fieldset id="UsersPanel" runat="server">
|
<asp:Panel runat="server" ID="panelRdsApplicationEdit">
|
||||||
<legend><asp:Localize ID="locUsersSection" runat="server" meta:resourcekey="locUsersSection" Text="Users"></asp:Localize></legend>
|
<div style="padding: 10px;">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="FormLabel150" style="width: 150px;">
|
||||||
|
<asp:Localize ID="locLblApplicationName" runat="server" meta:resourcekey="locLblApplicationName" Text="Application Name"/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<asp:TextBox ID="txtApplicationName" runat="server" CssClass="TextBox300" />
|
||||||
|
<asp:RequiredFieldValidator ID="valApplicationName" runat="server" ErrorMessage="*" ControlToValidate="txtApplicationName" ValidationGroup="SaveRDSCollection"/>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</asp:Panel>
|
||||||
|
|
||||||
|
<wsp:CollapsiblePanel id="secRdsApplicationUsers" runat="server"
|
||||||
|
TargetControlID="panelRdsApplicationUsers" meta:resourcekey="secRdsApplicationUsers" Text="">
|
||||||
|
</wsp:CollapsiblePanel>
|
||||||
|
|
||||||
|
<asp:Panel runat="server" ID="panelRdsApplicationUsers">
|
||||||
<div style="padding: 10px;">
|
<div style="padding: 10px;">
|
||||||
<wsp:CollectionUsers id="users" runat="server" />
|
<wsp:CollectionUsers id="users" runat="server" />
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</asp:Panel>
|
||||||
|
<div class="FormFooterClean">
|
||||||
<div class="FormFooter">
|
<wsp:ItemButtonPanel id="buttonPanel" runat="server" ValidationGroup="SaveRDSCollection"
|
||||||
<asp:Button id="btnSave" runat="server" Text="Save" CssClass="Button1" meta:resourcekey="btnSave" ValidationGroup="SaveRDSCollectoin" OnClick="btnSave_Click"></asp:Button>
|
OnSaveClick="btnSave_Click" OnSaveExitClick="btnSaveExit_Click" />
|
||||||
<asp:ValidationSummary ID="valSummary" runat="server" ShowMessageBox="True" ShowSummary="False" ValidationGroup="SaveRDSCollectoin" />
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -44,17 +44,38 @@ namespace WebsitePanel.Portal.RDS
|
||||||
{
|
{
|
||||||
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
||||||
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
|
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
|
||||||
var remoteApp = applications.Where(x => x.DisplayName.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
|
var remoteApp = applications.Where(x => x.Alias.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
|
||||||
var collectionUsers = ES.Services.RDS.GetRdsCollectionUsers(PanelRequest.CollectionID);
|
var organizationUsers = ES.Services.Organizations.GetOrganizationUsersPaged(PanelRequest.ItemID, null, null, null, 0, Int32.MaxValue).PageUsers;
|
||||||
var applicationUsers = ES.Services.RDS.GetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp);
|
var applicationUsers = ES.Services.RDS.GetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp);
|
||||||
|
|
||||||
locCName.Text = collection.Name;
|
litCollectionName.Text = collection.Name;
|
||||||
locAppName.Text = remoteApp.DisplayName;
|
txtApplicationName.Text = remoteApp.DisplayName;
|
||||||
|
var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Contains(x.DomainUserName));
|
||||||
|
|
||||||
users.SetUsers(collectionUsers.Where(x => applicationUsers.Contains(x.SamAccountName)).ToArray());
|
users.SetUsers(remoteAppUsers.ToArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool SaveApplicationUsers()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
||||||
|
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
|
||||||
|
var remoteApp = applications.Where(x => x.Alias.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
|
||||||
|
remoteApp.DisplayName = txtApplicationName.Text;
|
||||||
|
ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.AccountName).ToArray());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
ShowErrorMessage("REMOTEAPPUSERS_NOT_UPDATED", ex);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
protected void btnSave_Click(object sender, EventArgs e)
|
protected void btnSave_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!Page.IsValid)
|
if (!Page.IsValid)
|
||||||
|
@ -62,17 +83,19 @@ namespace WebsitePanel.Portal.RDS
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
SaveApplicationUsers();
|
||||||
{
|
}
|
||||||
var collection = ES.Services.RDS.GetRdsCollection(PanelRequest.CollectionID);
|
|
||||||
var applications = ES.Services.RDS.GetCollectionRemoteApplications(PanelRequest.ItemID, collection.Name);
|
|
||||||
var remoteApp = applications.Where(x => x.DisplayName.Equals(PanelRequest.ApplicationID, StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault();
|
|
||||||
ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.AccountName).ToArray());
|
|
||||||
|
|
||||||
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_collection_edit_apps", "CollectionId=" + PanelRequest.CollectionID, "ItemID=" + PanelRequest.ItemID));
|
protected void btnSaveExit_Click(object sender, EventArgs e)
|
||||||
}
|
{
|
||||||
catch (Exception)
|
if (!Page.IsValid)
|
||||||
{
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SaveApplicationUsers())
|
||||||
|
{
|
||||||
|
Response.Redirect(EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "rds_collection_edit_apps", "CollectionId=" + PanelRequest.CollectionID, "ItemID=" + PanelRequest.ItemID));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,67 +40,94 @@ namespace WebsitePanel.Portal.RDS {
|
||||||
protected global::System.Web.UI.WebControls.Localize locTitle;
|
protected global::System.Web.UI.WebControls.Localize locTitle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// messageBox control.
|
/// litCollectionName control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox messageBox;
|
protected global::System.Web.UI.WebControls.Literal litCollectionName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// locCollectionName control.
|
/// SimpleMessageBox1 control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Localize locCollectionName;
|
protected global::WebsitePanel.Portal.UserControls.SimpleMessageBox SimpleMessageBox1;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// locCName control.
|
/// tabs control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Localize locCName;
|
protected global::WebsitePanel.Portal.RDS.UserControls.RdsServerTabs tabs;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// locApplicationName control.
|
/// secRdsApplicationEdit control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Localize locApplicationName;
|
protected global::WebsitePanel.Portal.CollapsiblePanel secRdsApplicationEdit;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// locAppName control.
|
/// panelRdsApplicationEdit control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Localize locAppName;
|
protected global::System.Web.UI.WebControls.Panel panelRdsApplicationEdit;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// UsersPanel control.
|
/// locLblApplicationName control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl UsersPanel;
|
protected global::System.Web.UI.WebControls.Localize locLblApplicationName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// locUsersSection control.
|
/// txtApplicationName control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Localize locUsersSection;
|
protected global::System.Web.UI.WebControls.TextBox txtApplicationName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// valApplicationName 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 valApplicationName;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// secRdsApplicationUsers control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::WebsitePanel.Portal.CollapsiblePanel secRdsApplicationUsers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// panelRdsApplicationUsers 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 panelRdsApplicationUsers;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// users control.
|
/// users control.
|
||||||
|
@ -112,21 +139,12 @@ namespace WebsitePanel.Portal.RDS {
|
||||||
protected global::WebsitePanel.Portal.RDS.UserControls.RDSCollectionUsers users;
|
protected global::WebsitePanel.Portal.RDS.UserControls.RDSCollectionUsers users;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnSave control.
|
/// buttonPanel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// Auto-generated field.
|
/// Auto-generated field.
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.Button btnSave;
|
protected global::WebsitePanel.Portal.ItemButtonPanel buttonPanel;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// valSummary 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.ValidationSummary valSummary;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
<asp:TemplateField meta:resourcekey="gvUserName" HeaderText="gvUserName">
|
<asp:TemplateField meta:resourcekey="gvUserName" HeaderText="gvUserName">
|
||||||
<ItemStyle Width="30%" Wrap="false"/>
|
<ItemStyle Width="30%" Wrap="false"/>
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:Literal ID="litUserName" runat="server" Text='<%# string.Format("{0}\\{1}", Eval("DomainName"), Eval("UserName")) %>'/>
|
<asp:Literal ID="litUserName" runat="server" Text='<%# Eval("UserName") %>'/>
|
||||||
<asp:HiddenField ID="hfUnifiedSessionId" runat="server" Value='<%# Eval("UnifiedSessionId") %>'/>
|
<asp:HiddenField ID="hfUnifiedSessionId" runat="server" Value='<%# Eval("UnifiedSessionId") %>'/>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
|
|
|
@ -153,4 +153,7 @@
|
||||||
<data name="headerAddApps.Text" xml:space="preserve">
|
<data name="headerAddApps.Text" xml:space="preserve">
|
||||||
<value>Available Remote Applications</value>
|
<value>Available Remote Applications</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lnkDisplayName" xml:space="preserve">
|
||||||
|
<value>ShowProgressDialog('Loading ...');</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -24,16 +24,11 @@
|
||||||
<ItemStyle Width="90%" Wrap="false">
|
<ItemStyle Width="90%" Wrap="false">
|
||||||
</ItemStyle>
|
</ItemStyle>
|
||||||
<ItemTemplate>
|
<ItemTemplate>
|
||||||
<asp:Literal ID="litDisplayName" runat="server" Text='<%# Eval("DisplayName") %>'></asp:Literal>
|
<asp:hyperlink id="lnkDisplayName" meta:resourcekey="lnkDisplayName" runat="server" Text='<%# Eval("DisplayName") %>' NavigateUrl='<%# GetCollectionUsersEditUrl(Eval("Alias").ToString()) %>'/>
|
||||||
<asp:HiddenField ID="hfFilePath" runat="server" Value='<%# Eval("FilePath") %>'/>
|
<asp:HiddenField ID="hfFilePath" runat="server" Value='<%# Eval("FilePath") %>'/>
|
||||||
<asp:HiddenField ID="hfRequiredCommandLine" runat="server" Value='<%# Eval("RequiredCommandLine") %>'/>
|
<asp:HiddenField ID="hfRequiredCommandLine" runat="server" Value='<%# Eval("RequiredCommandLine") %>'/>
|
||||||
</ItemTemplate>
|
</ItemTemplate>
|
||||||
</asp:TemplateField>
|
</asp:TemplateField>
|
||||||
<asp:TemplateField>
|
|
||||||
<ItemTemplate>
|
|
||||||
<asp:hyperlink id="lnkUsers" meta:resourcekey="lnkUsers" runat="server" NavigateUrl='<%# GetCollectionUsersEditUrl(Eval("DisplayName").ToString()) %>'>Users</asp:hyperlink>
|
|
||||||
</ItemTemplate>
|
|
||||||
</asp:TemplateField>
|
|
||||||
</Columns>
|
</Columns>
|
||||||
</asp:GridView>
|
</asp:GridView>
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -113,8 +113,8 @@ namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
var sessionHosts = ES.Services.RDS.GetRdsCollectionSessionHosts(PanelRequest.CollectionID);
|
var sessionHosts = ES.Services.RDS.GetRdsCollectionSessionHosts(PanelRequest.CollectionID);
|
||||||
|
|
||||||
var addedApplications = GetApps();
|
var addedApplications = GetApps();
|
||||||
var displayNames = addedApplications.Select(p => p.DisplayName);
|
var aliases = addedApplications.Select(p => p.Alias);
|
||||||
apps = apps.Where(x => !displayNames.Contains(x.DisplayName)).ToList();
|
apps = apps.Where(x => !aliases.Contains(x.Alias)).ToList();
|
||||||
|
|
||||||
if (Direction == SortDirection.Ascending)
|
if (Direction == SortDirection.Ascending)
|
||||||
{
|
{
|
||||||
|
@ -140,6 +140,15 @@ namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
RequiredCommandLine = string.Format("/v:{0}", host.ToLower())
|
RequiredCommandLine = string.Format("/v:{0}", host.ToLower())
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var sessionHost = collection.Servers.Where(s => s.FqdName.Equals(host, StringComparison.CurrentCultureIgnoreCase)).First();
|
||||||
|
|
||||||
|
if (sessionHost != null)
|
||||||
|
{
|
||||||
|
fullRemote.DisplayName = string.Format("Full Desktop - {0}", sessionHost.Name.ToLower());
|
||||||
|
}
|
||||||
|
|
||||||
|
fullRemote.Alias = fullRemote.DisplayName.Replace(" ", "");
|
||||||
|
|
||||||
if (apps.Count > 0)
|
if (apps.Count > 0)
|
||||||
{
|
{
|
||||||
apps.Insert(0, fullRemote);
|
apps.Insert(0, fullRemote);
|
||||||
|
@ -201,7 +210,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
|
||||||
|
|
||||||
RemoteApplication app = new RemoteApplication();
|
RemoteApplication app = new RemoteApplication();
|
||||||
app.Alias = (string)gvApps.DataKeys[i][0];
|
app.Alias = (string)gvApps.DataKeys[i][0];
|
||||||
app.DisplayName = ((Literal)row.FindControl("litDisplayName")).Text;
|
app.DisplayName = ((HyperLink)row.FindControl("lnkDisplayName")).Text;
|
||||||
app.FilePath = ((HiddenField)row.FindControl("hfFilePath")).Value;
|
app.FilePath = ((HiddenField)row.FindControl("hfFilePath")).Value;
|
||||||
app.RequiredCommandLine = ((HiddenField)row.FindControl("hfRequiredCommandLine")).Value;
|
app.RequiredCommandLine = ((HiddenField)row.FindControl("hfRequiredCommandLine")).Value;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue