Files
Work/guitar/registration.cpp
2024-08-07 09:16:27 -04:00

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;
}