From ce6270337cfba8e351d734407972db78c231fb8c Mon Sep 17 00:00:00 2001 From: Micaiah Martin Date: Fri, 18 Apr 2025 08:59:38 -0600 Subject: [PATCH] Add InstallationUrl to support local development - Support .pw domains --- util/Setup/Context.cs | 1 + util/Setup/Enums/CloudRegion.cs | 2 ++ util/Setup/Program.cs | 27 +++++++++++++++++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/util/Setup/Context.cs b/util/Setup/Context.cs index 58a5ced0ac..addbf5551d 100644 --- a/util/Setup/Context.cs +++ b/util/Setup/Context.cs @@ -185,6 +185,7 @@ public class Context { public Guid InstallationId { get; set; } public string InstallationKey { get; set; } + public string InstallationUrl { get; set; } public CloudRegion CloudRegion { get; set; } public bool DiffieHellman { get; set; } public bool Trusted { get; set; } diff --git a/util/Setup/Enums/CloudRegion.cs b/util/Setup/Enums/CloudRegion.cs index 6c5f572818..a2753ccd54 100644 --- a/util/Setup/Enums/CloudRegion.cs +++ b/util/Setup/Enums/CloudRegion.cs @@ -8,4 +8,6 @@ public enum CloudRegion US = 0, [Display(Name = "EU")] EU = 1, + [Display(Name = "DEV")] + DEV = 2, } diff --git a/util/Setup/Program.cs b/util/Setup/Program.cs index 5768db7abb..df6339bb9e 100644 --- a/util/Setup/Program.cs +++ b/util/Setup/Program.cs @@ -205,6 +205,7 @@ public class Program { var installationId = string.Empty; var installationKey = string.Empty; + var InstallationUrl = string.Empty; CloudRegion cloudRegion; if (_context.Parameters.ContainsKey("install-id")) @@ -243,6 +244,11 @@ public class Program } } + if (Environment.GetEnvironmentVariable("BW_INSTALLATION_URL") != null) + { + InstallationUrl = Environment.GetEnvironmentVariable("BW_INSTALLATION_URL"); + } + if (_context.Parameters.ContainsKey("cloud-region")) { Enum.TryParse(_context.Parameters["cloud-region"], out cloudRegion); @@ -263,22 +269,35 @@ public class Program _context.Install.InstallationId = installationidGuid; _context.Install.InstallationKey = installationKey; + _context.Install.InstallationUrl = InstallationUrl; _context.Install.CloudRegion = cloudRegion; try { - string url; + string regionBaseUrl; switch (cloudRegion) { case CloudRegion.EU: - url = "https://api.bitwarden.eu/installations/"; + regionBaseUrl = "bitwarden.eu"; break; case CloudRegion.US: default: - url = "https://api.bitwarden.com/installations/"; + regionBaseUrl = "bitwarden.com"; + break; + case CloudRegion.DEV: + regionBaseUrl = "bitwarden.pw"; break; } - var response = new HttpClient().GetAsync(url + _context.Install.InstallationId).GetAwaiter().GetResult(); + + HttpResponseMessage response; + if (_context.Install.InstallationUrl != null) + { + response = new HttpClient().GetAsync($"https://api.{_context.Install.InstallationUrl}.{regionBaseUrl}/installations/{_context.Install.InstallationId}").GetAwaiter().GetResult(); + } + else + { + response = new HttpClient().GetAsync($"https://api.{regionBaseUrl}/installations/{_context.Install.InstallationId}").GetAwaiter().GetResult(); + } if (!response.IsSuccessStatusCode) {