ClientLic_2017/ClienteLicencias.cpp

152 lines
3.0 KiB
C++

#include "StdAfx.h"
#include "ClienteLicencias.h"
#include "DescargaVersion.h"
#include "DialogKey.h"
#include "ClientLic.h"
#include "DialogError.h"
#include "licencia.h"
#include "DescargadorFiles.h"
#include "utl.h"
#include "DialogProgreso.h"
#include "dir_manager.h"
#include "_log.h"
#include "LicCliente.h"
ClienteLicencias::ClienteLicencias(void)
{
dias_pregun = 5;
dirLic[0]=0;
dirTemp[0]=0;
}
ClienteLicencias::~ClienteLicencias(void)
{
}
void ClienteLicencias::muestaError( char* info, char* producto )
{
ClientLic_dll dll;
DialogError dialog;
dialog.errorSt = info;
dialog.produc = producto;
dialog.DoModal();
return;
}
bool ClienteLicencias::getClave( char* clave, char* producto )
{
ClientLic_dll dll;
DialogKey dialog;
strcpy(dialog.producto,producto);
dialog.DoModal();
strcpy(clave, dialog.clave);
return true;
}
bool ClienteLicencias::descargaInstalador( Licencia *lic )
{
ClientLic_dll dll;
if(!preguntarDescarga())
return true;
DescargaVersion dialog;
dialog.producActu = lic->nombre_producto;
dialog.verActu = lic->version_producto;
dialog.producNew = lic->nombre_producto;
dialog.verNew = lic->instaVersion;
dialog.desc = lic->instaDescrip;
dialog.DoModal();
if(dialog.descarga)
descargaVersion(lic);
return true;
}
void ClienteLicencias::descargaVersion( Licencia *lic)
{
DescargadorFiles cli;
StrArray buf;
Cutl::stringSplit(lic->instaServer,":",&buf);
cli.setServer(buf.get(0),
atoi(buf.get(1)), lic->instaKey,lic->instaUsu);
buf.n_i=buf.n_str =0;
buf.add(lic->instaPath);
DialogProgreso prog;
dprog = &prog;
char name[128];
sprintf(prog.dirProgram,"%s%s",dirTemp,Cdir_manager::nombre_archivo(lic->instaPath,name));
prog.espera = &espera_dlg;
prog.cancelar = &cancelaDescarga;
cancelaDescarga = false;
espera_dlg = true;
cli.iniciaDescarga(&buf,dirTemp,this);
prog.DoModal();
}
void ClienteLicencias::setStatus( double porcen )
{
porcen = porcen;
while(espera_dlg)
Sleep(10);
dprog->SendMessage(WMS_STATUS,(WPARAM) &porcen);
}
void ClienteLicencias::finTransfer( bool finalFeliz )
{
if(finalFeliz)
porcen = 100;
else
porcen = false;
while(espera_dlg)
Sleep(10);
dprog->SendMessage(WMS_STATUS,(WPARAM) &porcen);
dprog->SendMessage(WMS_FIN,(WPARAM) finalFeliz);
}
bool ClienteLicencias::cancelTransfer()
{
return cancelaDescarga;
}
bool ClienteLicencias::preguntarDescarga()
{
char str[256];
//revisa archivo---------------
bool res = true;
if(!dirLic[0])
strcpy(str, "acceso.bin");
else
sprintf(str,"%s%s",dirLic, "acceso.bin");
Cb_file f;
__int64 t = CTime::GetCurrentTime().GetTime();
if(f.abre(str,3))
{
__int64 tult=0;
f.lee(&tult, sizeof(__int64));
f.cierra();
res = (tult+(dias_pregun*86400))<t;
}
if(res && f.abre(str,2,true))
f.escribe(&t, sizeof(t));
return res;
}
bool ClienteLicencias::cargaLicencia()
{
LicCliente cli;
return cli.cargaLicencia(this);
}
bool ClienteLicencias::getPathLic( char* path, char* producto )
{
if(!dirLic[0])
{
path[0]=0;
return true;
}
sprintf(path,"%s%s.lic", dirLic, producto);
return true;
}