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
This commit is contained in:
parent
dcccd160b7
commit
a0d4f678d9
@ -317,7 +317,7 @@ TInfo_mask::TInfo_mask() : TProperty_sheet(TR("Informazioni"))
|
|||||||
case _dongle_hardlock: prot = "Hardlock"; break;
|
case _dongle_hardlock: prot = "Hardlock"; break;
|
||||||
case _dongle_eutron : prot = "Eutron"; break;
|
case _dongle_eutron : prot = "Eutron"; break;
|
||||||
case _dongle_network : prot = dongle().server_name(); break;
|
case _dongle_network : prot = dongle().server_name(); break;
|
||||||
case _dongle_hasp : prot = "Aladdin"; break;
|
case _dongle_aladdin : prot = "Aladdin"; break;
|
||||||
default : prot = TR("Nessuna"); break;
|
default : prot = TR("Nessuna"); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1188
include/codebase.c
1188
include/codebase.c
File diff suppressed because it is too large
Load Diff
@ -124,6 +124,9 @@ void TDongle::garble(word* data) const
|
|||||||
case _dongle_eutron:
|
case _dongle_eutron:
|
||||||
xvt_dongle_sl_crypt(data);
|
xvt_dongle_sl_crypt(data);
|
||||||
break;
|
break;
|
||||||
|
case _dongle_aladdin:
|
||||||
|
// xvt_dongle_al_crypt(data);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -367,6 +370,9 @@ bool TDongle::eutron_login(bool test_all_keys)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TDongle::aladdin_login(bool test_all_dongles)
|
||||||
|
{ return false; }
|
||||||
|
|
||||||
bool TDongle::network_login(bool test_all_keys)
|
bool TDongle::network_login(bool test_all_keys)
|
||||||
{
|
{
|
||||||
const char* appname = main_app().name();
|
const char* appname = main_app().name();
|
||||||
@ -417,7 +423,7 @@ int TDongle::can_try_server() const
|
|||||||
if (dongle.full())
|
if (dongle.full())
|
||||||
return ini_get_int(CONFIG_INSTALL, "Main", "Type") == 3 ? 3 : 1;
|
return ini_get_int(CONFIG_INSTALL, "Main", "Type") == 3 ? 3 : 1;
|
||||||
|
|
||||||
return false;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDongle::login(bool test_all_keys)
|
bool TDongle::login(bool test_all_keys)
|
||||||
@ -437,18 +443,11 @@ bool TDongle::login(bool test_all_keys)
|
|||||||
}
|
}
|
||||||
switch(hw)
|
switch(hw)
|
||||||
{
|
{
|
||||||
case _dongle_hardlock:
|
case _dongle_hardlock: ok = hardlock_login(test_all_keys); break;
|
||||||
ok = hardlock_login(test_all_keys);
|
case _dongle_eutron : ok = eutron_login(test_all_keys); break;
|
||||||
break;
|
case _dongle_network : ok = network_login(test_all_keys); break;
|
||||||
case _dongle_eutron:
|
case _dongle_aladdin : ok = aladdin_login(test_all_keys); break;
|
||||||
ok = eutron_login(test_all_keys);
|
default : ok = false; break;
|
||||||
break;
|
|
||||||
case _dongle_network:
|
|
||||||
ok = network_login(test_all_keys);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
ok = false;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
if (!ok)
|
if (!ok)
|
||||||
{
|
{
|
||||||
@ -460,6 +459,8 @@ bool TDongle::login(bool test_all_keys)
|
|||||||
ok = eutron_login(test_all_keys);
|
ok = eutron_login(test_all_keys);
|
||||||
if (!ok && hw != _dongle_hardlock)
|
if (!ok && hw != _dongle_hardlock)
|
||||||
ok = hardlock_login(test_all_keys);
|
ok = hardlock_login(test_all_keys);
|
||||||
|
if (!ok && hw != _dongle_aladdin)
|
||||||
|
ok = aladdin_login(test_all_keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ok)
|
if (ok)
|
||||||
@ -471,7 +472,7 @@ bool TDongle::login(bool test_all_keys)
|
|||||||
_serno = 0xFFFF; //numero di serie più alto possibile (65535 in exadecimals: non sarà mai raggiunto da chiavi clienti...magari!)
|
_serno = 0xFFFF; //numero di serie più alto possibile (65535 in exadecimals: non sarà mai raggiunto da chiavi clienti...magari!)
|
||||||
_max_users = 1;
|
_max_users = 1;
|
||||||
_last_update = TDate(TODAY);
|
_last_update = TDate(TODAY);
|
||||||
_year_assist = 3000; //anno di assistenza a 3000 per non avere problemi con le versioni nei vari anni
|
_year_assist = 3000; // anno di assistenza a 3000 per non avere problemi con le versioni nei vari anni
|
||||||
_module.set(ENDAUT); // Last module on key
|
_module.set(ENDAUT); // Last module on key
|
||||||
_module.set(); // Activate all modules
|
_module.set(); // Activate all modules
|
||||||
_shown.reset();
|
_shown.reset();
|
||||||
@ -494,6 +495,9 @@ bool TDongle::logout()
|
|||||||
case _dongle_network:
|
case _dongle_network:
|
||||||
rpc_UserLogout(main_app().name());
|
rpc_UserLogout(main_app().name());
|
||||||
break;
|
break;
|
||||||
|
case _dongle_aladdin:
|
||||||
|
// xvt_dongle_al_logout();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -794,6 +798,11 @@ bool TDongle::burn_eutron()
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TDongle::burn_aladdin()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool TDongle::burn()
|
bool TDongle::burn()
|
||||||
{
|
{
|
||||||
bool ok = local() && _type == _user_dongle;
|
bool ok = local() && _type == _user_dongle;
|
||||||
@ -804,6 +813,7 @@ bool TDongle::burn()
|
|||||||
{
|
{
|
||||||
case _dongle_hardlock: ok = burn_hardlock(); break;
|
case _dongle_hardlock: ok = burn_hardlock(); break;
|
||||||
case _dongle_eutron : ok = burn_eutron(); break;
|
case _dongle_eutron : ok = burn_eutron(); break;
|
||||||
|
case _dongle_aladdin : ok = burn_aladdin(); break;
|
||||||
default : break;
|
default : break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1034,6 +1044,26 @@ int Tdninst::parse_date(const TString& line, TString& key, TDate& datascad) cons
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Tdninst::compare_cmdline(const TString& cmdline, const TString& pattern) const
|
||||||
|
{
|
||||||
|
if (cmdline == pattern)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
bool is_pattern = false;
|
||||||
|
if (pattern.len() > 2)
|
||||||
|
{
|
||||||
|
for (int i = 2; pattern[i]; i++)
|
||||||
|
{
|
||||||
|
if (pattern[i]=='*' || pattern[i] == '?')
|
||||||
|
is_pattern = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (is_pattern)
|
||||||
|
return cmdline.match(pattern, true);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int Tdninst::test_cmdline(const TString& cmdline, bool key_must_exist, TString& msg) const
|
int Tdninst::test_cmdline(const TString& cmdline, bool key_must_exist, TString& msg) const
|
||||||
{
|
{
|
||||||
msg.cut(0);
|
msg.cut(0);
|
||||||
@ -1070,9 +1100,9 @@ int Tdninst::test_cmdline(const TString& cmdline, bool key_must_exist, TString&
|
|||||||
const int solar_year = oggi.year();
|
const int solar_year = oggi.year();
|
||||||
const int dongle_ass = don.year_assist();
|
const int dongle_ass = don.year_assist();
|
||||||
const int dongle_year = assistance_year2solar(dongle_ass);
|
const int dongle_year = assistance_year2solar(dongle_ass);
|
||||||
if (solar_year - dongle_year >= 2)
|
if (solar_year - dongle_year > 2)
|
||||||
{
|
{
|
||||||
msg << TR("Anno di assitenza non valido sulla chiave: ") << dongle_year;
|
msg << TR("Anno di assistenza non valido sulla chiave: ") << dongle_year;
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1108,7 +1138,7 @@ int Tdninst::test_cmdline(const TString& cmdline, bool key_must_exist, TString&
|
|||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
if (key == cmdline)
|
if (compare_cmdline(cmdline, key))
|
||||||
{
|
{
|
||||||
bFound = true;
|
bFound = true;
|
||||||
if (scaduto)
|
if (scaduto)
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network, _dongle_hasp };
|
enum TDongleHardware { _dongle_unknown, _dongle_hardlock, _dongle_eutron, _dongle_network, _dongle_aladdin };
|
||||||
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle, _aga_dongle };
|
enum TDongleType { _no_dongle, _user_dongle, _developer_dongle, _aga_dongle };
|
||||||
|
|
||||||
class TDongle : public TObject
|
class TDongle : public TObject
|
||||||
@ -35,9 +35,11 @@ protected:
|
|||||||
bool hardlock_login(bool test_all_dongles);
|
bool hardlock_login(bool test_all_dongles);
|
||||||
bool eutron_login(bool test_all_dongles);
|
bool eutron_login(bool test_all_dongles);
|
||||||
bool network_login(bool test_all_dongles);
|
bool network_login(bool test_all_dongles);
|
||||||
|
bool aladdin_login(bool test_all_dongles);
|
||||||
|
|
||||||
bool burn_hardlock();
|
bool burn_hardlock();
|
||||||
bool burn_eutron();
|
bool burn_eutron();
|
||||||
|
bool burn_aladdin();
|
||||||
|
|
||||||
int can_try_server() const;
|
int can_try_server() const;
|
||||||
const TString_array& info() const; // Array di coppie modulo|descrizione
|
const TString_array& info() const; // Array di coppie modulo|descrizione
|
||||||
@ -106,6 +108,7 @@ class Tdninst : public TObject
|
|||||||
protected:
|
protected:
|
||||||
int assistance_year2solar(int ay) const;
|
int assistance_year2solar(int ay) const;
|
||||||
int parse_date(const TString& line, TString& key, TDate& d) const;
|
int parse_date(const TString& line, TString& key, TDate& d) const;
|
||||||
|
bool compare_cmdline(const TString& cmdline, const TString& pattern) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int assist_year() const { return _year_assist; }
|
int assist_year() const { return _year_assist; }
|
||||||
|
@ -364,16 +364,40 @@ bool rpc_UserLogout(const char* appname)
|
|||||||
if (_connection)
|
if (_connection)
|
||||||
{
|
{
|
||||||
const int session = xvt_sys_get_session_id();
|
const int session = xvt_sys_get_session_id();
|
||||||
_rpc_call.format("UserLogout(%s, %d, %s)", (const char*)user(), session, appname);
|
_rpc_call.format("UserLogout(%s,%d,%s)", (const char*)user(), session, appname);
|
||||||
//rpc_Call(_rpc_call); // Richiede il logout senza attendere la risposta
|
//rpc_Call(_rpc_call); // Richiede il logout senza attendere la risposta
|
||||||
BoolCall(3); // Aspetta un po' in modo da permettere al server di esaminare la richiesta
|
BoolCall(3); // Aspetta un po' in modo da permettere al server di esaminare la richiesta
|
||||||
_client->RemoveConnection(_connection); // Chiude la connessione
|
_client->RemoveConnection(_connection); // Chiude la connessione
|
||||||
_connection = 0;
|
_connection = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool rpc_DongleModuleActivate(word mod, bool on)
|
||||||
|
{
|
||||||
|
TString16 password;
|
||||||
|
create_password(password);
|
||||||
|
_rpc_call.format("DongleModuleActivate(%d,%d,%s)", mod, on, (const char*)password);
|
||||||
|
return BoolCall();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool rpc_DongleUsersActivate(word users)
|
||||||
|
{
|
||||||
|
TString16 password;
|
||||||
|
create_password(password);
|
||||||
|
_rpc_call.format("DongleUsersActivate(%d,%s)", users, (const char*)password);
|
||||||
|
return BoolCall();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool rpc_DongleYearActivate(word year)
|
||||||
|
{
|
||||||
|
TString16 password;
|
||||||
|
create_password(password);
|
||||||
|
_rpc_call.format("DongleYearActivate(%d,%s)", year, (const char*)password);
|
||||||
|
return BoolCall();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool http_isredirected_server(TString& server,
|
bool http_isredirected_server(TString& server,
|
||||||
TFilename& remote_file,
|
TFilename& remote_file,
|
||||||
const char* authorization)
|
const char* authorization)
|
||||||
|
@ -13,7 +13,9 @@ bool rpc_DongleModules(TBit_array& ba);
|
|||||||
unsigned rpc_DongleNumber();
|
unsigned rpc_DongleNumber();
|
||||||
unsigned rpc_DongleYear();
|
unsigned rpc_DongleYear();
|
||||||
bool rpc_DongleInfo(word& number, word& year, TBit_array& ba);
|
bool rpc_DongleInfo(word& number, word& year, TBit_array& ba);
|
||||||
|
bool rpc_DongleYearActivate(word year);
|
||||||
|
bool rpc_DongleUsersActivate(word users);
|
||||||
|
bool rpc_DongleModuleActivate(word mod, bool on);
|
||||||
bool rpc_UserLogin(const char* server, const char* user,
|
bool rpc_UserLogin(const char* server, const char* user,
|
||||||
const char* password, const char* application);
|
const char* password, const char* application);
|
||||||
bool rpc_UserLogout(const char* appname);
|
bool rpc_UserLogout(const char* appname);
|
||||||
|
@ -2422,7 +2422,6 @@ bool TReport::execute_dot(const TVariant& var)
|
|||||||
return TAlex_virtual_machine::execute_dot(var);
|
return TAlex_virtual_machine::execute_dot(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool TReport::execute_prescript()
|
bool TReport::execute_prescript()
|
||||||
{
|
{
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
#include <colors.h>
|
#include <colors.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <defmask.h>
|
#include <defmask.h>
|
||||||
#include <diction.h>
|
|
||||||
#include <dongle.h>
|
#include <dongle.h>
|
||||||
#include <execp.h>
|
#include <execp.h>
|
||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
@ -2655,7 +2654,7 @@ bool TReport_book::init(TReport& rep)
|
|||||||
const double colonne_pagina = pollici_pagina_x * cpi();
|
const double colonne_pagina = pollici_pagina_x * cpi();
|
||||||
_logical_page_width = long(colonne_pagina*100.0);
|
_logical_page_width = long(colonne_pagina*100.0);
|
||||||
|
|
||||||
const TReport_section& footer = _report->section('F',0);
|
const TReport_section& footer = _report->section('F', 0);
|
||||||
_logical_foot_pos = footer.pos().y;
|
_logical_foot_pos = footer.pos().y;
|
||||||
if (_logical_foot_pos <= 0)
|
if (_logical_foot_pos <= 0)
|
||||||
{
|
{
|
||||||
@ -2678,6 +2677,16 @@ void TReport_book::print_subsections(int father)
|
|||||||
TRecordset* rex = rs->recordset();
|
TRecordset* rex = rs->recordset();
|
||||||
if (rex != NULL)
|
if (rex != NULL)
|
||||||
{
|
{
|
||||||
|
const TString_array& variables = rex->variables();
|
||||||
|
FOR_EACH_ARRAY_ROW(variables, v, name) if (!name->starts_with("#PARENT"))
|
||||||
|
{
|
||||||
|
const TReport_field* fld = _report->field(*name);
|
||||||
|
if (fld != NULL)
|
||||||
|
{
|
||||||
|
const TVariant& val = fld->get();
|
||||||
|
rex->set_var(*name, val);
|
||||||
|
}
|
||||||
|
}
|
||||||
rex->requery();
|
rex->requery();
|
||||||
if (rex->items() > 0)
|
if (rex->items() > 0)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user