1
0
mirror of https://github.com/jakeswenson/BitBetter.git synced 2023-10-10 13:36:57 +02:00
This commit is contained in:
Jake Swenson 2017-10-29 12:44:54 -07:00
parent b1a8ec5031
commit 92555591f5
3 changed files with 48 additions and 13 deletions

View File

@ -13,9 +13,24 @@ namespace bitwardenSelfLicensor
static int Main(string[] args) static int Main(string[] args)
{ {
var app = new Microsoft.Extensions.CommandLineUtils.CommandLineApplication(); var app = new Microsoft.Extensions.CommandLineUtils.CommandLineApplication();
var cert = app.Option("-c | --cert", "cert file", CommandOptionType.SingleValue); var cert = app.Option("--cert", "cert file", CommandOptionType.SingleValue);
var coreDll = app.Option("--core", "path to core dll", CommandOptionType.SingleValue); var coreDll = app.Option("--core", "path to core dll", CommandOptionType.SingleValue);
bool certExists() {
return File.Exists(cert.Value());
}
bool coreExists() {
return File.Exists(coreDll.Value());
}
bool verifyTopOptions()
{
return !string.IsNullOrWhiteSpace(cert.Value()) &&
!string.IsNullOrWhiteSpace(coreDll.Value()) &&
certExists() && coreExists();
}
app.Command("user", config => app.Command("user", config =>
{ {
var name = config.Argument("Name", "your name"); var name = config.Argument("Name", "your name");
@ -25,13 +40,22 @@ namespace bitwardenSelfLicensor
config.OnExecute(() => config.OnExecute(() =>
{ {
if (!cert.HasValue() || !coreDll.HasValue()) if (!verifyTopOptions())
{ {
app.ShowHelp(); if(!coreExists())
{
config.Error.WriteLine($"Cant find core dll at: {coreDll.Value()}");
}
if (!certExists()) {
config.Error.WriteLine($"Cant find certificate at: {cert.Value()}");
}
config.ShowHelp();
return 1; return 1;
} }
else if (string.IsNullOrWhiteSpace(name.Value) || string.IsNullOrWhiteSpace(email.Value)) else if (string.IsNullOrWhiteSpace(name.Value) || string.IsNullOrWhiteSpace(email.Value))
{ {
config.Error.WriteLine($"Some arguments are missing: Name='{name.Value}' Email='{email.Value}'");
config.ShowHelp("user"); config.ShowHelp("user");
return 1; return 1;
} }
@ -51,16 +75,24 @@ namespace bitwardenSelfLicensor
config.OnExecute(() => config.OnExecute(() =>
{ {
if (!cert.HasValue() || !coreDll.HasValue()) if (!verifyTopOptions())
{ {
app.ShowHelp(); if(!coreExists())
{
config.Error.WriteLine($"Cant find core dll at: {coreDll.Value()}");
}
if (!certExists()) {
config.Error.WriteLine($"Cant find certificate at: {cert.Value()}");
}
config.ShowHelp();
return 1; return 1;
} }
else if (string.IsNullOrWhiteSpace(name.Value) || else if (string.IsNullOrWhiteSpace(name.Value) ||
string.IsNullOrWhiteSpace(email.Value) || string.IsNullOrWhiteSpace(email.Value) ||
string.IsNullOrWhiteSpace(installId.Value)) string.IsNullOrWhiteSpace(installId.Value))
{ {
config.Error.WriteLine("Missing arguments"); config.Error.WriteLine($"Some arguments are missing: Name='{name.Value}' Email='{email.Value}' InstallId='{installId.Value}'");
config.ShowHelp("org"); config.ShowHelp("org");
return 1; return 1;
} }
@ -68,7 +100,9 @@ namespace bitwardenSelfLicensor
if (!Guid.TryParse(installId.Value, out Guid installationId)) if (!Guid.TryParse(installId.Value, out Guid installationId))
{ {
config.Error.WriteLine("Unable to parse your installation id as a GUID"); config.Error.WriteLine("Unable to parse your installation id as a GUID");
config.Error.WriteLine($"Here's a new guid: {Guid.NewGuid()}");
config.ShowHelp("org"); config.ShowHelp("org");
return 1;
} }
GenerateOrgLicense(new X509Certificate2(cert.Value(), "test"), coreDll.Value(), name.Value, email.Value, installationId, key.Value); GenerateOrgLicense(new X509Certificate2(cert.Value(), "test"), coreDll.Value(), name.Value, email.Value, installationId, key.Value);
@ -125,7 +159,7 @@ namespace bitwardenSelfLicensor
set("Hash", Convert.ToBase64String((byte[])type.GetMethod("ComputeHash").Invoke(license, new object[0]))); set("Hash", Convert.ToBase64String((byte[])type.GetMethod("ComputeHash").Invoke(license, new object[0])));
set("Signature", Convert.ToBase64String((byte[])type.GetMethod("Sign").Invoke(license, new object[] { cert }))); set("Signature", Convert.ToBase64String((byte[])type.GetMethod("Sign").Invoke(license, new object[] { cert })));
Console.WriteLine(JsonConvert.SerializeObject(license)); Console.WriteLine(JsonConvert.SerializeObject(license, Formatting.Indented));
} }
static void GenerateOrgLicense(X509Certificate2 cert, string corePath, static void GenerateOrgLicense(X509Certificate2 cert, string corePath,
@ -167,7 +201,7 @@ namespace bitwardenSelfLicensor
set("Hash", Convert.ToBase64String((byte[])type.GetMethod("ComputeHash").Invoke(license, new object[0]))); set("Hash", Convert.ToBase64String((byte[])type.GetMethod("ComputeHash").Invoke(license, new object[0])));
set("Signature", Convert.ToBase64String((byte[])type.GetMethod("Sign").Invoke(license, new object[] { cert }))); set("Signature", Convert.ToBase64String((byte[])type.GetMethod("Sign").Invoke(license, new object[] { cert })));
Console.WriteLine(JsonConvert.SerializeObject(license)); Console.WriteLine(JsonConvert.SerializeObject(license, Formatting.Indented));
} }
} }
} }

View File

@ -7,5 +7,5 @@ cd $script_dir
dotnet restore dotnet restore
dotnet publish dotnet publish
docker build . -t bitbetter/licenseGen # --squash docker build . -t bitbetter/licensegen # --squash

View File

@ -2,10 +2,11 @@
script_dir=`cd $(dirname $0); pwd` script_dir=`cd $(dirname $0); pwd`
if [ "$#" -ne "1" ]; then if [ "$#" -lt "1" ]; then
echo "USAGE: $0 <ABSOLUTE PATH TO CERT.PFX>" echo "USAGE: $0 <ABSOLUTE PATH TO CERT.PFX> [License Gen args...]"
exit 1 exit 1
fi fi
cert_path=$1
docker run -it -v "$1:/cert.pfx" bitbetter/licensegen shift
docker run -it -v "$cert_path:/cert.pfx" bitbetter/licensegen "$@"