166 lines
4.3 KiB
C++
166 lines
4.3 KiB
C++
#include <guitar/registration.hpp>
|
|
#include <guitar/guitar.hpp>
|
|
#include <common/version.hpp>
|
|
#include <common/openfile.hpp>
|
|
|
|
SmartPointer<Registration> Registration::smRegistration;
|
|
|
|
Registration::Registration()
|
|
: mRegistrationKeyName(STRING_REGISTRATIONKEYNAME),
|
|
mSettingsLicenseKey(STRING_SETTINGSLICENSE)
|
|
{
|
|
}
|
|
|
|
Registration::~Registration()
|
|
{
|
|
}
|
|
|
|
Registration &Registration::getInstance()
|
|
{
|
|
if(!smRegistration.isOkay())
|
|
{
|
|
smRegistration=::new Registration();
|
|
smRegistration.disposition(PointerDisposition::Delete);
|
|
}
|
|
return *smRegistration;
|
|
}
|
|
|
|
bool Registration::hasGID(void)const
|
|
{
|
|
FileHandle gidFile;
|
|
return gidFile.open("install.gid",FileHandle::Read,FileHandle::ShareRead,FileHandle::Open,FileHandle::Hidden);
|
|
}
|
|
|
|
bool Registration::hasLicense(void)const
|
|
{
|
|
RegKey regKeyRegistration;
|
|
String strLicense;
|
|
|
|
if(!regKeyRegistration.openKey(mRegistrationKeyName))return false;
|
|
regKeyRegistration.queryValue(mSettingsLicenseKey,strLicense);
|
|
return strLicense.isNull()?false:true;
|
|
}
|
|
|
|
bool Registration::getLicense(License &license)const
|
|
{
|
|
String strLicense;
|
|
RegKey regKeyRegistration;
|
|
if(!regKeyRegistration.openKey(mRegistrationKeyName))return false;
|
|
regKeyRegistration.queryValue(mSettingsLicenseKey,strLicense);
|
|
license.fromString(strLicense);
|
|
return true;
|
|
}
|
|
|
|
bool Registration::applyLicense(Block<String> &strLicenseLines)
|
|
{
|
|
RegKey regKeyRegistration;
|
|
License license;
|
|
|
|
license.fromLines(strLicenseLines);
|
|
if(!license.isValid())return false;
|
|
if(!regKeyRegistration.openKey(mRegistrationKeyName))
|
|
{
|
|
regKeyRegistration.createKey(mRegistrationKeyName,"");
|
|
regKeyRegistration.openKey(mRegistrationKeyName);
|
|
}
|
|
regKeyRegistration.setValue(mSettingsLicenseKey,license.getUUEncodedLicense());
|
|
return true;
|
|
}
|
|
|
|
bool Registration::applyLicense(const String &uuencodedLicense)
|
|
{
|
|
RegKey regKeyRegistration;
|
|
License license;
|
|
|
|
license.fromString(uuencodedLicense);
|
|
if(!license.isValid())return false;
|
|
if(!regKeyRegistration.openKey(mRegistrationKeyName))
|
|
{
|
|
regKeyRegistration.createKey(mRegistrationKeyName,"");
|
|
regKeyRegistration.openKey(mRegistrationKeyName);
|
|
}
|
|
regKeyRegistration.setValue(mSettingsLicenseKey,uuencodedLicense);
|
|
return true;
|
|
}
|
|
|
|
bool Registration::create30DayLicense(void)const
|
|
{
|
|
createLicense(30);
|
|
return true;
|
|
}
|
|
|
|
bool Registration::create15DayLicense(void)const
|
|
{
|
|
createLicense(15);
|
|
return true;
|
|
}
|
|
|
|
bool Registration::createPermanentLicense(void)const
|
|
{
|
|
VersionInfo versionInfo;
|
|
SystemTime issueDate;
|
|
String strLicense;
|
|
String strVersion;
|
|
RegKey regKeyRegistration;
|
|
FileHandle gidFile;
|
|
|
|
if(!regKeyRegistration.openKey(mRegistrationKeyName))
|
|
{
|
|
regKeyRegistration.createKey(mRegistrationKeyName,"");
|
|
regKeyRegistration.openKey(mRegistrationKeyName);
|
|
}
|
|
strVersion=versionInfo.getProductVersionString();
|
|
strVersion.removeTokens(", ");
|
|
strVersion.upper();
|
|
strLicense=License::generate(strVersion,issueDate,License::Permanent,0);
|
|
regKeyRegistration.setValue(mSettingsLicenseKey,strLicense);
|
|
gidFile.open("install.gid",FileHandle::Write,FileHandle::ShareRead,FileHandle::Overwrite,FileHandle::Hidden);
|
|
return true;
|
|
}
|
|
|
|
License Registration::generatePermanentLicense(void)const
|
|
{
|
|
VersionInfo versionInfo;
|
|
SystemTime issueDate;
|
|
String strLicense;
|
|
String strVersion;
|
|
License license;
|
|
|
|
strVersion=versionInfo.getProductVersionString();
|
|
strVersion.removeTokens(", ");
|
|
strVersion.upper();
|
|
strLicense=License::generate(strVersion,issueDate,License::Permanent,0);
|
|
license.fromString(strLicense);
|
|
return license;
|
|
}
|
|
|
|
bool Registration::removeLicense(void)
|
|
{
|
|
RegKey regKeyRegistration;
|
|
return regKeyRegistration.deleteKey(mRegistrationKeyName);
|
|
}
|
|
|
|
bool Registration::createLicense(int days)const
|
|
{
|
|
VersionInfo versionInfo;
|
|
SystemTime issueDate;
|
|
String strLicense;
|
|
String strVersion;
|
|
RegKey regKeyRegistration;
|
|
FileHandle gidFile;
|
|
|
|
if(!regKeyRegistration.openKey(mRegistrationKeyName))
|
|
{
|
|
regKeyRegistration.createKey(mRegistrationKeyName,"");
|
|
regKeyRegistration.openKey(mRegistrationKeyName);
|
|
}
|
|
strVersion=versionInfo.getProductVersionString();
|
|
strVersion.removeTokens(", ");
|
|
strVersion.upper();
|
|
strLicense=License::generate(strVersion,issueDate,License::Expires,days);
|
|
regKeyRegistration.setValue(mSettingsLicenseKey,strLicense);
|
|
gidFile.open("install.gid",FileHandle::Write,FileHandle::ShareRead,FileHandle::Overwrite,FileHandle::Hidden);
|
|
return true;
|
|
}
|
|
|