91 lines
2.6 KiB
C++
91 lines
2.6 KiB
C++
#include "StdAfx.h"
|
|
#include "LicenciasManager.h"
|
|
#include "licencia.h"
|
|
#define MODULO "LicenciasManager"
|
|
#include "ConexionClienteLicSrv.h"
|
|
#include "_log.h"
|
|
//************************************************************************
|
|
LicenciasManager::LicenciasManager(void)
|
|
{
|
|
}
|
|
//************************************************************************
|
|
LicenciasManager::~LicenciasManager(void)
|
|
{
|
|
fin();
|
|
}
|
|
//************************************************************************
|
|
Licencia* LicenciasManager::Get( Licencia* lic )
|
|
{
|
|
if(!dbProvider->fill(lic))
|
|
{
|
|
C_log::log(MODULO, "Sin licencia, clave: %s usuario: %s; producto: %s idm: %s",lic->clave, lic->nombre_user, lic->nombre_producto, lic->idm);
|
|
lic->id =-1;
|
|
return lic;
|
|
}
|
|
|
|
__int64 accesodb, accesoAct;
|
|
if(!dbProvider->setAcceso(lic,&accesodb, &accesoAct))
|
|
{
|
|
C_log::log(MODULO, "Sin al guardar acceso, clave: %s usuario: %s; producto: %s idm: %s",lic->clave, lic->nombre_user, lic->nombre_producto, lic->idm);
|
|
lic->id =-1;
|
|
return lic;
|
|
}
|
|
lic->ultimo_acceso = accesoAct;
|
|
if(lic->tipo == LU_LICENCIA_CADUCA)
|
|
{
|
|
if(lic->caducidad<=accesoAct)
|
|
{
|
|
C_log::log(MODULO, "Licencia caducada clave: %s usuario: %s; producto: %s idm: %s",lic->clave, lic->nombre_user, lic->nombre_producto, lic->idm);
|
|
lic->id =-1;
|
|
return lic;
|
|
}
|
|
if(lic->max_user>=0)
|
|
{
|
|
int nlic =dbProvider->licCount(lic);
|
|
if(nlic>lic->max_user)
|
|
{
|
|
C_log::log(MODULO, "Maximo numero de usuarios alcanzado en licencia clave: %s usuario: %s; producto: %s idm: %s",lic->clave, lic->nombre_user, lic->nombre_producto, lic->idm);
|
|
lic->id =-1;
|
|
return lic;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if(lic->instaId>=0)
|
|
{
|
|
if(!dbProvider->fillInstal(lic))
|
|
C_log::log(MODULO, "Error al rellenar instalador clave: %s usuario: %s; producto: %s idm: %s",lic->clave, lic->nombre_user, lic->nombre_producto, lic->idm);
|
|
}
|
|
return lic;
|
|
}
|
|
//************************************************************************
|
|
bool LicenciasManager::inicia( DBLicProvider* dbProv )
|
|
{
|
|
if(!dbProv)
|
|
return false;
|
|
dbProvider = dbProv;
|
|
sc.escucha = this;
|
|
char ip[128];
|
|
int port;
|
|
dbProv->getConf(ip, &port);
|
|
bool res =sc.liseningThread(port,ip)== TRUE;
|
|
if(res)
|
|
C_log::log(MODULO, "Escucha en ip: %s:%ld;",ip, port);
|
|
|
|
return res;
|
|
}
|
|
//************************************************************************
|
|
void LicenciasManager::fin()
|
|
{
|
|
sc.close();
|
|
}
|
|
//************************************************************************
|
|
Cproceso_cliente* LicenciasManager::crea_cliente( BOOL *pirate )
|
|
{
|
|
ConexionClienteLicSrv* cli = new ConexionClienteLicSrv();
|
|
cli->manager = this;
|
|
return cli;
|
|
}
|
|
|
|
//************************************************************************
|