Page 1 of 1
gestión de licencias concurrentes en red local
Posted:
Fri Jun 14, 2013 8:58 pm
by lucasdebeltran
Hola,
Como vamos a utilizar definitivamente MSVC, no vamos a poder seguir utilizando las mochilas de Safenet en modo red lan porque no tenemos los fuentes de la librería que hizo Ren e Flores.
Había pensado en controlarlo con la base de datos de los usuarios que está en el servidor , de modo que cuando se entra al programa al seleccionar el usuario y autentificarse, marco el campo lConectado con .T., y cuando sale del programa lo marco como .F., de modo que:
- No se pueden crear más usuarios que los adquiridos. (esto no plantea problemas)
- Un usuario no puede iniciar sesión más de 1 vez, porque se controla con lConectado.
El problema me surge cómo tratar las salidas anormales del programa, bien por cuelgue, corte de luz, etc, porque en el servidor lConectado seguirá en .T. y no le dejará volver a iniciar sesión.
Si permito liberar la sesión entonces nos van a engañar porque el usuario se logueará, y luego el Administrador le liberará la sesión, burlándose así el control de las licencias en red.
¿Se os ocurre por favor alguna idea?.
Muchísimas gracias.
Un saludo
Re: gestión de licencias concurrentes en red local
Posted:
Fri Jun 14, 2013 9:09 pm
by pablovidal
Mira a ver si esto te sirve !!!
- Code: Select all Expand view
#define SP_UPDCMD_CHANGE_DEVICE_TIME 0x21
Function SNGetHora( hHeader, aData )
Return( SFNTGetDeviceInfo( hHeader, @aData ) == 0 )
Function SNGetString( )
Return Nil
//-------------------------------------------------------------------------------------------------------
#pragma BEGINDUMP
#include <hbapi.h>
#include "SentinelKeys.h" /* Header file for the Sentinel Keys client library */
#include "SentinelKeysLicense.h" /* Header file for this License */
//-------------------------------------------------------------
// Obtiene la licencia
//-------------------------------------------------------------
HB_FUNC( SFNTGETLICENSE )
{
SP_HANDLE license ;
hb_retnl( SFNTGetLicense( DEVELOPERID, SOFTWARE_KEY, LICENSEID, 32, &license ) ) ;
hb_stornl( ( LONG ) license, 1 );
}
//-------------------------------------------------------------
// Lee un string desde la llave
//-------------------------------------------------------------
HB_FUNC( SFNTREADSTRING )
{
SP_BYTE value[ 256 ];
SP_DWORD length = hb_parnl( 4 );
hb_retnl( ( LONG ) SFNTReadString( ( SP_HANDLE ) hb_parnl( 1 ), ( SP_DWORD ) hb_parnl( 2 ), value, length ) );
hb_storc( value, 3 );
hb_xfree( value );
}
//-------------------------------------------------------------
// Lee la fecha y hora de la llave
//-------------------------------------------------------------
HB_FUNC( GETDATETIME )
{
SP_DEVICE_INFO deviceInfo;
hb_retnl( SFNTGetDeviceInfo( ( SP_HANDLE ) hb_parnl( 1 ), &deviceInfo ) ) ;
hb_stornl( ( LONG ) deviceInfo.timeValue.year , 2, 1 );
hb_stornl( ( LONG ) deviceInfo.timeValue.month , 2, 2 );
hb_stornl( ( LONG ) deviceInfo.timeValue.dayOfMonth, 2, 3 );
hb_stornl( ( LONG ) deviceInfo.timeValue.hour , 2, 4 );
hb_stornl( ( LONG ) deviceInfo.timeValue.minute , 2, 5 );
hb_stornl( ( LONG ) deviceInfo.timeValue.second , 2, 6 );
}
//-------------------------------------------------------------
// Lee un string desde la llave
//-------------------------------------------------------------
HB_FUNC( SFNTGETDEVICEINFO )
{
SPP_DEVICE_INFO deviceInfo;
hb_retnl( SFNTGetDeviceInfo( ( SP_HANDLE ) hb_parnl( 1 ), deviceInfo ) ) ;
hb_stornl( deviceInfo->timeValue.year , 2, 1 );
hb_stornl( deviceInfo->timeValue.month , 2, 2 );
hb_stornl( deviceInfo->timeValue.dayOfMonth, 2, 3 );
hb_stornl( deviceInfo->timeValue.hour , 2, 4 );
hb_stornl( deviceInfo->timeValue.minute , 2, 5 );
hb_stornl( deviceInfo->timeValue.second , 2, 6 );
}
#pragma ENDDUMP
Re: gestión de licencias concurrentes en red local
Posted:
Fri Jun 14, 2013 9:19 pm
by Marcelo Via Giglio
Hola,
puedes intentar algo asi:
ingresa el usuario -> bloqueas su registro de usuario (u otro registro por usuario)
el número de bloqueos es el número de concurrentes, si se sale del sistema creo que se quitaran los bloqueos por lo que no habria problemas por salidas por la ventana.
No lo he probado, pero me intriga si funciona, nos cuentas?
saludos
Marcelo
Re: gestión de licencias concurrentes en red local
Posted:
Fri Jun 14, 2013 10:09 pm
by benjiben143
Hola buenas tardes
yo lo haria asi
al entrar el usuario x
lo activaria como .t.
si entra el mismo usuario y esta la activacion como .t. , pues no darle entrada
si el programa se cae por x o y
lo manejeria asi
al entrar activarlo como .t., y en un campo agregarle la hora en la que entro
dentro del programa con un timer
cada x tiempo por ejemplo 1 minuto ponerle la hora en que esta accesando el usuario
si al momento de entra de vuelta el mismo usuario y checas la hora actual con la ultima hora del usuario y no tiene hora asiganda y pasa de mas de un minuto quiere decir que tubo una salida inesperada
y con eso le puedes dar acceso,,, y si no pasa del minuto quiere decir que ay esta el usuario todavia
saludos
Re: gestión de licencias concurrentes en red local
Posted:
Sat Jun 15, 2013 9:18 am
by lucasdebeltran
Muchas gracias, voy a seguir investigando.
Pablo, las funciones que necesito serían éstas:
- Code: Select all Expand view
function SPRORELEASELICENSE (...)
return nil
function SPROFORMATPACKET (...)
return nil
function SPROINITIALIZE (...)
return nil
function SPROFINDFIRSTUNIT(...)
return 0
function SPROSETHEARTBEAT(...)
return nil
function SPROREAD (a,b,c,d)
Muchas gracias a todos.
Saludos