git-svn-id: svn://10.65.10.50/branches/R_10_00@22970 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			107 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			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(); } |