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_eutron : prot = "Eutron"; 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;
|
||||
}
|
||||
|
||||
|
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:
|
||||
xvt_dongle_sl_crypt(data);
|
||||
break;
|
||||
case _dongle_aladdin:
|
||||
// xvt_dongle_al_crypt(data);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -367,6 +370,9 @@ bool TDongle::eutron_login(bool test_all_keys)
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDongle::aladdin_login(bool test_all_dongles)
|
||||
{ return false; }
|
||||
|
||||
bool TDongle::network_login(bool test_all_keys)
|
||||
{
|
||||
const char* appname = main_app().name();
|
||||
@ -417,7 +423,7 @@ int TDongle::can_try_server() const
|
||||
if (dongle.full())
|
||||
return ini_get_int(CONFIG_INSTALL, "Main", "Type") == 3 ? 3 : 1;
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool TDongle::login(bool test_all_keys)
|
||||
@ -437,18 +443,11 @@ bool TDongle::login(bool test_all_keys)
|
||||
}
|
||||
switch(hw)
|
||||
{
|
||||
case _dongle_hardlock:
|
||||
ok = hardlock_login(test_all_keys);
|
||||
break;
|
||||
case _dongle_eutron:
|
||||
ok = eutron_login(test_all_keys);
|
||||
break;
|
||||
case _dongle_network:
|
||||
ok = network_login(test_all_keys);
|
||||
break;
|
||||
default:
|
||||
ok = false;
|
||||
break;
|
||||
case _dongle_hardlock: ok = hardlock_login(test_all_keys); break;
|
||||
case _dongle_eutron : ok = eutron_login(test_all_keys); break;
|
||||
case _dongle_network : ok = network_login(test_all_keys); break;
|
||||
case _dongle_aladdin : ok = aladdin_login(test_all_keys); break;
|
||||
default : ok = false; break;
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
@ -460,6 +459,8 @@ bool TDongle::login(bool test_all_keys)
|
||||
ok = eutron_login(test_all_keys);
|
||||
if (!ok && hw != _dongle_hardlock)
|
||||
ok = hardlock_login(test_all_keys);
|
||||
if (!ok && hw != _dongle_aladdin)
|
||||
ok = aladdin_login(test_all_keys);
|
||||
}
|
||||
|
||||
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!)
|
||||
_max_users = 1;
|
||||
_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(); // Activate all modules
|
||||
_shown.reset();
|
||||
@ -494,6 +495,9 @@ bool TDongle::logout()
|
||||
case _dongle_network:
|
||||
rpc_UserLogout(main_app().name());
|
||||
break;
|
||||
case _dongle_aladdin:
|
||||
// xvt_dongle_al_logout();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -794,6 +798,11 @@ bool TDongle::burn_eutron()
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool TDongle::burn_aladdin()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TDongle::burn()
|
||||
{
|
||||
bool ok = local() && _type == _user_dongle;
|
||||
@ -804,6 +813,7 @@ bool TDongle::burn()
|
||||
{
|
||||
case _dongle_hardlock: ok = burn_hardlock(); break;
|
||||
case _dongle_eutron : ok = burn_eutron(); break;
|
||||
case _dongle_aladdin : ok = burn_aladdin(); break;
|
||||
default : break;
|
||||
}
|
||||
}
|
||||
@ -1034,6 +1044,26 @@ int Tdninst::parse_date(const TString& line, TString& key, TDate& datascad) cons
|
||||
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
|
||||
{
|
||||
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 dongle_ass = don.year_assist();
|
||||
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;
|
||||
}
|
||||
|
||||
@ -1108,7 +1138,7 @@ int Tdninst::test_cmdline(const TString& cmdline, bool key_must_exist, TString&
|
||||
return 7;
|
||||
}
|
||||
} else
|
||||
if (key == cmdline)
|
||||
if (compare_cmdline(cmdline, key))
|
||||
{
|
||||
bFound = true;
|
||||
if (scaduto)
|
||||
|
@ -9,7 +9,7 @@
|
||||
#include <strings.h>
|
||||
#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 };
|
||||
|
||||
class TDongle : public TObject
|
||||
@ -34,10 +34,12 @@ protected:
|
||||
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 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
|
||||
@ -106,6 +108,7 @@ class Tdninst : public TObject
|
||||
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; }
|
||||
|
@ -364,16 +364,40 @@ bool rpc_UserLogout(const char* appname)
|
||||
if (_connection)
|
||||
{
|
||||
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
|
||||
BoolCall(3); // Aspetta un po' in modo da permettere al server di esaminare la richiesta
|
||||
_client->RemoveConnection(_connection); // Chiude la connessione
|
||||
_connection = 0;
|
||||
}
|
||||
|
||||
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,
|
||||
TFilename& remote_file,
|
||||
const char* authorization)
|
||||
|
@ -13,7 +13,9 @@ bool rpc_DongleModules(TBit_array& ba);
|
||||
unsigned rpc_DongleNumber();
|
||||
unsigned rpc_DongleYear();
|
||||
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,
|
||||
const char* password, const char* application);
|
||||
bool rpc_UserLogout(const char* appname);
|
||||
|
@ -2422,7 +2422,6 @@ bool TReport::execute_dot(const TVariant& var)
|
||||
return TAlex_virtual_machine::execute_dot(var);
|
||||
}
|
||||
|
||||
|
||||
bool TReport::execute_prescript()
|
||||
{
|
||||
bool ok = true;
|
||||
|
@ -3,7 +3,6 @@
|
||||
#include <colors.h>
|
||||
#include <config.h>
|
||||
#include <defmask.h>
|
||||
#include <diction.h>
|
||||
#include <dongle.h>
|
||||
#include <execp.h>
|
||||
#include <modaut.h>
|
||||
@ -2655,7 +2654,7 @@ bool TReport_book::init(TReport& rep)
|
||||
const double colonne_pagina = pollici_pagina_x * cpi();
|
||||
_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;
|
||||
if (_logical_foot_pos <= 0)
|
||||
{
|
||||
@ -2678,6 +2677,16 @@ void TReport_book::print_subsections(int father)
|
||||
TRecordset* rex = rs->recordset();
|
||||
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();
|
||||
if (rex->items() > 0)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user