1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-16 17:15:40 -05:00

validate bitwarden installation id

This commit is contained in:
Kyle Spearrin 2017-08-19 09:33:14 -04:00
parent c3edfbfc39
commit 0a8e831004
2 changed files with 61 additions and 9 deletions

View File

@ -1,8 +1,10 @@
using DbUp; using DbUp;
using Newtonsoft.Json;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Net.Http;
using System.Reflection; using System.Reflection;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@ -12,7 +14,7 @@ namespace Setup
{ {
private static string[] _args = null; private static string[] _args = null;
private static IDictionary<string, string> _parameters = null; private static IDictionary<string, string> _parameters = null;
private static string _outputDir = null; private static string _outputDir = "/etc/bitwarden";
private static string _domain = null; private static string _domain = null;
private static string _url = null; private static string _url = null;
private static string _identityCertPassword = null; private static string _identityCertPassword = null;
@ -43,18 +45,17 @@ namespace Setup
private static void Install() private static void Install()
{ {
_installationId = _parameters.ContainsKey("install_id") ?
_parameters["install_id"].ToLowerInvariant() : null;
_installationKey = _parameters.ContainsKey("install_key") ?
_parameters["install_key"].ToLowerInvariant() : null;
_outputDir = _parameters.ContainsKey("out") ? _outputDir = _parameters.ContainsKey("out") ?
_parameters["out"].ToLowerInvariant() : "/etc/bitwarden"; _parameters["out"].ToLowerInvariant() : _outputDir;
_domain = _parameters.ContainsKey("domain") ? _domain = _parameters.ContainsKey("domain") ?
_parameters["domain"].ToLowerInvariant() : "localhost"; _parameters["domain"].ToLowerInvariant() : "localhost";
_letsEncrypt = _parameters.ContainsKey("letsencrypt") ? _letsEncrypt = _parameters.ContainsKey("letsencrypt") ?
_parameters["letsencrypt"].ToLowerInvariant() == "y" : false; _parameters["letsencrypt"].ToLowerInvariant() == "y" : false;
_ssl = _letsEncrypt || (_parameters.ContainsKey("ssl") ?
_parameters["ssl"].ToLowerInvariant() == "y" : false); if(!ValidateInstallation())
{
return;
}
_ssl = _letsEncrypt; _ssl = _letsEncrypt;
if(!_letsEncrypt) if(!_letsEncrypt)
@ -117,6 +118,56 @@ namespace Setup
} }
} }
private static bool ValidateInstallation()
{
Console.Write("(!) Enter your installation id (get it at https://bitwarden.com/host/): ");
_installationId = Console.ReadLine();
Guid installationidGuid;
if(!Guid.TryParse(_installationId, out installationidGuid))
{
Console.WriteLine("Invalid installation id.");
return false;
}
Console.Write("(!) Enter your installation key: ");
_installationKey = Console.ReadLine();
try
{
var response = new HttpClient().GetAsync("https://api.bitwarden.com/installations/" + _installationId)
.GetAwaiter().GetResult();
if(!response.IsSuccessStatusCode)
{
if(response.StatusCode == System.Net.HttpStatusCode.NotFound)
{
Console.WriteLine("Invalid installation id.");
}
else
{
Console.WriteLine("Unable to validate installation id.");
}
return false;
}
var resultString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
var result = JsonConvert.DeserializeObject<dynamic>(resultString);
if(!(bool)result.Enabled)
{
Console.WriteLine("Installation id has been disabled.");
return false;
}
return true;
}
catch
{
Console.WriteLine("Unable to validate installation id. Problem contacting bitwarden server.");
return false;
}
}
private static void MakeCerts() private static void MakeCerts()
{ {
if(!_ssl) if(!_ssl)
@ -306,7 +357,7 @@ server {{
{ {
Console.WriteLine("Building docker environment override files."); Console.WriteLine("Building docker environment override files.");
Directory.CreateDirectory("/bitwarden/docker/"); Directory.CreateDirectory("/bitwarden/docker/");
var dbPass = _parameters.ContainsKey("db_pass") ? _parameters["db_pass"].ToLowerInvariant() : "REPLACE"; var dbPass = Helpers.SecureRandomString(32);
var dbConnectionString = Helpers.MakeSqlConnectionString("mssql", "vault", "sa", dbPass); var dbConnectionString = Helpers.MakeSqlConnectionString("mssql", "vault", "sa", dbPass);
using(var sw = File.CreateText("/bitwarden/docker/global.override.env")) using(var sw = File.CreateText("/bitwarden/docker/global.override.env"))

View File

@ -8,6 +8,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="dbup" Version="3.3.5" /> <PackageReference Include="dbup" Version="3.3.5" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
<PackageReference Include="System.Data.SqlClient" Version="4.4.0" /> <PackageReference Include="System.Data.SqlClient" Version="4.4.0" />
</ItemGroup> </ItemGroup>