From 80b934b8e52d234ebefb8eedbb8d1a627ab9f5d7 Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Sat, 14 Oct 2023 11:59:07 +0300 Subject: [PATCH 01/11] sonar --- src/Sysadmin/Controls/MemberOfControl.xaml.cs | 4 ++-- src/Sysadmin/Controls/MembersControl.xaml.cs | 4 ++-- src/Sysadmin/Views/Pages/Groups/GroupPage.xaml.cs | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Sysadmin/Controls/MemberOfControl.xaml.cs b/src/Sysadmin/Controls/MemberOfControl.xaml.cs index 3704367..0e8996b 100644 --- a/src/Sysadmin/Controls/MemberOfControl.xaml.cs +++ b/src/Sysadmin/Controls/MemberOfControl.xaml.cs @@ -147,7 +147,7 @@ private void addButton_Click(object sender, RoutedEventArgs e) selectControl.Load(SelectControl.Show.Groups); } - private async void deleteButton_Click(object sender, RoutedEventArgs e) + private async void deleteButton_Click(object sender, RoutedEventArgs e) //NOSONAR { try { @@ -206,7 +206,7 @@ await Task.Run(async () => }); } - private async void selectControl_SelectedItem(MemberItem item) + private async void selectControl_SelectedItem(MemberItem item) //NOSONAR { flyout.Hide(); diff --git a/src/Sysadmin/Controls/MembersControl.xaml.cs b/src/Sysadmin/Controls/MembersControl.xaml.cs index 8d12f1d..6572173 100644 --- a/src/Sysadmin/Controls/MembersControl.xaml.cs +++ b/src/Sysadmin/Controls/MembersControl.xaml.cs @@ -101,7 +101,7 @@ private void addButton_Click(object sender, RoutedEventArgs e) selectControl.Load(SelectControl.Show.All); } - private async void deleteButton_Click(object sender, RoutedEventArgs e) + private async void deleteButton_Click(object sender, RoutedEventArgs e) //NOSONAR { try { @@ -161,7 +161,7 @@ await Task.Run(async () => } - private async void selectControl_SelectedItem(MemberItem item) + private async void selectControl_SelectedItem(MemberItem item) //NOSONAR { flyout.Hide(); diff --git a/src/Sysadmin/Views/Pages/Groups/GroupPage.xaml.cs b/src/Sysadmin/Views/Pages/Groups/GroupPage.xaml.cs index 09960cc..2e3b681 100644 --- a/src/Sysadmin/Views/Pages/Groups/GroupPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Groups/GroupPage.xaml.cs @@ -29,17 +29,17 @@ private void DeleteMenuItem_Click(object sender, RoutedEventArgs e) ViewModel.DeleteCommand.Execute(ViewModel); } - private async void MembersControl_Changed() + private async void MembersControl_Changed() //NOSONAR { await ViewModel.Get(); } - private async void MemberOfControl_Changed() + private async void MemberOfControl_Changed() //NOSONAR { await ViewModel.Get(); } - private void MemberOfControl_Error(string ErrorMessage) + private void MemberOfControl_Error(string ErrorMessage) //NOSONAR { snackbar.Message = ErrorMessage; snackbar.Show(); From da7ea49d58b01556f0bb5c8163feb60237d71424 Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Sat, 14 Oct 2023 12:48:20 +0300 Subject: [PATCH 02/11] sonar --- src/SysAdmin.ActiveDirectory/ADAttribute.cs | 1 + src/SysAdmin.ActiveDirectory/ADContainers.cs | 24 ++++++++++---------- src/SysAdmin.ActiveDirectory/ADHelper.cs | 4 ++-- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/SysAdmin.ActiveDirectory/ADAttribute.cs b/src/SysAdmin.ActiveDirectory/ADAttribute.cs index f294861..c20157b 100644 --- a/src/SysAdmin.ActiveDirectory/ADAttribute.cs +++ b/src/SysAdmin.ActiveDirectory/ADAttribute.cs @@ -1,5 +1,6 @@ namespace SysAdmin.ActiveDirectory { + [AttributeUsage(AttributeTargets.All, Inherited = true)] public class ADAttribute : Attribute { diff --git a/src/SysAdmin.ActiveDirectory/ADContainers.cs b/src/SysAdmin.ActiveDirectory/ADContainers.cs index 9b66343..1e58f47 100644 --- a/src/SysAdmin.ActiveDirectory/ADContainers.cs +++ b/src/SysAdmin.ActiveDirectory/ADContainers.cs @@ -4,19 +4,19 @@ namespace SysAdmin.ActiveDirectory { public class ADContainers { - private const string ContainerMicrosoft = "B:32:F4BE92A4C777485E878E9421D53087DB:"; //CN=Microsoft,CN=Program Data,DC=example,DC=com - private const string ContainerProgramData = "B:32:09460C08AE1E4A4EA0F64AEE7DAA1E5A:"; //CN=Program Data,DC=example,DC=com - private const string ContainerForeignSecurityPrincipals = "B:32:22B70C67D56E4EFB91E9300FCA3DC1AA:"; //CN=ForeignSecurityPrincipals,DC=example,DC=com - private const string ContainerDeletedObjects = "B:32:18E2EA80684F11D2B9AA00C04F79F805:"; //CN=Deleted Objects,DC=example,DC=com - private const string ContainerInfrastructure = "B:32:2FBAC1870ADE11D297C400C04FD8D5CD:"; //CN=Infrastructure,DC=example,DC=com - private const string ContainerLostAndFound = "B:32:AB8153B7768811D1ADED00C04FD8D5CD:"; //CN=LostAndFound,DC=example,DC=com - private const string ContainerSystem = "B:32:AB1D30F3768811D1ADED00C04FD8D5CD:"; //CN=System,DC=example,DC=com - private const string ContainerDomainControllers = "B:32:A361B2FFFFD211D1AA4B00C04FD7D83A:"; //OU=Domain Controllers,DC=example,DC=com - private const string ContainerComputers = "B:32:AA312825768811D1ADED00C04FD8D5CD:"; //CN=Computers,DC=example,DC=com - private const string ContainerUsers = "B:32:A9D1CA15768811D1ADED00C04FD8D5CD:"; //CN=Users,DC=example,DC=com - private const string ContainerNTDSQuotas = "B:32:6227F0AF1FC2410D8E3BB10615BB5B0F:"; //CN=NTDS Quotas,DC=example,DC=com + private const string ContainerMicrosoft = "B:32:F4BE92A4C777485E878E9421D53087DB:"; //NOSONAR CN=Microsoft,CN=Program Data,DC=example,DC=com + private const string ContainerProgramData = "B:32:09460C08AE1E4A4EA0F64AEE7DAA1E5A:"; //NOSONAR CN=Program Data,DC=example,DC=com + private const string ContainerForeignSecurityPrincipals = "B:32:22B70C67D56E4EFB91E9300FCA3DC1AA:"; //NOSONAR CN=ForeignSecurityPrincipals,DC=example,DC=com + private const string ContainerDeletedObjects = "B:32:18E2EA80684F11D2B9AA00C04F79F805:"; //NOSONAR CN=Deleted Objects,DC=example,DC=com + private const string ContainerInfrastructure = "B:32:2FBAC1870ADE11D297C400C04FD8D5CD:"; //NOSONAR CN=Infrastructure,DC=example,DC=com + private const string ContainerLostAndFound = "B:32:AB8153B7768811D1ADED00C04FD8D5CD:"; //NOSONAR CN=LostAndFound,DC=example,DC=com + private const string ContainerSystem = "B:32:AB1D30F3768811D1ADED00C04FD8D5CD:"; //NOSONAR CN=System,DC=example,DC=com + private const string ContainerDomainControllers = "B:32:A361B2FFFFD211D1AA4B00C04FD7D83A:"; //NOSONAR OU=Domain Controllers,DC=example,DC=com + private const string ContainerComputers = "B:32:AA312825768811D1ADED00C04FD8D5CD:"; //NOSONAR CN=Computers,DC=example,DC=com + private const string ContainerUsers = "B:32:A9D1CA15768811D1ADED00C04FD8D5CD:"; //NOSONAR CN=Users,DC=example,DC=com + private const string ContainerNTDSQuotas = "B:32:6227F0AF1FC2410D8E3BB10615BB5B0F:"; //NOSONAR CN=NTDS Quotas,DC=example,DC=com - private List wellKnownObjects; + private readonly List wellKnownObjects; public ADContainers(LdapService ldapService) { diff --git a/src/SysAdmin.ActiveDirectory/ADHelper.cs b/src/SysAdmin.ActiveDirectory/ADHelper.cs index 17baedd..e8a3f60 100644 --- a/src/SysAdmin.ActiveDirectory/ADHelper.cs +++ b/src/SysAdmin.ActiveDirectory/ADHelper.cs @@ -10,12 +10,12 @@ public static class ADHelper { public static string ExtractCN(string dn) { - string[] parts = dn.Split(new char[] { ',' }); + string[] parts = dn.Split(","); for (int i = 0; i < parts.Length; i++) { var p = parts[i]; - var elems = p.Split(new char[] { '=' }); + var elems = p.Split("="); var t = elems[0].Trim().ToUpper(); var v = elems[1].Trim(); if (t == "CN") From ebe8cb46176071d8628a2956f074e1b71333452c Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Sun, 15 Oct 2023 15:08:26 +0300 Subject: [PATCH 03/11] vnc --- src/SetupProject/Product.wxs | 2 +- src/Sysadmin/Services/ISettingsService.cs | 4 +++ src/Sysadmin/Services/SettingsService.cs | 20 +++++++++++ src/Sysadmin/Sysadmin.csproj | 8 ++--- src/Sysadmin/ToDo.txt | 3 ++ .../ViewModels/Computers/ComputerViewModel.cs | 19 +++++++++++ .../ViewModels/Users/UserViewModel.cs | 21 +++++++++++- .../Views/Pages/Computers/ComputerPage.xaml | 33 ++++++++++++++++++ .../Pages/Computers/ComputerPage.xaml.cs | 34 +++++++++++++++++-- src/Sysadmin/Views/Pages/SettingsPage.xaml | 23 ++++++++++++- src/Sysadmin/Views/Pages/SettingsPage.xaml.cs | 13 +++++++ src/Sysadmin/Views/Pages/Users/UserPage.xaml | 13 ++++++- .../Views/Pages/Users/UserPage.xaml.cs | 16 +++++++-- src/autoupdater.xml | 4 +-- 14 files changed, 198 insertions(+), 15 deletions(-) diff --git a/src/SetupProject/Product.wxs b/src/SetupProject/Product.wxs index 5402d74..5e22abe 100644 --- a/src/SetupProject/Product.wxs +++ b/src/SetupProject/Product.wxs @@ -1,6 +1,6 @@ - + diff --git a/src/Sysadmin/Services/ISettingsService.cs b/src/Sysadmin/Services/ISettingsService.cs index d2c0782..d0b6100 100644 --- a/src/Sysadmin/Services/ISettingsService.cs +++ b/src/Sysadmin/Services/ISettingsService.cs @@ -36,5 +36,9 @@ public interface ISettingsService bool LoginUseCredentials { get; set; } + string VNCPath { get; set; } + + int VNCPort { get; set; } + } } \ No newline at end of file diff --git a/src/Sysadmin/Services/SettingsService.cs b/src/Sysadmin/Services/SettingsService.cs index 6d86be4..70f1234 100644 --- a/src/Sysadmin/Services/SettingsService.cs +++ b/src/Sysadmin/Services/SettingsService.cs @@ -113,6 +113,26 @@ public bool LoginUseCredentials set { SetValue("LoginUseCredentials", value); } } + public string VNCPath + { + get + { + return GetStringValue("VNCPath", "C:\\Program Files\\TightVNC\\tvnviewer.exe"); + } + set { SetValue("VNCPath", value); } + } + + public int VNCPort + { + get + { + return GetIntValue("VNCPort", 5900); + } + set { SetValue("VNCPort", value); } + } + + + public void LoadSettings() { try diff --git a/src/Sysadmin/Sysadmin.csproj b/src/Sysadmin/Sysadmin.csproj index 8a12cb2..8663b3e 100644 --- a/src/Sysadmin/Sysadmin.csproj +++ b/src/Sysadmin/Sysadmin.csproj @@ -1,4 +1,4 @@ - + WinExe @@ -9,9 +9,9 @@ app.manifest applicationIcon.ico Sysadmin - 10.2.0 - 10.2.0 - 10.2.0 + 10.3.0 + 10.3.0 + 10.3.0 Copyright 2015-2023 Sysadmin Anywhere - All Rights Reserved Sysadmin Anywhere Sysadmin Anywhere diff --git a/src/Sysadmin/ToDo.txt b/src/Sysadmin/ToDo.txt index 8616795..ece5b8b 100644 --- a/src/Sysadmin/ToDo.txt +++ b/src/Sysadmin/ToDo.txt @@ -48,3 +48,6 @@ 10. Autoupdater.NET + Version + XML +11. Remote desktop + - VNC + - RDP diff --git a/src/Sysadmin/ViewModels/Computers/ComputerViewModel.cs b/src/Sysadmin/ViewModels/Computers/ComputerViewModel.cs index b05c609..ed4b525 100644 --- a/src/Sysadmin/ViewModels/Computers/ComputerViewModel.cs +++ b/src/Sysadmin/ViewModels/Computers/ComputerViewModel.cs @@ -202,6 +202,25 @@ await Task.Run(() => } } + public async Task Get() + { + ComputerEntry entry = Computer; + + await Task.Run(async () => + { + using (var ldap = new LdapService(App.SERVER, App.CREDENTIAL)) + { + using (var computersRepository = new ComputersRepository(ldap)) + { + entry = await computersRepository.GetByCNAsync(Computer.CN); + } + } + }); + + Computer = entry; + } + + } } \ No newline at end of file diff --git a/src/Sysadmin/ViewModels/Users/UserViewModel.cs b/src/Sysadmin/ViewModels/Users/UserViewModel.cs index ba160a8..c6468c0 100644 --- a/src/Sysadmin/ViewModels/Users/UserViewModel.cs +++ b/src/Sysadmin/ViewModels/Users/UserViewModel.cs @@ -144,5 +144,24 @@ await Task.Run(async () => }); } + + public async Task Get() + { + UserEntry entry = User; + + await Task.Run(async () => + { + using (var ldap = new LdapService(App.SERVER, App.CREDENTIAL)) + { + using (var usersRepository = new UsersRepository(ldap)) + { + entry = await usersRepository.GetByCNAsync(User.CN); + } + } + }); + + User = entry; + } + } -} +} \ No newline at end of file diff --git a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml index 795d7c9..72509f7 100644 --- a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml +++ b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml @@ -4,6 +4,7 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Sysadmin.Views.Pages" + xmlns:controls="clr-namespace:Sysadmin.Controls" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:converters="clr-namespace:Sysadmin.Converters" xmlns:models="clr-namespace:Sysadmin.Models" @@ -23,6 +24,7 @@ + @@ -131,6 +133,29 @@ + + + + Remote desktop + + + + + + + RDP (Remote Desktop Protocol) + + + + + + + VNC (Virtual Network Computing) + + + + + @@ -174,6 +199,14 @@ + + diff --git a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs index b29e96c..225913d 100644 --- a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs @@ -1,4 +1,5 @@ -using System.Windows; +using SysAdmin.Services; +using System.Windows; using System.Windows.Controls; using Wpf.Ui.Common.Interfaces; @@ -9,14 +10,18 @@ namespace Sysadmin.Views.Pages /// public partial class ComputerPage : INavigableView { + + private ISettingsService settings; + public ViewModels.ComputerViewModel ViewModel { get; } - public ComputerPage(ViewModels.ComputerViewModel viewModel) + public ComputerPage(ViewModels.ComputerViewModel viewModel, ISettingsService settings) { ViewModel = viewModel; + this.settings = settings; InitializeComponent(); @@ -59,5 +64,28 @@ private void ShutdownMenuItem_Click(object sender, RoutedEventArgs e) ViewModel.ShutdownCommand.Execute(ViewModel); } + private void vnc_Click(object sender, RoutedEventArgs e) + { + string path = settings.VNCPath; + string args = ViewModel.Computer.DnsHostName + ":" + settings.VNCPort.ToString(); + System.Diagnostics.Process.Start(path, args); + } + + private void rdp_Click(object sender, RoutedEventArgs e) + { + + } + + private async void MemberOfControl_Changed() + { + await ViewModel.Get(); + } + + private void MemberOfControl_Error(string ErrorMessage) + { + snackbar.Message = ErrorMessage; + snackbar.Show(); + } + } -} +} \ No newline at end of file diff --git a/src/Sysadmin/Views/Pages/SettingsPage.xaml b/src/Sysadmin/Views/Pages/SettingsPage.xaml index c15570c..6f2289e 100644 --- a/src/Sysadmin/Views/Pages/SettingsPage.xaml +++ b/src/Sysadmin/Views/Pages/SettingsPage.xaml @@ -100,7 +100,28 @@ - + + + + + + + + + + + + + + @@ -150,6 +152,15 @@ - + + + + diff --git a/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs b/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs index 7673da7..71051cf 100644 --- a/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs @@ -7,6 +7,7 @@ using Wpf.Ui.Common.Interfaces; using Microsoft.Win32; using System.IO; +using Wpf.Ui.Controls; namespace Sysadmin.Views.Pages { @@ -29,7 +30,7 @@ public UserPage(ViewModels.UserViewModel viewModel) private void DeleteMenuItem_Click(object sender, RoutedEventArgs e) { - var result = MessageBox.Show("Are you sure you want to delete this user?", "Delete", MessageBoxButton.YesNo); + var result = System.Windows.MessageBox.Show("Are you sure you want to delete this user?", "Delete", MessageBoxButton.YesNo); if (result == MessageBoxResult.Yes) ViewModel.DeleteCommand.Execute(ViewModel); } @@ -49,7 +50,7 @@ private async void PhotoMenuItem_Click(object sender, RoutedEventArgs e) } catch (Exception ex) { - MessageBox.Show(ex.Message, "Error"); + System.Windows.MessageBox.Show(ex.Message, "Error"); } } @@ -73,5 +74,16 @@ private void ShowPhoto() } } + private async void MemberOfControl_Changed() + { + await ViewModel.Get(); + } + + private void MemberOfControl_Error(string ErrorMessage) + { + snackbar.Message = ErrorMessage; + snackbar.Show(); + } + } } \ No newline at end of file diff --git a/src/autoupdater.xml b/src/autoupdater.xml index 6697b78..c229b9a 100644 --- a/src/autoupdater.xml +++ b/src/autoupdater.xml @@ -1,6 +1,6 @@  - 10.2.0.0 - https://github.com/sysadminanywhere/sysadmin/releases/download/v10.2/SysadminSetup.msi + 10.3.0.0 + https://github.com/sysadminanywhere/sysadmin/releases/download/v10.3/SysadminSetup.msi true \ No newline at end of file From 49bd82fe000f62f14872058727372786e0e4a60e Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Sun, 15 Oct 2023 15:13:36 +0300 Subject: [PATCH 04/11] rdp --- src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs index 225913d..376ed20 100644 --- a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs @@ -73,7 +73,9 @@ private void vnc_Click(object sender, RoutedEventArgs e) private void rdp_Click(object sender, RoutedEventArgs e) { - + string path = "mstsc"; + string args = "/v:" + ViewModel.Computer.DnsHostName; + System.Diagnostics.Process.Start(path, args); } private async void MemberOfControl_Changed() From ac2f4e5ed277ef8e15537d15f32c1bc55a14a005 Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Sun, 15 Oct 2023 17:04:45 +0300 Subject: [PATCH 05/11] todo --- src/Sysadmin/ToDo.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Sysadmin/ToDo.txt b/src/Sysadmin/ToDo.txt index ece5b8b..7a5bd0d 100644 --- a/src/Sysadmin/ToDo.txt +++ b/src/Sysadmin/ToDo.txt @@ -49,5 +49,5 @@ + Version + XML 11. Remote desktop - - VNC - - RDP + + VNC + + RDP From fdee80bfa27c56d64e31bc5dbf6ab6ff5a04fce4 Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Mon, 16 Oct 2023 10:08:08 +0300 Subject: [PATCH 06/11] RD fix --- .../Pages/Computers/ComputerPage.xaml.cs | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs index 376ed20..f386f48 100644 --- a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs @@ -1,7 +1,9 @@ using SysAdmin.Services; +using System.IO; using System.Windows; using System.Windows.Controls; using Wpf.Ui.Common.Interfaces; +using Wpf.Ui.Mvvm.Contracts; namespace Sysadmin.Views.Pages { @@ -12,16 +14,19 @@ public partial class ComputerPage : INavigableView { private ISettingsService settings; + private INavigationService navigationService; public ViewModels.ComputerViewModel ViewModel { get; } - public ComputerPage(ViewModels.ComputerViewModel viewModel, ISettingsService settings) + public ComputerPage(ViewModels.ComputerViewModel viewModel, ISettingsService settings, INavigationService navigationService) { ViewModel = viewModel; + this.settings = settings; + this.navigationService = navigationService; InitializeComponent(); @@ -68,7 +73,19 @@ private void vnc_Click(object sender, RoutedEventArgs e) { string path = settings.VNCPath; string args = ViewModel.Computer.DnsHostName + ":" + settings.VNCPort.ToString(); - System.Diagnostics.Process.Start(path, args); + + if (File.Exists(path)) + { + System.Diagnostics.Process.Start(path, args); + } + else + { + var result = MessageBox.Show("The VNС viewer is not installed or is located in a different location. Fix the path?", "Remote desktop", MessageBoxButton.YesNo); + if (result == MessageBoxResult.Yes) + { + navigationService.Navigate(typeof(SettingsPage)); + } + } } private void rdp_Click(object sender, RoutedEventArgs e) @@ -78,12 +95,12 @@ private void rdp_Click(object sender, RoutedEventArgs e) System.Diagnostics.Process.Start(path, args); } - private async void MemberOfControl_Changed() + private async void MemberOfControl_Changed() //NOSONAR { await ViewModel.Get(); } - private void MemberOfControl_Error(string ErrorMessage) + private void MemberOfControl_Error(string ErrorMessage) //NOSONAR { snackbar.Message = ErrorMessage; snackbar.Show(); From e6f032175c21d6734ccd46f67afc6947236b02bc Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Mon, 16 Oct 2023 16:17:00 +0300 Subject: [PATCH 07/11] sonar --- src/SysAdmin.ActiveDirectory/ADResolver.cs | 4 ++-- src/Sysadmin/App.xaml.cs | 6 +++--- src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs | 5 ++--- src/Sysadmin/Views/Pages/SettingsPage.xaml.cs | 5 +++-- src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/SysAdmin.ActiveDirectory/ADResolver.cs b/src/SysAdmin.ActiveDirectory/ADResolver.cs index 96139a6..900b07e 100644 --- a/src/SysAdmin.ActiveDirectory/ADResolver.cs +++ b/src/SysAdmin.ActiveDirectory/ADResolver.cs @@ -26,7 +26,7 @@ public static T GetValues(LdapEntry entry) var attributes = (ADAttribute[])property.GetCustomAttributes(typeof(ADAttribute), true); - if (attributes.Count() > 0) + if (attributes != null && attributes.Any()) { propertyName = attributes[0].Name; dateType = attributes[0].DateType; @@ -35,7 +35,7 @@ public static T GetValues(LdapEntry entry) try { - var attribute = directoryAttributes.Where(a => a.Name.ToLower() == propertyName.ToLower()).FirstOrDefault(); + var attribute = directoryAttributes.FirstOrDefault(a => a.Name.ToLower() == propertyName.ToLower()); if (attribute != null) { diff --git a/src/Sysadmin/App.xaml.cs b/src/Sysadmin/App.xaml.cs index 8255711..edd11fa 100644 --- a/src/Sysadmin/App.xaml.cs +++ b/src/Sysadmin/App.xaml.cs @@ -162,9 +162,9 @@ private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledEx // For more info see https://docs.microsoft.com/en-us/dotnet/api/system.windows.application.dispatcherunhandledexception?view=windowsdesktop-6.0 } - public static IServer SERVER = null; - public static ICredential CREDENTIAL = null; - public static ADContainers CONTAINERS = null; + public static IServer? SERVER = null; //NOSONAR + public static ICredential? CREDENTIAL = null; //NOSONAR + public static ADContainers? CONTAINERS = null; //NOSONAR } } \ No newline at end of file diff --git a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs index f386f48..5eb8ec4 100644 --- a/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Computers/ComputerPage.xaml.cs @@ -76,7 +76,7 @@ private void vnc_Click(object sender, RoutedEventArgs e) if (File.Exists(path)) { - System.Diagnostics.Process.Start(path, args); + System.Diagnostics.Process.Start(path, args); //NOSONAR } else { @@ -90,9 +90,8 @@ private void vnc_Click(object sender, RoutedEventArgs e) private void rdp_Click(object sender, RoutedEventArgs e) { - string path = "mstsc"; string args = "/v:" + ViewModel.Computer.DnsHostName; - System.Diagnostics.Process.Start(path, args); + System.Diagnostics.Process.Start("mstsc", args); //NOSONAR } private async void MemberOfControl_Changed() //NOSONAR diff --git a/src/Sysadmin/Views/Pages/SettingsPage.xaml.cs b/src/Sysadmin/Views/Pages/SettingsPage.xaml.cs index 1b63c2b..ca44931 100644 --- a/src/Sysadmin/Views/Pages/SettingsPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/SettingsPage.xaml.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using SysAdmin.Services; using System; +using System.Diagnostics.CodeAnalysis; using System.Windows.Controls; using Wpf.Ui.Common.Interfaces; @@ -19,11 +20,11 @@ public ViewModels.SettingsViewModel ViewModel get; } - public SettingsPage(ViewModels.SettingsViewModel viewModel, IServiceProvider serviceProvider) + public SettingsPage(ViewModels.SettingsViewModel viewModel, IServiceProvider serviceProvider, ISettingsService settings) { ViewModel = viewModel; - settings = serviceProvider.GetService(); + this.settings = settings; InitializeComponent(); diff --git a/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs b/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs index 71051cf..dfb0dd0 100644 --- a/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs +++ b/src/Sysadmin/Views/Pages/Users/UserPage.xaml.cs @@ -74,7 +74,7 @@ private void ShowPhoto() } } - private async void MemberOfControl_Changed() + private async void MemberOfControl_Changed() //NOSONAR { await ViewModel.Get(); } From 7230efeeb922ee334938df30453baeb18107ffde Mon Sep 17 00:00:00 2001 From: Igor Markin <92101047+sysadminanywhere@users.noreply.github.com> Date: Fri, 20 Oct 2023 14:52:50 +0300 Subject: [PATCH 08/11] Create build.yml --- .github/workflows/build.yml | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..7abd9ad --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,54 @@ +name: Build +on: + push: + branches: + - develop # the name of your main branch + pull_request: + types: [opened, synchronize, reopened] +jobs: + build: + name: Build + runs-on: windows-latest + steps: + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: 17 + distribution: 'zulu' # Alternative distribution options are available. + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Setup .NET Core SDK + uses: actions/setup-dotnet@v3.2.0 + with: + dotnet-version: 6 + - uses: actions/checkout@v2 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Cache SonarQube packages + uses: actions/cache@v1 + with: + path: ~\sonar\cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Cache SonarQube scanner + id: cache-sonar-scanner + uses: actions/cache@v1 + with: + path: .\.sonar\scanner + key: ${{ runner.os }}-sonar-scanner + restore-keys: ${{ runner.os }}-sonar-scanner + - name: Install SonarQube scanner + if: steps.cache-sonar-scanner.outputs.cache-hit != 'true' + shell: powershell + run: | + New-Item -Path .\.sonar\scanner -ItemType Directory + dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner + - name: Build and analyze + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + shell: powershell + run: | + .\.sonar\scanner\dotnet-sonarscanner /o:"sysadminanywhere" /k:"sysadminanywhere_sysadmin" /d:sonar.host.url="https://sonarcloud.io" /d:sonar.token="${{ secrets.SONAR_TOKEN }}" + dotnet build src\Sysadmin + .\.sonar\scanner\dotnet-sonarscanner end /d:sonar.token="${{ secrets.SONAR_TOKEN }}" From bb5603c983c10a70ebd7a259a18daaecda3e1f41 Mon Sep 17 00:00:00 2001 From: sysadminanywhere Date: Sat, 21 Oct 2023 13:17:10 +0300 Subject: [PATCH 09/11] memberof fixed --- src/Sysadmin/Controls/MemberOfControl.xaml | 2 +- src/Sysadmin/Controls/MemberOfControl.xaml.cs | 6 +- src/Sysadmin/Controls/MembersControl.xaml | 2 +- src/Sysadmin/ToDo.txt | 4 + .../Views/Pages/Computers/ComputerPage.xaml | 76 ++++++------ .../Pages/Computers/ComputerPage.xaml.cs | 6 + .../Views/Pages/Groups/GroupPage.xaml | 2 + .../Views/Pages/Groups/GroupPage.xaml.cs | 13 ++ src/Sysadmin/Views/Pages/Users/UserPage.xaml | 114 ++++++++++-------- .../Views/Pages/Users/UserPage.xaml.cs | 11 ++ 10 files changed, 144 insertions(+), 92 deletions(-) diff --git a/src/Sysadmin/Controls/MemberOfControl.xaml b/src/Sysadmin/Controls/MemberOfControl.xaml index 6fc2f38..7478cb2 100644 --- a/src/Sysadmin/Controls/MemberOfControl.xaml +++ b/src/Sysadmin/Controls/MemberOfControl.xaml @@ -18,7 +18,7 @@ - +