1
0
mirror of https://github.com/bitwarden/directory-connector synced 2025-12-10 05:13:17 +00:00

dir type, preserve old values on config updates

This commit is contained in:
Kyle Spearrin
2017-05-13 22:04:20 -04:00
parent b550572175
commit e2a443640b
4 changed files with 98 additions and 11 deletions

View File

@@ -248,11 +248,27 @@ namespace Bit.Console
private static Task ConfigDirectoryAsync()
{
var config = new ServerConfiguration();
var config = Core.Services.SettingsService.Instance.Server ?? new ServerConfiguration();
if(_usingArgs)
{
var parameters = ParseParameters();
if(parameters.ContainsKey("t"))
{
Core.Enums.DirectoryType dirType;
if(Enum.TryParse(parameters["t"], out dirType))
{
config.Type = dirType;
}
else
{
Con.ForegroundColor = ConsoleColor.Red;
Con.WriteLine("Unable to parse type parameter.");
Con.ResetColor();
return Task.FromResult(0);
}
}
if(parameters.ContainsKey("a"))
{
config.Address = parameters["a"];
@@ -282,18 +298,61 @@ namespace Bit.Console
{
string input;
Con.Write("Address: ");
config.Address = Con.ReadLine().Trim();
Con.WriteLine("1. Active Directory");
//Con.WriteLine("2. Azure Active Directory ");
Con.WriteLine("2. Other LDAP Directory");
string currentType;
switch(config.Type)
{
case Core.Enums.DirectoryType.ActiveDirectory:
currentType = "1";
break;
default:
currentType = "2";
break;
}
Con.Write("Type [{0}]: ", currentType);
input = Con.ReadLine().Trim();
if(!string.IsNullOrWhiteSpace(input))
{
switch(input)
{
case "1":
config.Type = Core.Enums.DirectoryType.ActiveDirectory;
break;
//case "2":
// config.Type = Core.Enums.DirectoryType.AzureActiveCirectory;
default:
config.Type = Core.Enums.DirectoryType.Other;
break;
}
}
Con.Write("Address [{0}]: ", config.Address);
input = Con.ReadLine().Trim();
if(!string.IsNullOrWhiteSpace(input))
{
config.Address = input;
}
Con.Write("Port [{0}]: ", config.Port);
input = Con.ReadLine().Trim();
if(!string.IsNullOrWhiteSpace(input))
{
config.Port = input;
}
Con.Write("Path: ");
config.Path = Con.ReadLine().Trim();
Con.Write("Username: ");
config.Username = Con.ReadLine().Trim();
Con.Write("Path [{0}]: ", config.Path);
input = Con.ReadLine().Trim();
if(!string.IsNullOrWhiteSpace(input))
{
config.Path = input;
}
Con.Write("Username [{0}]: ", config.Username);
input = Con.ReadLine().Trim();
if(!string.IsNullOrWhiteSpace(input))
{
config.Username = input;
}
Con.Write("Password: ");
input = ReadSecureLine();
if(!string.IsNullOrWhiteSpace(input))
@@ -326,7 +385,7 @@ namespace Bit.Console
private static Task ConfigSyncAsync()
{
var config = new SyncConfiguration();
var config = Core.Services.SettingsService.Instance.Sync ?? new SyncConfiguration();
if(_usingArgs)
{
@@ -357,6 +416,18 @@ namespace Bit.Console
config.MemberAttribute = parameters["m"];
}
config.EmailPrefixSuffix = parameters.ContainsKey("ps");
if(parameters.ContainsKey("ep"))
{
config.UserEmailPrefixAttribute = parameters["ep"];
}
if(parameters.ContainsKey("es"))
{
config.UserEmailSuffix = parameters["es"];
}
if(parameters.ContainsKey("c"))
{
config.CreationDateAttribute = parameters["c"];
@@ -371,7 +442,7 @@ namespace Bit.Console
{
string input;
Con.Write("Sync groups? [y]: ");
Con.Write("Sync groups? [{0}]: ", config.SyncGroups ? "y" : "n");
input = Con.ReadLine().Trim().ToLower();
config.SyncGroups = input == "y" || input == "yes" || string.IsNullOrWhiteSpace(input);
if(config.SyncGroups)
@@ -389,7 +460,7 @@ namespace Bit.Console
config.GroupNameAttribute = input;
}
}
Con.Write("Sync users? [y]: ");
Con.Write("Sync users? [{0}]: ", config.SyncUsers ? "y" : "n");
input = Con.ReadLine().Trim().ToLower();
config.SyncUsers = input == "y" || input == "yes" || string.IsNullOrWhiteSpace(input);
if(config.SyncUsers)

View File

@@ -49,6 +49,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Enums\DirectoryType.cs" />
<Compile Include="Enums\OrganizationUserType.cs" />
<Compile Include="Enums\OrganizationUserStatusType.cs" />
<Compile Include="Models\ApiError.cs" />

View File

@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Bit.Core.Enums
{
public enum DirectoryType : byte
{
ActiveDirectory = 0,
AzureActiveCirectory = 1,
Other = 2
}
}

View File

@@ -17,7 +17,7 @@ namespace Bit.Core.Models
public EncryptedData Password { get; set; }
[JsonIgnore]
public string ServerPath => $"LDAP://{Address}:{Port}/{Path}";
public string Type { get; set; } = "Active Directory";
public Enums.DirectoryType Type { get; set; } = Enums.DirectoryType.ActiveDirectory;
public DirectoryEntry GetDirectoryEntry()
{