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