00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __GZ_LICENSE_H__
00022 #define __GZ_LICENSE_H__
00023
00031 #include "gzBase.h"
00032 #include "gzService.h"
00033 #include "gzThread.h"
00034
00036
00037 enum gzLicenceFeature
00038 {
00039 GZ_LICENSE_FEATURE_NONE = 0 ,
00040 GZ_LICENSE_FEATURE_GRAPHICS = (1<<0),
00041 GZ_LICENSE_FEATURE_SAVERS = (1<<1),
00042 GZ_LICENSE_FEATURE_DEVELOPER= (1<<2)
00043
00044 };
00045
00046 GZ_USE_BIT_LOGIC(gzLicenceFeature);
00047
00048 enum gzLicenseCheckFeature
00049 {
00050 GZ_LICENSE_CHECK_FEATURE_VALID = 1,
00051 GZ_LICENSE_CHECK_FEATURE_INVALID = -1,
00052 GZ_LICENSE_CHECK_FEATURE_WRONG_VERSION = -2,
00053 GZ_LICENSE_CHECK_FEATURE_EXPIRED = -3,
00054 GZ_LICENSE_CHECK_FEATURE_NOT_STARTED = -4,
00055 GZ_LICENSE_CHECK_FEATURE_NOT_LICENSED = -5,
00056 GZ_LICENSE_CHECK_FEATURE_PERMANENT = 32767,
00057 };
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 class gzLicense
00074 {
00075 public:
00076
00077 GZ_BASE_EXPORT static gzULongLong getMachineID();
00078
00079 GZ_BASE_EXPORT static gzUShort getFeatureKey(const gzString &licenseName=GZ_EMPTY_STRING);
00080
00081 GZ_BASE_EXPORT static gzUShort getFeatureKey(const gzULongLong &licenseKey);
00082
00083 GZ_BASE_EXPORT static gzVoid notifyDefaultLicense();
00084
00085 GZ_BASE_EXPORT static gzULongLong getLicenseKey(const gzString & licenseName=GZ_EMPTY_STRING);
00086
00087 GZ_BASE_EXPORT static gzULongLong createLicenseKey(const gzString & licenseName,gzULongLong machid ,gzUShort start,gzUShort stop,gzUShort features,const gzString &password);
00088
00089 GZ_BASE_EXPORT static gzLicenseCheckFeature getEncodedKey(gzULongLong &key,gzString licenseName=GZ_EMPTY_STRING);
00090
00091 GZ_BASE_EXPORT static gzULongLong getLicenseIdentifier(gzULongLong UID);
00092
00093 GZ_BASE_EXPORT static gzULongLong splashLicenseText(const gzString &header,const gzString &text,gzULongLong checkid=0);
00094
00095 GZ_BASE_EXPORT static gzString getLicenseInfoText();
00096
00097 GZ_BASE_EXPORT static gzLong getLicenseExpirationDays(const gzString &licenseName=GZ_EMPTY_STRING);
00098
00099 GZ_BASE_EXPORT static gzBool isPermanentLicense(const gzString &licenseName);
00100
00101 GZ_BASE_EXPORT static gzBool isPermanentLicenseSet(const gzString &licenseName);
00102
00103 GZ_BASE_EXPORT static gzVoid setPermanentLicense(const gzString &licenseName);
00104
00105 };
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 class gzLicenseManager : public gzService , public gzThread
00122 {
00123 public:
00124
00125 GZ_BASE_EXPORT gzLicenseManager();
00126
00127 GZ_BASE_EXPORT virtual ~gzLicenseManager();
00128
00129 GZ_BASE_EXPORT gzVoid process();
00130
00131 GZ_BASE_EXPORT gzVoid process(const gzArgumentParser &args,gzBool runAsService);
00132 };
00133
00134 enum gzFeatureInfo
00135 {
00136 GZ_FEATURE_OK,
00137 GZ_FEATURE_MISSING,
00138 GZ_FEATURE_NOT_ACTIVATED,
00139 GZ_FEATURE_APPLICATION_MASK_MISMATCH,
00140 GZ_FEATURE_USER_ROLE_MISMATCH,
00141 GZ_FEATURE_LICENSE_MISMATCH
00142 };
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158 class gzFeature : public gzThreadSafeReference
00159 {
00160 public:
00161
00162 GZ_BASE_EXPORT virtual ~gzFeature();
00163 GZ_BASE_EXPORT gzBool useDeepCopy() { return FALSE; }
00164
00165
00166
00167 GZ_PROPERTY_GET_EXPORT( gzString, Name, GZ_BASE_EXPORT);
00168 GZ_PROPERTY_GET_EXPORT( gzString, Description, GZ_BASE_EXPORT);
00169 GZ_PROPERTY_GET_EXPORT( gzULong, AppMask, GZ_BASE_EXPORT);
00170 GZ_PROPERTY_GET_EXPORT( gzULong, RoleMask, GZ_BASE_EXPORT);
00171 GZ_PROPERTY_GET_EXPORT( gzString, License, GZ_BASE_EXPORT);
00172 GZ_PROPERTY_GET_EXPORT( gzUShort, FeatureMask, GZ_BASE_EXPORT);
00173 GZ_PROPERTY_GET_EXPORT( gzBool, Activated, GZ_BASE_EXPORT);
00174
00175
00176
00177
00178 GZ_BASE_EXPORT static gzVoid setFeature( const gzString & name,
00179 const gzString & description,
00180 const gzULong appMask,
00181 const gzULong roleMask,
00182 const gzString & license=GZ_EMPTY_STRING,
00183 const gzUShort featureMask=0);
00184
00185 GZ_BASE_EXPORT static gzRefPointer<gzFeature> getFeature(const gzString &name );
00186
00187 GZ_BASE_EXPORT static gzVoid removeFeature( const gzString &name );
00188
00189 GZ_BASE_EXPORT static gzVoid clearFeatures();
00190
00191 GZ_BASE_EXPORT static gzVoid setActivated(const gzString &featureName , gzBool activated);
00192
00193 GZ_BASE_EXPORT static gzArray<gzRefPointer<gzFeature> > getFeatures();
00194
00195
00196
00197 GZ_BASE_EXPORT static gzVoid setApplicationMask(gzULong mask);
00198 GZ_BASE_EXPORT static gzULong getApplicationMask();
00199 GZ_BASE_EXPORT static gzVoid setSystemRoleMask(gzULong mask);
00200 GZ_BASE_EXPORT static gzULong getSystemRoleMask();
00201
00202
00203
00204 GZ_BASE_EXPORT static gzBool hasAllowedFeature(const gzString &featureName,gzFeatureInfo *info=NULL);
00205 GZ_BASE_EXPORT static gzLong getFeatureExpirationDays(const gzString &featureName);
00206
00207 GZ_BASE_EXPORT static gzString getFeatureSetIdentification();
00208 GZ_BASE_EXPORT static gzVoid setFeatureSetIdentification(const gzString &string);
00209
00210 GZ_BASE_EXPORT static gzBool readFeatures(const gzString &url,const gzString &elementName);
00211 GZ_BASE_EXPORT static gzBool writeFeatures(const gzString &url,const gzString &elementName,gzBool onlyActivated=TRUE,gzBool noDescriptions=FALSE);
00212
00213 GZ_BASE_EXPORT static gzBool readFeatures(gzSerializeAdapter *adapter);
00214 GZ_BASE_EXPORT static gzBool writeFeatures(gzSerializeAdapter *adapter,gzBool onlyActivated=TRUE,gzBool noDescriptions=FALSE);
00215
00216 private:
00217
00218 GZ_BASE_EXPORT gzFeature();
00219
00220 static gzRefDict<gzString,gzFeature> s_featureDict;
00221 static gzMutex s_featureDictLocker;
00222 static gzULong s_applicationMask;
00223 static gzULong s_roleMask;
00224 static gzString s_identification;
00225 };
00226
00227 #endif