From 01d5f23e8f4f41578f0e2c251faaa0abd579173d Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Fri, 24 Aug 2018 12:25:58 +0200 Subject: [PATCH] gen: Added quarters parameter to license generator --- src/license_generator/Generator.cpp | 32 ++++++++++++++++++----------- src/license_generator/Generator.h | 12 ++++++++--- src/license_generator/main.cpp | 10 +++++++-- src/test/GeneratorTestSuite.h | 14 ++++++------- 4 files changed, 44 insertions(+), 24 deletions(-) diff --git a/src/license_generator/Generator.cpp b/src/license_generator/Generator.cpp index 78d97f69..238a69c7 100644 --- a/src/license_generator/Generator.cpp +++ b/src/license_generator/Generator.cpp @@ -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(); } diff --git a/src/license_generator/Generator.h b/src/license_generator/Generator.h index 21d9e44a..d01219e5 100644 --- a/src/license_generator/Generator.h +++ b/src/license_generator/Generator.h @@ -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); diff --git a/src/license_generator/main.cpp b/src/license_generator/main.cpp index adba79c4..84e77ed9 100644 --- a/src/license_generator/main.cpp +++ b/src/license_generator/main.cpp @@ -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(&version), "Versionnumber (in format 20xx.x) until Sourcetrail valid") + ("quarters,q", po::value(&quarters), "Number of quarters Sourcetrail is valid from now") ("users,u", po::value(&numberOfUsers), "Number of users") ("licenseType,t", po::value(&type), "License Type of ") ("expiration,e", po::value(&days), "Valid for 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(); } diff --git a/src/test/GeneratorTestSuite.h b/src/test/GeneratorTestSuite.h index 80b2ca20..4c6c55fc 100644 --- a/src/test/GeneratorTestSuite.h +++ b/src/test/GeneratorTestSuite.h @@ -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");