From 00a47e079d7dd35da441f26eacde1debf3de10ba Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Wed, 11 Feb 2015 04:22:28 -0800 Subject: [PATCH 1/2] RDS users logging --- .../RemoteDesktopServicesController.cs | 2 +- .../Windows2012.cs | 30 +++++++++++++++---- .../RDS/RDSEditApplicationUsers.ascx.cs | 4 +-- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/RemoteDesktopServices/RemoteDesktopServicesController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/RemoteDesktopServices/RemoteDesktopServicesController.cs index b9e2884f..09b99f2c 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/RemoteDesktopServices/RemoteDesktopServicesController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/RemoteDesktopServices/RemoteDesktopServicesController.cs @@ -1058,7 +1058,7 @@ namespace WebsitePanel.EnterpriseServer var accountNames = users.Select(x => x.AccountName).ToList(); //Set on server - rds.SetUsersInCollection(org.OrganizationId, collection.Name, users.Select(x => x.SamAccountName).ToArray()); + rds.SetUsersInCollection(org.OrganizationId, collection.Name, users.Select(x => x.AccountName).ToArray()); //Remove from db foreach (var userInDb in usersInDb) diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs index 2c892a1a..58d9ff9f 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.TerminalServices.Windows2012/Windows2012.cs @@ -527,6 +527,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices catch (Exception e) { result = false; + Log.WriteWarning(e.ToString()); } return result; @@ -672,6 +673,7 @@ namespace WebsitePanel.Providers.RemoteDesktopServices try { + Log.WriteWarning(string.Format("App alias: {0}\r\nCollection Name:{2}\r\nUsers: {1}", remoteApp.Alias, string.Join("; ", users), collectionName)); runspace = OpenRunspace(); Command cmd = new Command("Set-RDRemoteApp"); @@ -680,8 +682,18 @@ namespace WebsitePanel.Providers.RemoteDesktopServices cmd.Parameters.Add("DisplayName", remoteApp.DisplayName); cmd.Parameters.Add("UserGroups", users); cmd.Parameters.Add("Alias", remoteApp.Alias); + object[] errors; - ExecuteShellCommand(runspace, cmd, false).FirstOrDefault(); + ExecuteShellCommand(runspace, cmd, false, out errors).FirstOrDefault(); + + if (errors.Any()) + { + Log.WriteWarning(string.Format("{0} adding users errors: {1}", remoteApp.DisplayName, string.Join("\r\n", errors.Select(e => e.ToString()).ToArray()))); + } + else + { + Log.WriteWarning(string.Format("{0} users added successfully", remoteApp.DisplayName)); + } } catch(Exception) { @@ -985,15 +997,23 @@ namespace WebsitePanel.Providers.RemoteDesktopServices //adding users to group foreach (var user in users) - { - var samName = user.Split('\\').Last(); - var userPath = GetUserPath(organizationId, samName); + { + var userPath = GetUserPath(organizationId, user); + Log.WriteWarning(string.Format("User Path: {0}", userPath)); + Log.WriteWarning(string.Format("Group Name: {0}", usersGroupName)); if (ActiveDirectoryUtils.AdObjectExists(userPath)) { + var userObject = ActiveDirectoryUtils.GetADObject(userPath); + var samName = (string)ActiveDirectoryUtils.GetADObjectProperty(userObject, "sAMAccountName"); + Log.WriteWarning(string.Format("SAMAccountName: {0}", samName)); + if (!ActiveDirectoryUtils.IsUserInGroup(samName, usersGroupName)) { - ActiveDirectoryUtils.AddObjectToGroup(userPath, GetUsersGroupPath(organizationId, collectionName)); + Log.WriteWarning(string.Format("{0} not exists in {1}", samName, usersGroupName)); + var userGroupsPath = GetUsersGroupPath(organizationId, collectionName); + ActiveDirectoryUtils.AddObjectToGroup(userPath, userGroupsPath); + Log.WriteWarning(string.Format("{0} added", samName)); } } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs index eaa2d42f..4e792004 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs @@ -50,7 +50,7 @@ namespace WebsitePanel.Portal.RDS litCollectionName.Text = collection.Name; txtApplicationName.Text = remoteApp.DisplayName; - var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Select(a => a.Split('\\').Last().ToLower()).Contains(x.SamAccountName.Split('\\').Last().ToLower())); + var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Contains(x.AccountName)); users.SetUsers(remoteAppUsers.ToArray()); } @@ -64,7 +64,7 @@ namespace WebsitePanel.Portal.RDS 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.SamAccountName.Split('\\').Last()).ToArray()); + ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.AccountName).ToArray()); } catch (Exception ex) { From cea31292d69991a386d5b5ae88ae04020883fba2 Mon Sep 17 00:00:00 2001 From: vfedosevich Date: Wed, 11 Feb 2015 04:38:08 -0800 Subject: [PATCH 2/2] RDS users logging --- .../WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs index 4e792004..41bdec12 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/RDS/RDSEditApplicationUsers.ascx.cs @@ -50,7 +50,8 @@ namespace WebsitePanel.Portal.RDS litCollectionName.Text = collection.Name; txtApplicationName.Text = remoteApp.DisplayName; - var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Contains(x.AccountName)); + //var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Contains(x.AccountName)); + var remoteAppUsers = organizationUsers.Where(x => applicationUsers.Select(a => a.Split('\\').Last().ToLower()).Contains(x.SamAccountName.Split('\\').Last().ToLower())); users.SetUsers(remoteAppUsers.ToArray()); } @@ -64,7 +65,8 @@ namespace WebsitePanel.Portal.RDS 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()); + //ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.AccountName).ToArray()); + ES.Services.RDS.SetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, remoteApp, users.GetUsers().Select(x => x.SamAccountName.Split('\\').Last()).ToArray()); } catch (Exception ex) {