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