campo-sirio/ba/ba1501.cpp

106 lines
2.8 KiB
C++
Executable File
Raw Blame History

#include <applicat.h>
#include <config.h>
#include <dongle.h>
#include <isamrpc.h>
#include <modaut.h>
#include <scanner.h>
#include <utility.h>
#include "ba1500.h"
const char* split_ass(const int ass_year)
{
int year = ass_year, number = 0;
if (ass_year >= 2009)
{
year = (ass_year/1000)*1000 + (ass_year%1000)/10;
number = ass_year%10;
}
TString& tmp = get_tmp_string();
tmp << year;
if (number > 0)
tmp << '/' << number;
return tmp;
}
HIDDEN bool show_error(const char* str)
{
int app_year, dum1, dum2, dum3;
TApplication::get_version_info(app_year, dum1, dum2, dum3);
TString msg;
msg << TR("Impossibile aggiornare automaticamente l'assistenza ")
<< split_ass(app_year) << ":\n" << str << '.';
return error_box(msg);
}
// Copia il file dninst.zip dal CD/server alla cartella corrente
bool update_dninst(bool force)
{
//legge dal diskpath di install.ini la directory da cui aggiornarsi;se il dninst.zip di tale..
//..directory e' piu' nuovo di quello in locale -> lo copia in locale
const TFilename local_name = "setup/dninst.zip";
TFilename remote_name = ini_get_string(CONFIG_GENERAL, "Main", "DiskPath");
remote_name.add(local_name);
if (remote_name.exist())
{
if (!force)
{
force = !local_name.exist();
if (!force)
{
const long local_date = xvt_fsys_file_attr(local_name, XVT_FILE_ATTR_MTIME);
const long remote_date = xvt_fsys_file_attr(remote_name, XVT_FILE_ATTR_MTIME);
force = remote_date > local_date;
}
}
if (force)
{
make_dir(local_name.path());
fcopy(remote_name, local_name);
}
}
return true;
}
bool update_assistance_year()
{
TDongle& donkey = dongle();
const bool remote = donkey.network();
update_dninst(true);
Tdninst dninst;
const int dninst_year = dninst.assist_year();
if (dninst_year > 0)
{
//se l'anno di assistenza della versione (dninst.zip) e' piu' grande di quello attualmente registrato sulla...
//...chiavetta controlla se il serialnumber della chiavetta e' presente nella lista dei codici...
//...validi dentro il dninst.zip
if (dninst_year > donkey.year_assist())
{
// Cerca il numero di serie
if (dninst.find_serno())
{
donkey.set_year_assist(dninst_year);
return true;
} //if(sn==serno...
else
{
//Non e' riuscito a trovare la chiavetta nell'elenco, non puo' aggiornare automaticamente
show_error(TR("Il numero di serie di questa postazione non <20> presente sul database"));
}
}
else
{
// Se l'anno di assistenza sulla chiave e' maggiore o uguale a quello sul dninst
// la chiave ha gia' l'assistenza corretta abilitata e puo' proseguire l'aggiornamento
return true;
}
}
else
show_error(TR("Il database dei numeri di serie non <20> accessibile"));
return false;
}