campo-sirio/include/dongle.h
guy a0d4f678d9 Patch level :
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Aggiunta chiamata rpc_DongleYearActivate per permettere l'aggiornamento automatico dell'assistenza sul server di chiavi.
Aggiunta possibilità di riferirsri ai campi del report nelle query delle sottosezioni


git-svn-id: svn://10.65.10.50/branches/R_10_00@21358 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-12-23 09:24:46 +00:00

126 lines
4.0 KiB
C++
Executable File

#ifndef __DONGLE_H
#define __DONGLE_H
#ifndef __DATE_H
#include <date.h>
#endif
#ifndef __STRINGS_H
#include <strings.h>
#endif
enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network, _dongle_aladdin };
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle, _aga_dongle };
class TDongle : public TObject
{
TDongleHardware _hardware;
TDongleType _type;
TString _admin, _admpwd, _reseller, _product, _shortname;
int _OEM;
word _serno, _max_users, _year_assist;
word _eprom[64];
TDate _last_update;
TBit_array _module;
TBit_array _shown;
bool _dirty;
TString_array _info; // Informazioni sui moduli
protected:
bool already_programmed() const;
void set_developer_permissions();
bool hardlock_login(bool test_all_dongles);
bool eutron_login(bool test_all_dongles);
bool network_login(bool test_all_dongles);
bool aladdin_login(bool test_all_dongles);
bool burn_hardlock();
bool burn_eutron();
bool burn_aladdin();
int can_try_server() const;
const TString_array& info() const; // Array di coppie modulo|descrizione
public: // TObject
virtual bool ok() const
{ return _hardware != _dongle_unknown && _type != _no_dongle && _serno != 0xFFFF; }
public:
bool login(bool test_all_dongles = false);
bool logout();
word number() const { return _serno; }
word max_users() const { return _max_users; }
word year_assist() const { return _year_assist; }
void garble(word* data) const;
// Solo per un po' di tempo, poi diverranno protected (servono a ba1500 old style)
bool read_words(word reg, word len, word *data) const;
bool write_words(word reg, word len, word *data) const;
TDongleType type() const { return _type; }
bool active(word module) const;
bool activate(word module, bool on = true);
void deactivate(word module) { activate(module, false); }
void set_max_users(word u) { _max_users = u; _dirty = true; }
void set_year_assist(word y) { _year_assist = y; _dirty = true; }
const TDate& last_update() const { return _last_update; }
bool dirty() const { return _dirty; }
bool burn();
TDongleHardware hardware() const { return _hardware; }
bool local() const { return _hardware == _dongle_hardlock || _hardware == _dongle_eutron; }
bool network() const { return _hardware == _dongle_network; }
const TString& administrator(TString* pwd = NULL) const;
int oem() const;
const TString& reseller() const;
const TString& product() const;
const TString& short_name() const;
const TString& server_name() const;
word module_name2code(const char* module) const; // Converte un nome di due lettere in numero
const TString& module_code2name(word module) const; // ... e viceversa
const TString& module_code2desc(word module) const; // Descrizione estesa del modulo
const TString& module_name2desc(const char* mod) const; // Converte un nome di due lettere in descrizione
bool shown(word module) const; // Stabilisce se un modulo e' visibile in installazione
bool hidden(word module) const { return !shown(module); } // Modulo invisibile
bool demo() const;
TDongle();
virtual ~TDongle();
};
///////////////////////////////////////////////////////////////////////////////
// Tdninst
///////////////////////////////////////////////////////////////////////////////
class Tdninst : public TObject
{
int _year_assist;
protected:
int assistance_year2solar(int ay) const;
int parse_date(const TString& line, TString& key, TDate& d) const;
bool compare_cmdline(const TString& cmdline, const TString& pattern) const;
public:
int assist_year() const { return _year_assist; }
int solar_year() const { return assistance_year2solar(_year_assist); }
int test_cmdline(const TString& cmdline, bool key_must_exist, TString& msg) const;
bool can_I_run(const bool is_personal_program = false) const;
bool find_killed(TToken_string& kill_list) const;
Tdninst();
};
TDongle& dongle();
bool destroy_dongle();
#endif