febee7ba17
- ricompilazione per chiavi di rete esposte su Internet - aggiunta funzione GetLockIdStringNetData.
167 lines
4.7 KiB
C++
167 lines
4.7 KiB
C++
//----------------------------------------------------------------------------
|
|
// EgalTech 2023-2023
|
|
//----------------------------------------------------------------------------
|
|
// File : GetKeyData.cpp Data : 29.05.23 Versione : 2.5e3
|
|
// Contenuto : Funzione che restituisce i dati della chiave di protezione.
|
|
//
|
|
//
|
|
//
|
|
// Modifiche : 29.05.23 DS Creazione modulo.
|
|
//
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
//--------------------------- Include ----------------------------------------
|
|
#include "stdafx.h"
|
|
#include "DllMain.h"
|
|
#include "/EgtDev/Include/EGnStringUtils.h"
|
|
#include "/EgtDev/Include/EGnGetKeyData.h"
|
|
#include "/EgtDev/Include/SELkKeyProc.h"
|
|
#include "/EgtDev/Include/SELkLockId.h"
|
|
|
|
using namespace std ;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
static int s_nKeyLevRet = - 1;
|
|
static int s_nKeyLev = 0 ;
|
|
static int s_nKeyExpDays = 0 ;
|
|
static int s_nKeyOptRet = - 1;
|
|
static int s_nKeyOpt1 = 0 ;
|
|
static int s_nKeyOpt2 = 0 ;
|
|
static int s_nKeyOptExpDays = 0 ;
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
SetEGnKeyLevel( int nRet, int nKeyLev, int nKeyExpDays)
|
|
{
|
|
s_nKeyLevRet = nRet ;
|
|
s_nKeyLev = nKeyLev ;
|
|
s_nKeyExpDays = nKeyExpDays ;
|
|
return true ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
int
|
|
GetEGnKeyLevel( int nProd, int nVer, int nLev, int& nKeyLev, int& nKeyExpDays)
|
|
{
|
|
// Chiave di rete
|
|
if ( GetEGnNetHwKey()) {
|
|
int nCurrDay = GetCurrDay() ;
|
|
int nMinDay = GetMinDay() ;
|
|
if ( nCurrDay < nMinDay)
|
|
return KEY_ERR_WRONG_TIME ;
|
|
}
|
|
// chiave Hw locale
|
|
else {
|
|
int nMyKeyLev, nMyKeyExpDays ;
|
|
int nRet = GetKeyLevel( GetEGnKey(), nProd, nVer, nLev, nMyKeyLev, nMyKeyExpDays) ;
|
|
s_nKeyLevRet = nRet ;
|
|
s_nKeyLev = nMyKeyLev ;
|
|
s_nKeyExpDays = nMyKeyExpDays ;
|
|
}
|
|
// restituzione dati
|
|
nKeyLev = s_nKeyLev ;
|
|
nKeyExpDays = s_nKeyExpDays ;
|
|
return s_nKeyLevRet ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
SetEGnKeyOptions( int nRet, int nKeyOpt1, int nKeyOpt2, int nKeyOptExpDays)
|
|
{
|
|
s_nKeyOptRet = nRet ;
|
|
s_nKeyOpt1 = nKeyOpt1 ;
|
|
s_nKeyOpt2 = nKeyOpt2 ;
|
|
s_nKeyOptExpDays = nKeyOptExpDays ;
|
|
return true ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
int
|
|
GetEGnKeyOptions( int nProd, int nVer, int nLev, unsigned int& nKeyOpt1, unsigned int& nKeyOpt2, int& nKeyOptExpDays)
|
|
{
|
|
// Chiave di rete
|
|
if ( GetEGnNetHwKey()) {
|
|
int nCurrDay = GetCurrDay() ;
|
|
int nMinDay = GetMinDay() ;
|
|
if ( nCurrDay < nMinDay)
|
|
return KEY_ERR_WRONG_TIME ;
|
|
}
|
|
// chiave Hw locale
|
|
else {
|
|
unsigned int nMyKeyOpt1, nMyKeyOpt2 ;
|
|
int nMyKeyOptExpDays ;
|
|
int nRet = GetKeyOptions( GetEGnKey(), nProd, nVer, nLev, nMyKeyOpt1, nMyKeyOpt2, nMyKeyOptExpDays) ;
|
|
s_nKeyOptRet = nRet ;
|
|
s_nKeyOpt1 = nMyKeyOpt1 ;
|
|
s_nKeyOpt2 = nMyKeyOpt2 ;
|
|
s_nKeyOptExpDays = nMyKeyOptExpDays ;
|
|
}
|
|
// restituzione dati
|
|
nKeyOpt1 = s_nKeyOpt1 ;
|
|
nKeyOpt2 = s_nKeyOpt2 ;
|
|
nKeyOptExpDays = s_nKeyOptExpDays ;
|
|
return s_nKeyOptRet ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
GetLockIdStringInfo( const string& sLockId, int& nKeyType, bool& bNetKey, int& nUserId)
|
|
{
|
|
// se chiave software
|
|
if ( sLockId.find( KEY_LOCK_HW_START) != 0) {
|
|
nKeyType = KEY_LOCK_TYPE_SW ;
|
|
bNetKey = false ;
|
|
nUserId = 0 ;
|
|
return true ;
|
|
}
|
|
|
|
// le chiavi hardware sono divise in tre parti XXX-NNN-WWW di cui la intermedia numerica
|
|
STRVECTOR vsTok ;
|
|
Tokenize( sLockId, "-", vsTok) ;
|
|
int nKey ;
|
|
if ( vsTok.size() != 3 || ! FromString( vsTok[1], nKey)) {
|
|
nKeyType = KEY_LOCK_TYPE_ANY ;
|
|
bNetKey = false ;
|
|
nUserId = 0 ;
|
|
return false ;
|
|
}
|
|
// se chiave locale
|
|
if ( vsTok[1].front() != '1') {
|
|
nKeyType = KEY_LOCK_TYPE_HW ;
|
|
bNetKey = false ;
|
|
nUserId = 0 ;
|
|
return true ;
|
|
}
|
|
// altrimenti chiave di rete
|
|
nKeyType = KEY_LOCK_TYPE_HW ;
|
|
bNetKey = true ;
|
|
nUserId = ( nKey % 10) ;
|
|
if ( nKey < 100110)
|
|
nUserId = 0 ;
|
|
return true ;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
bool
|
|
GetLockIdStringNetData( const string& sLockId, string& sAddrPort)
|
|
{
|
|
// default niente
|
|
sAddrPort = "" ;
|
|
|
|
// se chiave software
|
|
if ( sLockId.find( KEY_LOCK_HW_START) != 0)
|
|
return true ;
|
|
|
|
// le chiavi hardware possono avere una stringa con indirizzo e porta dopo il carattere '@'
|
|
STRVECTOR vsTok ;
|
|
Tokenize( sLockId, "@", vsTok) ;
|
|
if ( vsTok.size() == 2) {
|
|
sAddrPort = vsTok[1] ;
|
|
Trim( sAddrPort) ;
|
|
}
|
|
|
|
return true ;
|
|
}
|
|
|