licUtiles_V2017/LicenciasManager.cpp

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;
}
//************************************************************************