From e65474beaf4b447fc9bb2c8419538c3dcc43b1e3 Mon Sep 17 00:00:00 2001 From: mikisoq Date: Wed, 29 Jul 2026 01:29:32 -0100 Subject: [PATCH] Initial AD bulk tool prototype --- .gitignore | 34 ++ ADBulkTool.csproj | 17 + App.axaml | 7 + App.axaml.cs | 23 ++ MainWindow.axaml | 97 +++++ MainWindow.axaml.cs | 718 +++++++++++++++++++++++++++++++++++++ Models/AdConfig.cs | 10 + Models/BulkActionNames.cs | 23 ++ Models/UserLookupResult.cs | 6 + Program.cs | 22 ++ README.md | 84 ++++- Services/AdService.cs | 332 +++++++++++++++++ 12 files changed, 1372 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 ADBulkTool.csproj create mode 100644 App.axaml create mode 100644 App.axaml.cs create mode 100644 MainWindow.axaml create mode 100644 MainWindow.axaml.cs create mode 100644 Models/AdConfig.cs create mode 100644 Models/BulkActionNames.cs create mode 100644 Models/UserLookupResult.cs create mode 100644 Program.cs create mode 100644 Services/AdService.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..031d79a --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +bin/ +obj/ +.vs/ +.vscode/*.user +*.user +*.suo + +# Build output +*.dll +*.exe +*.pdb + +# Logs and result exports +*.log +logs/ +results/ +Success.csv +Failed.csv + +# Sensitive AD input files +*.csv +!samples/*.csv + +# Certificates and secrets +*.pfx +*.p12 +*.key +*.pem +*.cer +*.crt + +# OS junk +.DS_Store +Thumbs.db diff --git a/ADBulkTool.csproj b/ADBulkTool.csproj new file mode 100644 index 0000000..bd04cb1 --- /dev/null +++ b/ADBulkTool.csproj @@ -0,0 +1,17 @@ + + + WinExe + net8.0 + enable + enable + + + + + + + + + + + diff --git a/App.axaml b/App.axaml new file mode 100644 index 0000000..7de2479 --- /dev/null +++ b/App.axaml @@ -0,0 +1,7 @@ + + + + + diff --git a/App.axaml.cs b/App.axaml.cs new file mode 100644 index 0000000..76b6b37 --- /dev/null +++ b/App.axaml.cs @@ -0,0 +1,23 @@ +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; + +namespace ADBulkTool; + +public partial class App : Application +{ + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + desktop.MainWindow = new MainWindow(); + } + + base.OnFrameworkInitializationCompleted(); + } +} diff --git a/MainWindow.axaml b/MainWindow.axaml new file mode 100644 index 0000000..1970d13 --- /dev/null +++ b/MainWindow.axaml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +