diff --git a/EXE_General.cpp b/EXE_General.cpp index e9158e9..7be2bd7 100644 --- a/EXE_General.cpp +++ b/EXE_General.cpp @@ -189,6 +189,10 @@ ExeExit( void) s_pGenLog = nullptr ; } + // libero eventuale chiave di rete + if ( s_bNetHwKey) + CloseNetHwKey() ; + return true ; } @@ -256,11 +260,43 @@ ExeSetLockType( int nType) //----------------------------------------------------------------------------- bool -ExeSetNetHwKey( bool bNetHwKey) +ExeSetLockId( string sLockId) +{ + // divido in tre parti XXX-YYY-ZZZ + STRVECTOR vsTok ; + Tokenize( sLockId, "-", vsTok) ; + if ( vsTok.size() != 3) + return false ; + // se chiave software + if ( vsTok[0] != KEY_LOCK_HW_START) { + ExeSetNetHwKey( false) ; + return ( s_nKeyType != KEY_LOCK_TYPE_HW) ; + } + // se chiave locale + if (vsTok[1].front() != '1') { + ExeSetNetHwKey( false) ; + return true ; + } + // altrimenti chiave di rete + int nKey ; + if ( ! FromString( vsTok[1], nKey)) { + ExeSetNetHwKey( false) ; + return false ; + } + int nUserId = ( nKey % 10) ; + if ( nKey < 100110) + nUserId = 0 ; + ExeSetNetHwKey( true, nUserId) ; + return true ; +} + +//----------------------------------------------------------------------------- +bool +ExeSetNetHwKey( bool bNetHwKey, int nUserId) { s_bNetHwKey = bNetHwKey ; SetEGnNetHwKey( s_bNetHwKey) ; - return SetNetHwKey( bNetHwKey) ; + return SetNetHwKey( bNetHwKey, nUserId) ; } //-----------------------------------------------------------------------------