KeyGenerator 1.6c6 :

- possibilità di caricare file Kge
- generazione file lic.
This commit is contained in:
Dario Sassi
2015-03-30 06:46:52 +00:00
parent 5fc9544fe3
commit b356c23a45
7 changed files with 208 additions and 56 deletions
+93 -31
View File
@@ -21,6 +21,7 @@
#include "/EgtDev/Include/EGnStringUtils.h"
#include "/EgtDev/Include/EGnStringConverter.h"
#include "/EgtDev/Include/EgtIniFile.h"
#include "/EgtDev/Include/SELkKeyProc.h"
using namespace std ;
@@ -108,10 +109,12 @@ END_MESSAGE_MAP()
//----------------------------------------------------------------------------
// CKeyGeneratorDlg dialog
//----------------------------------------------------------------------------
CKeyGeneratorDlg::CKeyGeneratorDlg( CWnd* pParent)
CKeyGeneratorDlg::CKeyGeneratorDlg( const string& sFileToOpen, CWnd* pParent)
: CDialogEx( IDD_KEYGENERATOR_DIALOG)
{
m_hIcon = AfxGetApp()->LoadIcon( IDR_MAINFRAME) ;
// eventuale file da caricare all'avvio
m_sFileToOpen = sFileToOpen ;
}
//----------------------------------------------------------------------------
@@ -119,7 +122,8 @@ BEGIN_MESSAGE_MAP( CKeyGeneratorDlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED( ID_GENER, OnGenerate)
ON_BN_CLICKED( IDC_OPENFILE, OnOpenFile)
ON_BN_CLICKED( IDC_GENER, OnGenerate)
ON_WM_CLOSE()
END_MESSAGE_MAP()
@@ -129,7 +133,7 @@ CKeyGeneratorDlg::OnInitDialog( void)
{
CDialogEx::OnInitDialog() ;
// Add "About..." menu item to system menu.
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
@@ -147,26 +151,20 @@ CKeyGeneratorDlg::OnInitDialog( void)
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon( m_hIcon, TRUE) ; // Set big icon
SetIcon( m_hIcon, FALSE) ; // Set small icon
// Assegno ultimi valori inseriti
string sCust = GetPrivateProfileStringUtf8( "Data", "Customer", "", AfxGetApp()->m_pszProfileName) ;
GetDlgItem( IDC_CUSTOMER)->SetWindowTextW( stringtoW( sCust)) ;
string sMachId = GetPrivateProfileStringUtf8( "Data", "MachineId", "", AfxGetApp()->m_pszProfileName) ;
GetDlgItem( IDC_MACHID)->SetWindowTextW( stringtoW( sMachId)) ;
int nSelProd = GetPrivateProfileInt( "Data", "SelProduct", 0, AfxGetApp()->m_pszProfileName) ;
((CComboBox*)GetDlgItem( IDC_PROD))->SetCurSel( nSelProd) ;
int nSelVer = GetPrivateProfileInt( "Data", "SelVer", 0, AfxGetApp()->m_pszProfileName) ;
((CComboBox*)GetDlgItem( IDC_VER))->SetCurSel( nSelVer) ;
int nSelLev = GetPrivateProfileInt( "Data", "SelLev", 0, AfxGetApp()->m_pszProfileName) ;
((CComboBox*)GetDlgItem( IDC_LEV))->SetCurSel( nSelLev) ;
int nExpTime = GetPrivateProfileInt( "Data", "ExpTime", 0, AfxGetApp()->m_pszProfileName) ;
if ( nExpTime != 0)
((CDateTimeCtrl*)GetDlgItem( IDC_EXPIRATION))->SetTime( &CTime( nExpTime)) ;
// eventuale apertura o esecuzione di file all'avvio
if ( ! m_sFileToOpen.empty()) {
// leggo il file
if ( LoadFile( m_sFileToOpen.c_str()))
return TRUE ;
}
// Assegno ultimi valori inseriti
LoadFile( WtoA( AfxGetApp()->m_pszProfileName)) ;
return TRUE ; // return TRUE unless you set the focus to a control
}
@@ -228,6 +226,69 @@ CKeyGeneratorDlg::OnClose( void)
EndDialog( IDCANCEL) ;
}
//----------------------------------------------------------------------------
void
CKeyGeneratorDlg::OnOpenFile( void)
{
// visualizzo il dialogo di scelta file
CFileDialog dlg( TRUE, L"*.Kge", NULL,
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY|OFN_NOCHANGEDIR,
L"Key info EgalTech (*.Kge)|*.Kge||", NULL, 0, FALSE) ;
// imposto il direttorio iniziale
wstring wsDir = stringtoW( GetPrivateProfileStringUtf8( "General", "DataDir", "", AfxGetApp()->m_pszProfileName)) ;
if ( ! wsDir.empty())
dlg.m_ofn.lpstrInitialDir = wsDir.c_str() ;
// lancio il dialogo di scelta file
if ( dlg.DoModal() != IDOK)
return ;
// leggo il file
LoadFile( WtoA( dlg.GetPathName())) ;
}
//----------------------------------------------------------------------------
bool
CKeyGeneratorDlg::LoadFile( const char* szFile)
{
// verifico validità nome file
if ( szFile == nullptr || szFile[0] == '\0')
return false ;
// leggo indice ultimo salvataggio
int nLast = GetPrivateProfileInt( "Index", "Last", 0, szFile) ;
// carico i dati del file
string sSec = "Licence" ;
if ( nLast > 0)
sSec += ToString( nLast) ;
string sCust = GetPrivateProfileStringUtf8( sSec.c_str(), "Customer", "", szFile) ;
GetDlgItem( IDC_CUSTOMER)->SetWindowTextW( stringtoW( sCust)) ;
string sMachId = GetPrivateProfileStringUtf8( sSec.c_str(), "MachineId", "", szFile) ;
GetDlgItem( IDC_MACHID)->SetWindowTextW( stringtoW( sMachId)) ;
int nProd = GetPrivateProfileInt( sSec.c_str(), "Product", 0, szFile) ;
((CComboBox*)GetDlgItem( IDC_PROD))->SetCurSel( nProd - 1230) ;
int nVer = GetPrivateProfileInt( sSec.c_str(), "Ver", 0, szFile) ;
((CComboBox*)GetDlgItem( IDC_VER))->SetCurSel( nVer - 15) ;
int nLev = GetPrivateProfileInt( sSec.c_str(), "Lev", 0, szFile) ;
((CComboBox*)GetDlgItem( IDC_LEV))->SetCurSel( nLev - 1) ;
int nExpTime = GetPrivateProfileInt( sSec.c_str(), "ExpDays", 0, szFile) ;
if ( nExpTime != 0)
((CDateTimeCtrl*)GetDlgItem( IDC_EXPIRATION))->SetTime( &CTime( nExpTime * 24 * 3600)) ;
int nOpt1 = GetPrivateProfileInt( sSec.c_str(), "Opt1", 0, szFile) ;
for ( int i = IDC_CHECK01, j = 0 ; i <= IDC_CHECK16 ; ++ i, ++ j) {
if ( ( nOpt1 & ( 1 << j)) != 0)
((CButton*)GetDlgItem( i))->SetCheck( BST_CHECKED) ;
else
((CButton*)GetDlgItem( i))->SetCheck( BST_UNCHECKED) ;
}
int nOpt2 = GetPrivateProfileInt( sSec.c_str(), "Opt2", 0, szFile) ;
// check non ancora inseriti nel dialogo
int nOptExpTime = GetPrivateProfileInt( sSec.c_str(), "OptExpDays", 0, szFile) ;
if ( nOptExpTime != 0)
((CDateTimeCtrl*)GetDlgItem( IDC_OPT_EXPIR))->SetTime( &CTime( nOptExpTime * 24 * 3600)) ;
return true ;
}
//----------------------------------------------------------------------------
void
CKeyGeneratorDlg::OnGenerate( void)
@@ -242,7 +303,7 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Dati cliente vuoto o con caratteri vietati (\\/:*?\"<>|)") ;
return ;
}
WritePrivateProfileStringUtf8( "Data", "Customer", sCust.c_str(), AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileStringUtf8( "Licence", "Customer", sCust.c_str(), AfxGetApp()->m_pszProfileName) ;
// recupero l'identificativo macchina (tipo 2)
GetDlgItem( IDC_MACHID)->GetWindowTextW( wszTemp) ;
string sMachId = wstrztoA( wszTemp) ;
@@ -250,7 +311,7 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Id Macchina vuoto o errato") ;
return ;
}
WritePrivateProfileStringUtf8( "Data", "MachineId", sMachId.c_str(), AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileStringUtf8( "Licence", "MachineId", sMachId.c_str(), AfxGetApp()->m_pszProfileName) ;
// recupero il prodotto
GetDlgItem( IDC_PROD)->GetWindowTextW( wszTemp) ;
string sProd = wstrztoA( wszTemp) ;
@@ -258,9 +319,7 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Prodotto vuoto o errato") ;
return ;
}
int nSelProd = ((CComboBox*)GetDlgItem( IDC_PROD))->GetCurSel() ;
nSelProd = max( nSelProd, 0) ;
WritePrivateProfileInt( "Data", "SelProduct", nSelProd, AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileStringUtf8( "Licence", "Product", sProd.c_str(), AfxGetApp()->m_pszProfileName) ;
// recupero la versione
GetDlgItem( IDC_VER)->GetWindowTextW( wszTemp) ;
string sVer = wstrztoA( wszTemp) ;
@@ -268,9 +327,7 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Versione vuota o errata") ;
return ;
}
int nSelVer = ((CComboBox*)GetDlgItem( IDC_VER))->GetCurSel() ;
nSelVer = max( nSelVer, 0) ;
WritePrivateProfileInt( "Data", "SelVer", nSelVer, AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileStringUtf8( "Licence", "Ver", sVer.c_str(), AfxGetApp()->m_pszProfileName) ;
// recupero il livello
GetDlgItem( IDC_LEV)->GetWindowTextW( wszTemp) ;
string sLev = wstrztoA( wszTemp) ;
@@ -278,9 +335,7 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Livello vuoto o errato") ;
return ;
}
int nSelLev = ((CComboBox*)GetDlgItem( IDC_LEV))->GetCurSel() ;
nSelLev = max( nSelLev, 0) ;
WritePrivateProfileInt( "Data", "SelLev", nSelLev, AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileStringUtf8( "Licence", "Lev", sLev.c_str(), AfxGetApp()->m_pszProfileName) ;
// recupero la data di scadenza
int nDays ;
CTime tTime ;
@@ -292,7 +347,7 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Inserisci una Data valida") ;
return ;
}
WritePrivateProfileInt( "Data", "ExpTime", int( tTime.GetTime()), AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileInt( "Licence", "ExpDays", nDays, AfxGetApp()->m_pszProfileName) ;
// recupero le opzioni
unsigned int nOpt1 = 0 ;
for ( int i = IDC_CHECK01, j = 0 ; i <= IDC_CHECK16 ; ++ i, ++ j) {
@@ -304,6 +359,8 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Inserisci Opzioni valide") ;
return ;
}
WritePrivateProfileInt( "Licence", "Opt1", nOpt1, AfxGetApp()->m_pszProfileName) ;
WritePrivateProfileInt( "Licence", "Opt2", nOpt2, AfxGetApp()->m_pszProfileName) ;
// recupero la data di scadenza delle opzioni
int nOptDays ;
CTime tOptTime ;
@@ -315,6 +372,11 @@ CKeyGeneratorDlg::OnGenerate( void)
AfxMessageBox( L"Inserisci una Data valida per le opzioni") ;
return ;
}
WritePrivateProfileInt( "Licence", "OptExpDays", nOptDays, AfxGetApp()->m_pszProfileName) ;
// verifico la protezione
string sPKey = GetPrivateProfileStringUtf8( "General", "Key", "", AfxGetApp()->m_pszProfileName) ;
if ( VerifyKey( sPKey, 1230, 16, 10) != KEY_OK)
return ;
// calcolo la chiave
if ( ! mKey.CalcKey()) {
AfxMessageBox( L"Errore nel calcolo della chiave") ;