using System; using System.IO; namespace Bit.Setup { public class EnvironmentFileBuilder { public string Url { get; set; } public string Domain { get; set; } public string IdentityCertPassword { get; set; } public Guid? InstallationId { get; set; } public string InstallationKey { get; set; } public bool Push { get; set; } public string DatabasePassword { get; set; } public string OutputDirectory { get; set; } public void Build() { Console.WriteLine("Building docker environment override files."); Directory.CreateDirectory("/bitwarden/env/"); var dbConnectionString = Helpers.MakeSqlConnectionString("mssql", "vault", "sa", DatabasePassword); using(var sw = File.CreateText("/bitwarden/env/global.override.env")) { sw.Write($@"globalSettings__baseServiceUri__vault={Url} globalSettings__baseServiceUri__api={Url}/api globalSettings__baseServiceUri__identity={Url}/identity globalSettings__sqlServer__connectionString=""{dbConnectionString}"" globalSettings__identityServer__certificatePassword={IdentityCertPassword} globalSettings__attachment__baseDirectory={OutputDirectory}/core/attachments globalSettings__attachment__baseUrl={Url}/attachments globalSettings__dataProtection__directory={OutputDirectory}/core/aspnet-dataprotection globalSettings__logDirectory={OutputDirectory}/core/logs globalSettings__licenseDirectory={OutputDirectory}/core/licenses globalSettings__duo__aKey={Helpers.SecureRandomString(64, alpha: true, numeric: true)} globalSettings__installation__id={InstallationId} globalSettings__installation__key={InstallationKey} globalSettings__yubico__clientId=REPLACE globalSettings__yubico__key=REPLACE globalSettings__mail__replyToEmail=no-reply@{Domain} globalSettings__mail__smtp__host=REPLACE globalSettings__mail__smtp__username=REPLACE globalSettings__mail__smtp__password=REPLACE globalSettings__mail__smtp__ssl=true globalSettings__mail__smtp__port=587 globalSettings__mail__smtp__useDefaultCredentials=false globalSettings__disableUserRegistration=false"); if(!Push) { sw.Write(@" globalSettings__pushRelayBaseUri=REPLACE"); } } using(var sw = File.CreateText("/bitwarden/env/mssql.override.env")) { sw.Write($@"ACCEPT_EULA=Y MSSQL_PID=Express SA_PASSWORD={DatabasePassword}"); } } } }