diff --git a/src/Console/Program.cs b/src/Console/Program.cs index 31369b5d..7f13092b 100644 --- a/src/Console/Program.cs +++ b/src/Console/Program.cs @@ -229,6 +229,16 @@ namespace Bit.Console { config.Password = new EncryptedData(parameters["p"]); } + + if(parameters.ContainsKey("gf")) + { + config.GroupFilter = parameters["gf"]; + } + + if(parameters.ContainsKey("uf")) + { + config.UserFilter = parameters["uf"]; + } } else { @@ -251,6 +261,11 @@ namespace Bit.Console config.Password = new EncryptedData(passwordInput); passwordInput = null; } + + Con.Write("Group filter: "); + config.GroupFilter = Con.ReadLine().Trim(); + Con.Write("User filter: "); + config.UserFilter = Con.ReadLine().Trim(); } Con.WriteLine(); diff --git a/src/Core/Models/ServerConfiguration.cs b/src/Core/Models/ServerConfiguration.cs index 3a63ce3d..3525a8ef 100644 --- a/src/Core/Models/ServerConfiguration.cs +++ b/src/Core/Models/ServerConfiguration.cs @@ -17,6 +17,8 @@ namespace Bit.Core.Models public EncryptedData Password { get; set; } [JsonIgnore] public string ServerPath => $"LDAP://{Address}:{Port}/{Path}"; + public string GroupFilter { get; set; } + public string UserFilter { get; set; } public DirectoryEntry GetDirectoryEntry() { diff --git a/src/Core/Utilities/Sync.cs b/src/Core/Utilities/Sync.cs index 844a5f73..bd31e116 100644 --- a/src/Core/Utilities/Sync.cs +++ b/src/Core/Utilities/Sync.cs @@ -23,7 +23,9 @@ namespace Bit.Core.Utilities } var entry = Services.SettingsService.Instance.Server.GetDirectoryEntry(); - var searcher = new DirectorySearcher(entry); + var filter = string.IsNullOrWhiteSpace(Services.SettingsService.Instance.Server.GroupFilter) ? null : + Services.SettingsService.Instance.Server.GroupFilter; + var searcher = new DirectorySearcher(entry, filter); var result = searcher.FindAll(); PrintSearchResults(result); @@ -43,13 +45,21 @@ namespace Bit.Core.Utilities throw new ApplicationException("Not authenticated."); } + var entry = Services.SettingsService.Instance.Server.GetDirectoryEntry(); + var filter = string.IsNullOrWhiteSpace(Services.SettingsService.Instance.Server.UserFilter) ? null : + Services.SettingsService.Instance.Server.UserFilter; + var searcher = new DirectorySearcher(entry, filter); + var result = searcher.FindAll(); + + PrintSearchResults(result); + return Task.FromResult(0); } public static async Task SyncAllAsync() { await SyncGroupsAsync(); - await SyncUsersAsync(); + //await SyncUsersAsync(); } private static void PrintSearchResults(SearchResultCollection result)