LicenseSpring C++ SDK
Easily add Software Licensing to your application
ExtendedOptions.h
Go to the documentation of this file.
1 #ifndef LS_EXTENDED_OPTIONS_H
2 #define LS_EXTENDED_OPTIONS_H
3 
4 #ifdef _MSC_VER
5 #pragma once
6 #pragma warning( push )
7 #pragma warning( disable : 4251 )
8 #endif
9 
10 #include <vector>
11 #include "APIDef.h"
12 #include "CryptoProvider.h"
13 #include "PODTypes.h"
14 
15 namespace LicenseSpring
16 {
20  {
21  public:
23  NetworkInfo() = default;
24 
26  ~NetworkInfo();
27 
30  void setIp( const std::string& ip );
31 
34  const std::string& ip() const;
35 
38  void setMac( const std::string& mac );
39 
42  const std::string& mac() const;
43 
46  void setHostName( const std::string& hostName );
47 
50  const std::string& hostName() const;
51 
52  private:
53  std::string m_localIP;
54  std::string m_hostName;
55  std::string m_macAddress;
56  };
57 
60  {
61  public:
62 
64  ProxySettings() = default;
65 
70  ProxySettings( const std::string& proxy, const std::string& user, const std::string& password );
71 
73  ~ProxySettings();
74 
85  bool fetchProxySettings( const std::string& serviceURL, const std::string& credentialTarget, bool throwExceptions = false );
86 
89  void setProxyUri( const std::string& uri );
90 
93  const std::string& getProxyUri() const;
94 
97  void setUser( const std::string& user );
98 
101  const std::string& getUser() const;
102 
105  void setPassword( const std::string& password );
106 
109  const std::string& getPassword() const;
110 
113  bool isValid() const;
114 
115  private:
116  std::string m_proxyUri; // e.g. "http://local.example.com:1080"
117  std::string m_user;
118  std::string m_password;
119  };
120 
123  {
124  public:
125 
127  ExtendedOptions();
128 
131  ExtendedOptions( const std::wstring& licenseFilePath );
132 
137  ExtendedOptions( const std::wstring& licenseFilePath,
138  const std::string& hardwareID,
139  const ProxySettings& proxy = ProxySettings() );
140 
142  ~ExtendedOptions();
143 
147  void setLicenseFilePath( const std::wstring& filePath );
148 
152  const std::wstring& getLicenseFilePath() const;
153 
156  void setHardwareID( const std::string& ID );
157 
160  const std::string& getHardwareID() const;
161 
164  DeviceIDAlgorithm getDeviceIdAlgorithm() const;
165 
169  void setDeviceIdAlgorithm( DeviceIDAlgorithm algorithm );
170 
175  void collectNetworkInfo( bool collect );
176 
179  bool isCollectNetworkInfoEnabled() const;
180 
187  void enableLogging( bool enable );
188 
191  bool isLoggingEnabled() const;
192 
197  void enableGuardFile( bool enable );
198 
201  bool isGuardFileEnabled() const;
202 
207  void enableVMDetection( bool enable );
208 
211  bool isVMDetectionEnabled() const;
212 
217  void enableSSLCheck( bool enable );
218 
221  bool isSSLCheckEnabled() const;
222 
229  void setUseNativeTLS( bool value );
230 
234  bool isNativeTLSEnabled() const;
235 
240  void enableLicenseCorruptionCheck( bool enable );
241 
245  bool isLicenseCorruptionCheckEnabled() const;
246 
251  void setGracePeriod( uint32_t value );
252 
255  uint32_t getGracePeriod() const;
256 
260  void setNetworkTimeout( long timeout );
261 
264  long getNetworkTimeout() const;
265 
269  void setConnectTimeout( long timeout );
270 
273  long getConnectTimeout() const;
274 
278  void setProxySettings( const ProxySettings& settings );
279 
282  const ProxySettings& getProxySettings() const;
283 
286  void overrideNetworkInfo( const NetworkInfo& networkInfo );
287 
290  const NetworkInfo& getNetworkInfo() const;
291 
295  void overrideCryptoProvider( CryptoProvider::ptr_t cryptoProvider );
296 
299  CryptoProvider::ptr_t getCryptoProvider();
300 
305  void setAlternateServiceURL( const std::string& URL );
306 
309  const std::string& getAlternateServiceURL() const;
310 
314  void setAlternateKey( const std::string& key );
315 
319  void setAlternateKey( const std::vector<int32_t>& key );
320 
325  void setAlternateKey( const int32_t* key, std::size_t size );
326 
329  const std::string& getAlternateKey() const;
330 
331  private:
332  std::wstring m_licenseFilePath;
333  std::string m_hardwareID;
334  std::string m_serviceURL;
335  std::string m_key;
336  bool m_collectNetworkInfo; // false by default
337  bool m_enableVMDetection; // false by default
338  bool m_enableGuardFile; // true by default
339  bool m_enableSSLCheck; // false by default
340  bool m_useNativeTLS; // see isNativeTLSEnabled
341  bool m_enableLicenseCorruptionCheck; // false by default
342  uint32_t m_gracePeriod; // in hours, default value is 48
343  long m_networkTimeout; // in seconds, default is 5 seconds
344  long m_connectTimeout; // in seconds, default is 7 seconds
345  ProxySettings m_proxySettings; // by default doesn't use any proxy
346  NetworkInfo m_networkInfo;
347  DeviceIDAlgorithm m_deviceIDAlgorithm;
348  CryptoProvider::ptr_t m_cryptoProvider;
349  };
350 
351 } // namespace LicenseSpring
352 
353 #ifdef _MSC_VER
354 #pragma warning( pop )
355 #endif
356 
357 #endif // LS_EXTENDED_OPTIONS_H
LicenseSpring::CryptoProvider::ptr_t
std::shared_ptr< CryptoProvider > ptr_t
Definition: CryptoProvider.h:22
LicenseSpring
Definition: BaseManager.h:16
DeviceIDAlgorithm
DeviceIDAlgorithm
Type of Device ID algorithm used by the SDK.
Definition: PODTypes.h:107
LicenseSpring::NetworkInfo
Class for storing a device's network information.
Definition: ExtendedOptions.h:19
APIDef.h
LS_API
#define LS_API
Macros that expands to dllexport, dllimport or nothing on non Windows platforms or in case of static ...
Definition: APIDef.h:22
PODTypes.h
CryptoProvider.h
LicenseSpring::ExtendedOptions
Class for storing useful settings that the Configuration object will inherit.
Definition: ExtendedOptions.h:122
LicenseSpring::ProxySettings
Class for storing settings when using a proxy server.
Definition: ExtendedOptions.h:59