campo-sirio/fd/gtSSA.cpp
guy c954fdba0b Eliminata marcatura temporale che crea problemi agli antivirus
git-svn-id: svn://10.65.10.50/branches/R_10_00@22970 c028cbd2-c16b-5b4b-a496-9718f37d4682
2014-06-26 07:33:45 +00:00

107 lines
2.3 KiB
C++

#include "wxinc.h"
#include "gtDialog.h"
#include "gtSSA.h"
#include "../ssa/h/ssadll.h"
#include "../ssa/h/ssaerr.h"
#include <wx/filename.h>
class SSA_dongle : public wxObject
{
int m_nSerial;
wxString m_strUserID;
wxString m_strProduct, m_strModule;
protected:
const wxString& UserID();
int Login(const char* product, const char* module);
public:
int Login();
int Logout();
SSA_dongle() : m_nSerial(SSA_UTENTE_NON_LOGGATO) {}
} __SSA;
const wxString& SSA_dongle::UserID()
{
if (m_strUserID.IsEmpty())
{
const wxString strUser = ::wxGetUserId(); // User name
const wxString strHost = ::wxGetHostName(); // host name
const unsigned long sess = ::WTSGetActiveConsoleSessionId(); // Session ID the modern way!
m_strUserID.Printf("%s@%s:%lu", (const char*)strUser, (const char*)strHost, sess);
}
return m_strUserID;
}
int SSA_dongle::Login(const char* product, const char* module)
{
if (!m_strProduct.IsEmpty())
Logout();
int err = SSA_Login(UserID(), product);
if (err == 0)
{
m_strProduct = product;
m_nSerial = SSA_NumeroSerie(product);
wxString m = module; m.MakeLower();
err = SSA_ApriModulo(UserID(), m);
if (err != 0)
{
m.MakeUpper();
err = SSA_ApriModulo(UserID(), m);
}
#ifndef NDEBUG
if (err != 0)
{
gtWarning("Versione DEMO");
err = 0;
}
#endif
if (err == 0)
m_strModule = m;
}
return err;
}
int SSA_dongle::Login()
{
int err = Login("FATTPA", "fi");
if (err != 0 && wxFileName::FileExists("campo.ini"))
{
err = Login("CAMPO", "fd");
if (err != 0)
err = Login("CAMPO", "pa");
}
return err;
}
int SSA_dongle::Logout()
{
int err = 0;
if (!m_strModule.IsEmpty())
{
err = SSA_ChiudiModulo(UserID(), m_strModule);
if (err == 0)
m_strModule.Empty();
}
if (!m_strProduct.IsEmpty())
{
err = SSA_Logout(UserID(), m_strProduct);
if (err == 0)
{
m_nSerial = SSA_UTENTE_NON_LOGGATO;
m_strProduct.Empty();
m_strModule.Empty();
}
}
return err;
}
int SSA_Login() { return __SSA.Login(); }
int SSA_Logout() { return __SSA.Logout(); }