diff --git a/src/gui/src/LicenseRegistry.cpp b/src/gui/src/LicenseRegistry.cpp index 4b16352ee6..a7f72863aa 100644 --- a/src/gui/src/LicenseRegistry.cpp +++ b/src/gui/src/LicenseRegistry.cpp @@ -20,6 +20,7 @@ #include #include "LicenseRegistry.h" +#include #include "AppConfig.h" #include @@ -62,18 +63,21 @@ void LicenseRegistry::registerLicense() QByteArray LicenseRegistry::getRequestData() const { QJsonObject data; - QString guid(QSysInfo::machineUniqueId()); + const QString guid(QSysInfo::machineUniqueId()); if (!guid.isEmpty()) { data["guid"] = guid; - data["guid_generated"] = false; + data["guid_type"] = "system"; } else { data["guid"] = m_config.getGuid(); - data["guid_generated"] = true; + data["guid_type"] = "synergy"; } - data["key"] = m_config.serialKey(); + const SerialKey key(m_config.serialKey().toStdString()); + data["email"] = key.getEmail().c_str(); + data["key"] = key.toString().c_str(); + data["is_server"] = m_config.getServerGroupChecked(); return QJsonDocument(data).toJson(); diff --git a/src/lib/shared/SerialKey.cpp b/src/lib/shared/SerialKey.cpp index 47e50c0624..dc4be31652 100644 --- a/src/lib/shared/SerialKey.cpp +++ b/src/lib/shared/SerialKey.cpp @@ -155,3 +155,9 @@ SerialKey::getSpanLeft(time_t time) const return result; } + +const std::string& +SerialKey::getEmail() const +{ + return m_data.email; +} diff --git a/src/lib/shared/SerialKey.h b/src/lib/shared/SerialKey.h index f3f10d05b5..db10c1761f 100644 --- a/src/lib/shared/SerialKey.h +++ b/src/lib/shared/SerialKey.h @@ -37,6 +37,7 @@ public: time_t daysLeft(time_t currentTime) const; time_t getExpiration() const; int getSpanLeft(time_t time = ::time(0)) const; + const std::string& getEmail() const; Edition edition() const; const std::string& toString() const; diff --git a/src/lib/shared/SerialKeyData.h b/src/lib/shared/SerialKeyData.h index 0c9cd7b24e..4744504bda 100644 --- a/src/lib/shared/SerialKeyData.h +++ b/src/lib/shared/SerialKeyData.h @@ -26,6 +26,7 @@ */ struct SerialKeyData { std::string key; // Encoded serial key as a string + std::string email; // Email from the serial key SerialKeyEdition edition; // Serial key edition SerialKeyType keyType; // Serial key type unsigned long long warnTime = 0; // Warning time @@ -53,6 +54,7 @@ struct SerialKeyData { inline bool operator== (SerialKeyData const& lhs, SerialKeyData const& rhs) { return (lhs.key == rhs.key) && + (lhs.email == rhs.email) && (lhs.warnTime == rhs.warnTime) && (lhs.expireTime == rhs.expireTime) && (lhs.edition == rhs.edition) && diff --git a/src/lib/shared/SerialKeyParser.cpp b/src/lib/shared/SerialKeyParser.cpp index 1e96f38442..f9a8f80c40 100644 --- a/src/lib/shared/SerialKeyParser.cpp +++ b/src/lib/shared/SerialKeyParser.cpp @@ -23,6 +23,12 @@ SerialKeyParser::setKey(const std::string& key) m_data.key = key; } +void +SerialKeyParser::setEmail(const std::string& email) +{ + m_data.email = email; +} + void SerialKeyParser::setType(const std::string& type) { @@ -114,6 +120,7 @@ SerialKeyParser::parseV1(const std::vector& parts) { // e.g.: {v1;basic;Bob;1;email;company name;1398297600;1398384000} setEdition(parts.at(1)); + setEmail(parts.at(4)); setWarningTime(parts.at(6)); setExpirationTime(parts.at(7)); } @@ -124,6 +131,7 @@ SerialKeyParser::parseV2(const std::vector& parts) // e.g.: {v2;trial;basic;Bob;1;email;company name;1398297600;1398384000} setType(parts.at(1)); setEdition(parts.at(2)); + setEmail(parts.at(5)); setWarningTime(parts.at(7)); setExpirationTime(parts.at(8)); } diff --git a/src/lib/shared/SerialKeyParser.h b/src/lib/shared/SerialKeyParser.h index f4e1e449c3..728a599105 100644 --- a/src/lib/shared/SerialKeyParser.h +++ b/src/lib/shared/SerialKeyParser.h @@ -46,6 +46,12 @@ public: */ void setKey(const std::string& key); + /** + * @brief setEmail setter to set encoded email + * @param email encoded email from the key + */ + void setEmail(const std::string& email); + /** * @brief setType setter for serial type * @param type serial key type