Files
EgtGeneral/GeyKeyData.cpp
Dario Sassi febee7ba17 EgtGeneral 2.5j1 :
- ricompilazione per chiavi di rete esposte su Internet
- aggiunta funzione GetLockIdStringNetData.
2023-10-09 10:47:54 +02:00

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