gen: Added quarters parameter to license generator

This commit is contained in:
Eberhard Graether
2018-08-24 12:25:58 +02:00
parent caad4dfc14
commit 01d5f23e8f
4 changed files with 44 additions and 24 deletions
+20 -12
View File
@@ -57,13 +57,14 @@ std::string Generator::getPublicKeyFilename()
return m_publicKeyFile;
}
std::string Generator::encodeLicense(
std::string Generator::encodeLicenseByVersion(
const std::string& user,
const std::string& licenseType,
size_t numberOfUsers,
const std::string& version
){
m_license = nullptr;
if (user.size() <= 0)
{
std::cout << "No user given" << std::endl;
@@ -76,24 +77,31 @@ std::string Generator::encodeLicense(
return "";
}
if (!version.empty())
if (version.empty())
{
Version tempVersion = Version::fromString(version);
if (tempVersion.isValid())
{
createLicense(user, licenseType, tempVersion.toShortString(), false, numberOfUsers);
}
std::cout << "No version given" << std::endl;
return "";
}
if (!m_license)
Version tempVersion = Version::fromString(version);
if (tempVersion.isValid())
{
createLicense(user, licenseType, getExpireVersion(), false, numberOfUsers);
createLicense(user, licenseType, tempVersion.toShortString(), false, numberOfUsers);
}
return m_license->getLicenseString();
}
std::string Generator::encodeLicense(
std::string Generator::encodeLicenseByQuarters(
const std::string& user,
const std::string& licenseType,
size_t numberOfUsers,
size_t quarters
){
return encodeLicenseByVersion(user, licenseType, numberOfUsers, getExpireVersion(quarters));
}
std::string Generator::encodeLicenseByDays(
const std::string& user,
const std::string& licenseType,
size_t numberOfUsers,
@@ -273,11 +281,11 @@ int Generator::mapMonthToVersion(int month)
return (month-1)/3+1;
}
std::string Generator::getExpireVersion(int versions)
std::string Generator::getExpireVersion(int quarters)
{
boost::gregorian::date today = boost::gregorian::day_clock::local_day();
int monthNumber = today.month().as_number();
Version version(today.year(), mapMonthToVersion(monthNumber));
version += versions;
version += quarters;
return version.toShortString();
}
+9 -3
View File
@@ -18,13 +18,19 @@ public:
Generator();
~Generator();
std::string encodeLicense(
std::string encodeLicenseByVersion(
const std::string& user,
const std::string& licenseType,
size_t numberOfUsers,
const std::string& version
);
std::string encodeLicense(
std::string encodeLicenseByQuarters(
const std::string& user,
const std::string& licenseType,
size_t numberOfUsers,
size_t quarters
);
std::string encodeLicenseByDays(
const std::string& user,
const std::string& licenseType,
size_t numberOfUsers,
@@ -52,7 +58,7 @@ public:
size_t numberOfUsers
);
std::string getExpireVersion(int versions = 4);
std::string getExpireVersion(int quarters);
void setVersionLine(int year, int minorVersion);
private:
int mapMonthToVersion(int month);
+8 -2
View File
@@ -21,6 +21,7 @@ bool process_command_line(int argc, char** argv)
std::string publicKeyFile;
std::string licenseFile = "";
std::string type = "";
int quarters = 4;
int days = 0;
int numberOfUsers = 0;
@@ -33,6 +34,7 @@ bool process_command_line(int argc, char** argv)
po::options_description keygen_description("Options Keygeneration");
keygen_description.add_options()
("version,v", po::value<std::string>(&version), "Versionnumber (in format 20xx.x) until Sourcetrail valid")
("quarters,q", po::value<int>(&quarters), "Number of quarters Sourcetrail is valid from now")
("users,u", po::value<int>(&numberOfUsers), "Number of users")
("licenseType,t", po::value<std::string>(&type), "License Type of ")
("expiration,e", po::value<int>(&days), "Valid for <value> days");
@@ -117,11 +119,15 @@ bool process_command_line(int argc, char** argv)
{
if (days > 0)
{
keygen.encodeLicense(user, type, numberOfUsers, days);
keygen.encodeLicenseByDays(user, type, numberOfUsers, days);
}
else if (!version.empty())
{
keygen.encodeLicenseByVersion(user, type, numberOfUsers, version);
}
else
{
keygen.encodeLicense(user, type, numberOfUsers, version);
keygen.encodeLicenseByQuarters(user, type, numberOfUsers, quarters);
}
keygen.printLicenseAndWriteItToFile();
}
+7 -7
View File
@@ -46,7 +46,7 @@ public:
generator.loadPrivateKeyFromString(generator.getPrivateKeyPEMFileAsString());
License license;
license.loadFromString(generator.encodeLicense("TestUser", "VolumeLicense", 20, ""));
license.loadFromString(generator.encodeLicenseByQuarters("TestUser", "VolumeLicense", 20, 4));
TS_ASSERT_EQUALS(license.getNumberOfUsers(), 20);
}
@@ -59,13 +59,13 @@ public:
License license;
license.loadPublicKeyFromString(generator.getPublicKeyPEMFileAsString());
license.loadFromString(generator.encodeLicense("User", "", 0, 10));
license.loadFromString(generator.encodeLicenseByDays("User", "", 0, 10));
TS_ASSERT(license.isValid());
TS_ASSERT_EQUALS(license.getTimeLeft(), 10);
license.loadPublicKeyFromString(generator.getPublicKeyPEMFileAsString());
license.loadFromString(generator.encodeLicense("User", "", 0, -10));
license.loadFromString(generator.encodeLicenseByDays("User", "", 0, -10));
TS_ASSERT(!license.isValid());
// -1 and not -10 since it means it is expired
@@ -79,15 +79,15 @@ public:
License license;
license.loadFromString(generator.encodeLicense("TestUser", "Private License", 1, "2017.4"));
license.loadFromString(generator.encodeLicenseByVersion("TestUser", "Private License", 1, "2017.4"));
std::string testInfo = "TestUser\nPrivate License\n1 user\nvalid up to version: 2017.4";
TS_ASSERT_EQUALS(license.getLicenseInfo(), testInfo);
license.loadFromString(generator.encodeLicense("TestUser", "Volume License", 20, "2017.3"));
license.loadFromString(generator.encodeLicenseByVersion("TestUser", "Volume License", 20, "2017.3"));
testInfo = "TestUser\nVolume License\n20 users\nvalid up to version: 2017.3";
TS_ASSERT_EQUALS(license.getLicenseInfo(), testInfo);
license.loadFromString(generator.encodeLicense("TestUser", "Private/Academic Single User License", 0, "2018.1"));
license.loadFromString(generator.encodeLicenseByVersion("TestUser", "Private/Academic Single User License", 0, "2018.1"));
testInfo = "TestUser\nPrivate/Academic Single User License\nnot registered for commercial development\nvalid up to version: 2018.1";
TS_ASSERT_EQUALS(license.getLicenseInfo(), testInfo);
}
@@ -99,7 +99,7 @@ public:
generator.loadPrivateKeyFromString(generator.getPrivateKeyPEMFileAsString());
License license;
license.loadFromString(generator.encodeLicense("TestUser", "Private License", 20, "2017.3"));
license.loadFromString(generator.encodeLicenseByVersion("TestUser", "Private License", 20, "2017.3"));
license.loadPublicKeyFromString(generator.getPublicKeyPEMFileAsString());
TS_ASSERT_EQUALS(license.getUser(), "TestUser");