mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 07:36:14 -05:00
Update Setup project to handle EU region (#3137)
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
using YamlDotNet.Serialization;
|
||||
using Bit.Setup.Enums;
|
||||
using YamlDotNet.Serialization;
|
||||
using YamlDotNet.Serialization.NamingConventions;
|
||||
|
||||
namespace Bit.Setup;
|
||||
@ -183,6 +184,7 @@ public class Context
|
||||
{
|
||||
public Guid InstallationId { get; set; }
|
||||
public string InstallationKey { get; set; }
|
||||
public CloudRegion CloudRegion { get; set; }
|
||||
public bool DiffieHellman { get; set; }
|
||||
public bool Trusted { get; set; }
|
||||
public bool SelfSignedCert { get; set; }
|
||||
|
11
util/Setup/Enums/CloudRegion.cs
Normal file
11
util/Setup/Enums/CloudRegion.cs
Normal file
@ -0,0 +1,11 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Bit.Setup.Enums;
|
||||
|
||||
public enum CloudRegion
|
||||
{
|
||||
[Display(Name = "US")]
|
||||
US = 0,
|
||||
[Display(Name = "EU")]
|
||||
EU = 1,
|
||||
}
|
@ -73,7 +73,7 @@ public class EnvironmentFileBuilder
|
||||
_globalOverrideValues = new Dictionary<string, string>
|
||||
{
|
||||
["globalSettings__baseServiceUri__vault"] = _context.Config.Url,
|
||||
["globalSettings__baseServiceUri__cloudVaultRegion"] = "US",
|
||||
["globalSettings__baseServiceUri__cloudRegion"] = _context.Install?.CloudRegion.ToString(),
|
||||
["globalSettings__sqlServer__connectionString"] = $"\"{dbConnectionString.Replace("\"", "\\\"")}\"",
|
||||
["globalSettings__identityServer__certificatePassword"] = _context.Install?.IdentityCertPassword,
|
||||
["globalSettings__internalIdentityKey"] = _context.Stub ? "RANDOM_IDENTITY_KEY" :
|
||||
|
@ -148,7 +148,7 @@ public static class Helpers
|
||||
Console.Write(prompt);
|
||||
if (prompt.EndsWith("?"))
|
||||
{
|
||||
Console.Write(" (y/n)");
|
||||
Console.Write(" (y/N)");
|
||||
}
|
||||
Console.Write(": ");
|
||||
var input = Console.ReadLine();
|
||||
@ -222,4 +222,13 @@ public static class Helpers
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
||||
public static void WriteError(string errorMessage)
|
||||
{
|
||||
Console.ForegroundColor = ConsoleColor.Red;
|
||||
Console.Write("(!) ");
|
||||
Console.ResetColor();
|
||||
Console.Write(errorMessage);
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
using System.Globalization;
|
||||
using System.Net.Http.Json;
|
||||
using Bit.Migrator;
|
||||
using Bit.Setup.Enums;
|
||||
|
||||
namespace Bit.Setup;
|
||||
|
||||
@ -196,6 +197,7 @@ public class Program
|
||||
{
|
||||
var installationId = string.Empty;
|
||||
var installationKey = string.Empty;
|
||||
CloudRegion cloudRegion;
|
||||
|
||||
if (_context.Parameters.ContainsKey("install-id"))
|
||||
{
|
||||
@ -203,7 +205,13 @@ public class Program
|
||||
}
|
||||
else
|
||||
{
|
||||
installationId = Helpers.ReadInput("Enter your installation id (get at https://bitwarden.com/host)");
|
||||
var prompt = "Enter your installation id (get at https://bitwarden.com/host)";
|
||||
installationId = Helpers.ReadInput(prompt);
|
||||
while (string.IsNullOrEmpty(installationId))
|
||||
{
|
||||
Helpers.WriteError("Invalid input for installation id. Please try again.");
|
||||
installationId = Helpers.ReadInput(prompt);
|
||||
}
|
||||
}
|
||||
|
||||
if (!Guid.TryParse(installationId.Trim(), out var installationidGuid))
|
||||
@ -218,26 +226,61 @@ public class Program
|
||||
}
|
||||
else
|
||||
{
|
||||
installationKey = Helpers.ReadInput("Enter your installation key");
|
||||
var prompt = "Enter your installation key";
|
||||
installationKey = Helpers.ReadInput(prompt);
|
||||
while (string.IsNullOrEmpty(installationKey))
|
||||
{
|
||||
Helpers.WriteError("Invalid input for installation key. Please try again.");
|
||||
installationKey = Helpers.ReadInput(prompt);
|
||||
}
|
||||
}
|
||||
|
||||
if (_context.Parameters.ContainsKey("cloud-region"))
|
||||
{
|
||||
Enum.TryParse(_context.Parameters["cloud-region"], out cloudRegion);
|
||||
}
|
||||
else
|
||||
{
|
||||
var prompt = "Enter your region (US/EU) [US]";
|
||||
var region = Helpers.ReadInput(prompt);
|
||||
if (string.IsNullOrEmpty(region)) region = "US";
|
||||
|
||||
while (!Enum.TryParse(region, out cloudRegion))
|
||||
{
|
||||
Helpers.WriteError("Invalid input for region. Please try again.");
|
||||
region = Helpers.ReadInput(prompt);
|
||||
if (string.IsNullOrEmpty(region)) region = "US";
|
||||
}
|
||||
}
|
||||
|
||||
_context.Install.InstallationId = installationidGuid;
|
||||
_context.Install.InstallationKey = installationKey;
|
||||
_context.Install.CloudRegion = cloudRegion;
|
||||
|
||||
try
|
||||
{
|
||||
var response = new HttpClient().GetAsync("https://api.bitwarden.com/installations/" +
|
||||
_context.Install.InstallationId).GetAwaiter().GetResult();
|
||||
string url;
|
||||
switch (cloudRegion)
|
||||
{
|
||||
case CloudRegion.EU:
|
||||
url = "https://api.bitwarden.eu/installations/";
|
||||
break;
|
||||
case CloudRegion.US:
|
||||
default:
|
||||
url = "https://api.bitwarden.com/installations/";
|
||||
break;
|
||||
}
|
||||
var response = new HttpClient().GetAsync(url + _context.Install.InstallationId).GetAwaiter().GetResult();
|
||||
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
if (response.StatusCode == System.Net.HttpStatusCode.NotFound)
|
||||
{
|
||||
Console.WriteLine("Invalid installation id.");
|
||||
Console.WriteLine($"Invalid installation id for {cloudRegion.ToString()} region.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Unable to validate installation id.");
|
||||
Console.WriteLine($"Unable to validate installation id for {cloudRegion.ToString()} region.");
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -246,7 +289,7 @@ public class Program
|
||||
var result = response.Content.ReadFromJsonAsync<InstallationValidationResponseModel>().GetAwaiter().GetResult();
|
||||
if (!result.Enabled)
|
||||
{
|
||||
Console.WriteLine("Installation id has been disabled.");
|
||||
Console.WriteLine($"Installation id has been disabled in the {cloudRegion.ToString()} region.");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -254,7 +297,7 @@ public class Program
|
||||
}
|
||||
catch
|
||||
{
|
||||
Console.WriteLine("Unable to validate installation id. Problem contacting Bitwarden server.");
|
||||
Console.WriteLine($"Unable to validate installation id. Problem contacting Bitwarden {cloudRegion.ToString()} server.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user