From 0366c0efef1a0732aae8890d5eb09aba955a96ba Mon Sep 17 00:00:00 2001 From: Vince Grassia <593223+vgrassia@users.noreply.github.com> Date: Tue, 6 Apr 2021 14:39:27 -0400 Subject: [PATCH] Add install-id, install-key, and skip-ssl flags to Setup Project (#1260) * Add install-id, install-key, and skip-ssl flags * Update util/Setup/CertBuilder.cs Co-authored-by: Kyle Spearrin * Update util/Setup/Program.cs Co-authored-by: Kyle Spearrin * Remove redundant variable assignment Co-authored-by: Kyle Spearrin --- util/Setup/CertBuilder.cs | 45 ++++++++++++++++++++++----------------- util/Setup/Program.cs | 24 +++++++++++++++++++-- 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/util/Setup/CertBuilder.cs b/util/Setup/CertBuilder.cs index b5f07e81c4..21919131d6 100644 --- a/util/Setup/CertBuilder.cs +++ b/util/Setup/CertBuilder.cs @@ -28,27 +28,32 @@ namespace Bit.Setup if (!_context.Config.Ssl) { - _context.Config.Ssl = Helpers.ReadQuestion("Do you have a SSL certificate to use?"); - if (_context.Config.Ssl) + var skipSSL = _context.Parameters.ContainsKey("skip-ssl") && (_context.Parameters["skip-ssl"] == "true" || _context.Parameters["skip-ssl"] == "1"); + + if (!skipSSL) { - Directory.CreateDirectory($"/bitwarden/ssl/{_context.Install.Domain}/"); - var message = "Make sure 'certificate.crt' and 'private.key' are provided in the \n" + - "appropriate directory before running 'start' (see docs for info)."; - Helpers.ShowBanner(_context, "NOTE", message); - } - else if (Helpers.ReadQuestion("Do you want to generate a self-signed SSL certificate?")) - { - Directory.CreateDirectory($"/bitwarden/ssl/self/{_context.Install.Domain}/"); - Helpers.WriteLine(_context, "Generating self signed SSL certificate."); - _context.Config.Ssl = true; - _context.Install.Trusted = false; - _context.Install.SelfSignedCert = true; - Helpers.Exec("openssl req -x509 -newkey rsa:4096 -sha256 -nodes -days 36500 " + - $"-keyout /bitwarden/ssl/self/{_context.Install.Domain}/private.key " + - $"-out /bitwarden/ssl/self/{_context.Install.Domain}/certificate.crt " + - $"-reqexts SAN -extensions SAN " + - $"-config <(cat /usr/lib/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:{_context.Install.Domain}\nbasicConstraints=CA:true')) " + - $"-subj \"/C=US/ST=California/L=Santa Barbara/O=Bitwarden Inc./OU=Bitwarden/CN={_context.Install.Domain}\""); + _context.Config.Ssl = Helpers.ReadQuestion("Do you have a SSL certificate to use?"); + if (_context.Config.Ssl) + { + Directory.CreateDirectory($"/bitwarden/ssl/{_context.Install.Domain}/"); + var message = "Make sure 'certificate.crt' and 'private.key' are provided in the \n" + + "appropriate directory before running 'start' (see docs for info)."; + Helpers.ShowBanner(_context, "NOTE", message); + } + else if (Helpers.ReadQuestion("Do you want to generate a self-signed SSL certificate?")) + { + Directory.CreateDirectory($"/bitwarden/ssl/self/{_context.Install.Domain}/"); + Helpers.WriteLine(_context, "Generating self signed SSL certificate."); + _context.Config.Ssl = true; + _context.Install.Trusted = false; + _context.Install.SelfSignedCert = true; + Helpers.Exec("openssl req -x509 -newkey rsa:4096 -sha256 -nodes -days 36500 " + + $"-keyout /bitwarden/ssl/self/{_context.Install.Domain}/private.key " + + $"-out /bitwarden/ssl/self/{_context.Install.Domain}/certificate.crt " + + $"-reqexts SAN -extensions SAN " + + $"-config <(cat /usr/lib/ssl/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:{_context.Install.Domain}\nbasicConstraints=CA:true')) " + + $"-subj \"/C=US/ST=California/L=Santa Barbara/O=Bitwarden Inc./OU=Bitwarden/CN={_context.Install.Domain}\""); + } } } diff --git a/util/Setup/Program.cs b/util/Setup/Program.cs index 0cfccf4972..485e55df6a 100644 --- a/util/Setup/Program.cs +++ b/util/Setup/Program.cs @@ -196,15 +196,35 @@ namespace Bit.Setup private static bool ValidateInstallation() { - var installationId = Helpers.ReadInput("Enter your installation id (get at https://bitwarden.com/host)"); + var installationId = string.Empty; + var installationKey = string.Empty; + + if (_context.Parameters.ContainsKey("install-id")) + { + installationId = _context.Parameters["install-id"].ToLowerInvariant(); + } + else + { + installationId = Helpers.ReadInput("Enter your installation id (get at https://bitwarden.com/host)"); + } + if (!Guid.TryParse(installationId.Trim(), out var installationidGuid)) { Console.WriteLine("Invalid installation id."); return false; } + if (_context.Parameters.ContainsKey("install-key")) + { + installationKey = _context.Parameters["install-key"]; + } + else + { + installationKey = Helpers.ReadInput("Enter your installation key"); + } + _context.Install.InstallationId = installationidGuid; - _context.Install.InstallationKey = Helpers.ReadInput("Enter your installation key"); + _context.Install.InstallationKey = installationKey; try {