gestión de licencias concurrentes en red local

gestión de licencias concurrentes en red local

Postby lucasdebeltran » Fri Jun 14, 2013 8:58 pm

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
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: gestión de licencias concurrentes en red local

Postby pablovidal » Fri Jun 14, 2013 9:09 pm

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
Saludos,

Pablo Alberto Vidal
/*
------------------------------------------------------
Harbour 3.2.0, Fivewin 17.02, BCC7
------------------------------------------------------
*/
User avatar
pablovidal
 
Posts: 401
Joined: Thu Oct 06, 2005 10:15 pm
Location: Republica Dominicana

Re: gestión de licencias concurrentes en red local

Postby Marcelo Via Giglio » Fri Jun 14, 2013 9:19 pm

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
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: gestión de licencias concurrentes en red local

Postby benjiben143 » Fri Jun 14, 2013 10:09 pm

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
Benjamin Casarrubias Moreno
Cd. Obregon, Sonora, Mexico
chino72vale@hotmail.com
Fivewin 16.05, Harbour 3.2, xharbour 1.2.1, Fivelinux, visual estudio 2013
benjiben143
 
Posts: 114
Joined: Wed Mar 11, 2009 7:32 pm
Location: Obregon, Sonora, Mexico

Re: gestión de licencias concurrentes en red local

Postby lucasdebeltran » Sat Jun 15, 2013 9:18 am

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
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 32 guests