AV-SOFT
AVLock SIMPLE
Introducción
Que es AVLock SIMPLE?
Como adquirir AVLock SIMPLE?
Nuevo en v5.1
Usando AVLock SIMPLE
Como instalar AVLock SIMPLE?
Conceptos Básicos
Configuración
Usuarios e Instancias
Esquemas de protección
Ejemplos
Nuevo Estilo
Ejemplo 1
Ejemplo 2
Ejemplo 3
Ejemplo 4
Ejemplo 5
Request Key
UserData Based
Ejemplos PayPal IPN
Propiedades
Métodos
El Online License Manager (OLM)
Como's
La utilidad Configurator
La utilidad RegMonitor
La Utilidad KeyGen
La Utilidad CodeCheck
La Utilidad KeyCheck
Información adicional
Acuerdo de licencia
Historia de versiones_2

Ejemplo 5

Top  Previous  Next

 

Items

Lista de funciones usadas en este ejemplo

En este ejemplo aprenderá a

Esquemas de protección

Diagrama de flujo

Obtener el estado de registración

Valores por defecto de las propiedades

Breve práctica con el ejemplo 5

 

 

Lista de funciones usadas en este ejemplo:

Este ejemplo es un compendium de todas las funcionalidades del componente.  Es una adaptación del Demo1 de la versión anterior 3.2. Vea el siguiente cuadro con la lista de métodos utilizados en el ejemplo:

 

Features

Description

Basic OLM


  OnlineGetKeyB()

Start the trial period or restore it

  OnlineCheckDate()

Check Online the local system date

Advanced OLM


  OnlineStartTrial()

Start the trial period or restore it

  OnlineExtendTrial()

Extend the trial period

  OnlineRegisterKey()

Register a given Registration Key

  OnlineRenew()

Only if (Paid=Y). Generates and applies a new registration key according with the online OLM data

  OnLineSynch()

Synchronize the local registration data from the OLM

  OnLineStartSecondary()

Secondary Registration: Generates a secondary record into the OLM and link it to a existing primary record

  OnLineMovePrimary1()

Move Primary Step1: Must be executed from the old computer. Deactivates the primary record and all linked secondaries

  OnLineMovePrimary2()

Move Primary Step2: Must be executed from the new computer. Reactivates the primary record and all linked secondaries

  OnLineRestorePrimary()

Undo the action performed by the Step1. Only possible before to apply the Step2

  OnLineMoveSecondary1()

Move Secondary Step1: Must be executed from the old computer. Deactivates the secondary record

  OnLineMoveSecondary2()

Move Secondary Step2: Must be executed from the new computer. Reactivates the secondary record

  OnLineRestoreSecondary()

Undo the action performed by the Step1. Only possible before to apply the Step2

  OnLineRemoveReg()

Remove the local registration data and the associated records from the OLM

  OnlineFullSynch()

Used to automate all basic steps namely; Start trial, Extend trial, Renew licence and Synchronize

Other


  GetModule()

Read the local registration data for the given module

  RegisterKey()

Register Key Offline (local registration only)

  MakeTrial()

Start locally the trial period based in the current system date. Not recommended

 

 

 

En este ejemplo aprenderá a:

1. Guardar los datos del usuario (Nombre, Compañía y Email), localmente en su computador y en el OLM en su servidor web.

2. Manejar licencias primarias y secundarias.

3. Mover licencias de un computador a otro.

 

Esquemas de protección

Este ejemplo implementa los esquemas D y F

 

 

              Esquema D

layout03

                  Esquema F

layout07

 

 

 

Con el ejemplo Demo1 mostramos la mayoría de las funcionalidades que brinda AVLock SIMPLE para que Ud. pueda implementar todos los pasos necesarios durante todo el ciclo de vida de su aplicación. Aquí mostramos todas las posibilidades, pero Ud. utilice solo las que considere convenientes. Con este ejemplo pretendemos que Ud. comprenda como funciona el componente y los diferentes métodos y medidas de seguridad que puede aplicar para proteger su aplicación.

 

 

Y los implementa como se muestra en el siguiente diagrama de flujo:

 

Diagrama de flujo

 

demo08a01

procedure TForm1.FormCreate(Sender: TObject);

begin

 DoRegister(False);

end;

 

procedure TForm1.DoRegister(force:boolean);

var F : TRegForm;

begin

 F:=TRegForm.Create(nil); //Create the registration Form

 try

   if force or (keydata.DaysLeft < 15) then F.ShowModal;

 finally

   FreeAndNil(F);

 end;

 if (keydata.Status = Registered)

 then begin

   BtnRestricted.Enabled := (IsValueOn(keydata.Values,1,0));

   BtnSpecial.Enabled := (IsValueOn(keydata.Values,1,1));

 end;

 lappname.caption:= AVLockS51.AppName;

 lusername.caption:= AVLockS51.UserName;

 lappversion.caption:= AVLockS51.AppVersion;

 lcompany.caption:= AVLockS51.Company;

end;

 

procedure TForm1.FormShow(Sender: TObject);

begin

 showabout(true);

end;

 

 

Obtener el estado de registración

 

El método GetRegStatus de la unidad Regist permite obtener el estado actual de registración del componente. Abajo puede ver su código fuente. Lo primero que se hace es asignar las propiedades del componente, este tiene valores por omisión preestablecidos (puede verlos en una tabla abajo. Solo sería necesario asignar los valores que no coinciden con los preestablecidos, en nuestro caso solo cambiamos el valor del AppID por lo que podríamos haber asignado solo esa propiedad, igualmente, para que el ejemplo sea más completo también asignamos el resto de las propiedades.

 

Allí utilizamos el método GetKeyData de AVLock para leer los datos de registración locales y asignarlos al registro 'keydata' de tipo TKeyData  definido en las sección "public" de la unidad.

Después se asigna el cuadro de edición EdIcode con el Installcode obtenido de la máquina y seguidamente en una estructura case se prepara el mensaje del estado de registración a mostrarse en la parte superior del formulario de registración y se lo asigna al caption del label lstatus.

 

Este método GetRegStatus es llamado con el evento OnCreate y al final de cada sección de código que haga cambios en el estado de registración, como ser en BtnRegClick(), BtnRemoveClick(), BtnTrialClick() y BtnTrialOlmClick().

 

 

procedure TRegForm.GetRegStatus;

var s, regdata:string;

   recordexists:boolean;

begin

 //Set properties

 AVLock:= Form1.AVLockS51;

 with AVLock do begin

   EncryptionKey := 'abc123';

   AppID := 12341;

   RemovableDisk := False;

   AppName := 'MyApp';

   AppVersion := '1.0.0';

   WebHost := 'www.av-soft.com';

   InstancesCtrl := True;

   RegPath := Other;

   RegFolder := '';

   OlmPath := '/olm5';

   OlmBasicScript := 'basicolm.php';

   OlmAdvScript := 'advancedolm.php';

   V32Compat := False;

 end;

 AVLock.GetKeyData(0,keydata);

 EdIcode.Text := AVLock.InstallCode;

 EdName.Text := AVLock.UserName;

 EdCompany.Text := AVLock.Company;

 EdEmail.Text := AVLock.Email;

 s:='';

 case keydata.Status of

   Unregistered: s:='Not registered';

   Moved       : s:='Moved to another computer';

   Expired     : s:='Expired';

   Registered  : begin

     s:='Registered ';

     if keydata.Primary then s:=s+'as primary '

     else s:=s+'as secondary ';

     case keydata.KeyType of

       Trial     : s:=s+inttostr(keydata.Days)+' days trial - '+inttostr(keydata.DaysLeft)+' days left.';

       Temporal  : s:=s+inttostr(keydata.Days)+' days license - '+inttostr(keydata.DaysLeft)+' days left.';

       Permanent : s:=s+'(Permanent no time limit)';

     end;

   end;

 end;

 lstatus.caption:=s;

end;

 

 

 

 

KeyData es un registro de tipo TKeyData declarado en el componente (unit AVLockS4.pas) como sigue:

 

 TKeyData = record

   Status       : TRegStatus;

   KeyType      : TKeyType;

   Startdate    : TDate;

   EndDate      : TDate;

   Days         : word;

   DaysLeft     : word;

   Users        : byte;

   Instances    : byte;

   Primary      : boolean;

   DateBacked   : boolean;

   TooManyInstances : boolean;

   Values       : string;

   Key          : string;

   //For secondary registrations

   ICodeP       : string;

   InstallCodep : string;

 end;

 

 

Valores por defecto de las propiedades

 

El componente inicializa sus propiedades con los siguientes valores:

 

Propiedades

Valores por omision

Detalle

EncryptionKey

'abc123'

Clave de encriptación usada para las claves y demás datos de registración.

EncryptionKey2

'xyz321'

Clave de encriptación usada para encriptar los datos que se envían y reciben del sitio web.

AppID

12305

número identificador de la aplicación.

RemovableDisk

False

Hacer True para aplicaciones portables.

AppName

'MyApp'

Nombre de la aplicación.

AppVersion

'1.0.0'

Versión de la aplicación.

WebHost

'www.av-soft.com'

url del sitio web donde se instaló el OLM.

InstancesCtrl

False

Si es True se controla el número de instancias ejecutadas simultáneamente.

RegPath

CommonDocuments

Ubicación dentro del disco local donde se guardan los datos de registración.

RegFolder

'avlocks5'

Nombre de la carpeta donde se guardarán los datos de registración.

OlmPath

'/olm5'

Ubicación dentro del hosting donde se instaló el OLM.

OlmBasicScript

'basicolm.php'

Nombre del script administrador de claves del OLM básico.

OlmAdvScript

'advancedolm.php'

Nombre del script administrador de claves del OLM avanzado.

V32Compat

False

Compatibilidad con versiones anteriores 3.x. True para  actualizar una aplicación existente sin que sus usuarios registrados tengan que registrarse de nuevo. Se mantendrá el mismo Installcode que en la versión anterior.




 

Antes de utilizar el componente se deben asignar las propiedades de acuerdo a su propia configuración. Solo necesitará asignar aquellas que sean distintas a las que vienen asignadas por defecto, al menos debería asignar con valores distintos las siguientes propiedades: EncryptionKey, EncryptionKey2 y AppID, y si tiene instalado el OLM en su propio servidor también las propiedades WebHost, y OlmPath.

 

Breve práctica con el ejemplo 5

 

Desde el IDE de Delphi Abra el ejemplo 5 (\Examples\5)

 

demo08a02

 

 

Ejecutar la aplicación

Presione el botón runbutton o F9 para iniciar la ejecución del programa.  En unos instantes podrá ver el AboutBox mostrado como splash screen:

 

 

about01

 

 

Este cuadro es llamado desde el evento OnShow como se ve abajo:

 

 

showabout(True); //show the about box as splash screen

 

Esta función puede ser llamada con dos propósitos distintos 1) Como splash screen cuando la aplicación se inicia (este caso) y para llamarla desde un botón dentro de la aplicación para ver el estado actual de registración. Vea su aspecto en la siguiente imagen:

 

Esta función showabout() se encuentra dentro de la unidad unit1.pas, vea abajo su codigo fuente.

 

procedure TForm1.showabout(assplash:boolean);

var Ab : TFAbout;

begin

 Ab:=TFAbout.Create(nil);

 try

   Ab.LStatus.Caption := Status;

   Ab.LTooMany.Caption := TooMany;

   if reg0_ok then Ab.lreg.caption:='Registered to: '+lusername.Caption

   else Ab.lreg.caption:='';

   if assplash then Ab.tag:=0

   else Ab.tag:=1;

   Ab.showmodal;

 finally

   freeandnil(Ab);

 end;

end;

 

Muy simple, este solo crea el form Ab, asigna los valores de los labels LStatus,  LTooMany y LRreg, después

asigna la propiedad tag (0/1) según sea el parámetro assplash pasado, luego muestra el form como modal y finalmente libera la variable Ab.

 

La siguiente imagen muestra su aspecto en tiempo de diseño:

 

demo1about01

 

Esperando algunos segundos o presionando [Continue >>] pasamos a la pantalla principal de la aplicación.

 

demo1_01

 

Aquí podemos ver que dos de los botones no están habilitados;

[Restricted Features] y [Special Features]. Aquí, con una sola clave, utilizando el campo Values controlamos estos dos botones y también para controlar otras cosas. Para más información vea el tópico Claves de registración.

 

Visualice el  Formulario de datos de registración (Main Form > [Registration] >  [Show Registration Data])  abajo puede verlo:

 

demo1_04

 

Vemos que el estado es "Unregistered" por lo tanto, al no existir datos de registración el resto de los campos está marcado con "N/A".

 

A continuación cierre esta pantalla y haga click sobre el botón [Registration] y podrá ver el siguiente cuadro de diálogo:

 

demo1_05

 

Vemos el estado de registración y más abajo el "Install Code", un código único para cada computador calculado en base al hardware.

 

Si aún no está iniciado el periodo trial, con el botón [Start Trial] podemos iniciarlo. Hágalo y vea cómo se habilitan los botones en el formulario principal del programa:

 

demo1_06

 

Con el botón [About Box] podemos ver los cambios en el estado de registración:

 

about02

 

Con el botón [Show Registration Data] volvamos a los datos de registración:

 

demo1_02

 

Vemos que ahora existen datos de registración. Al presionar el botón [Start Trial] se realizaron los pasos necesarios para crear y registrar una clave de registración de tipo trial, tanto en el OLM (web page) como localmente.

 

El código fuente que se ejecutó al presionar el botón [Start Trial] es el siguiente:

 

procedure TRegForm.BtnTrialOlmClick(Sender: TObject);

var s:string;

begin

 if not testfields(False) then exit;

//assign username and company values to properties before register

 writeData;

//Start Trial from the OLM

 s:=AVLock.OnlineStartTrial(0,1,1,30,'390');

 if (s='00') then begin

   showmessage('Trial started or registration synchronized');

   GetRegStatus;

 end else showmessage(Error2Str(s));

end;

 

Para más información vea el apartado Como se inicia el periodo trial.

 

Los botones [Contact us] y [Send email] permiten al usuario comunicarse con Ud. a fin de concretar la operación de compra o cualquier otro tipo de consulta que este desee realizar. El "Install Code" es automáticamente incluido en los mensajes.

 

Una vez que el usuario realizó la compra y le ha enviado su "Install Code", Ud. está en condiciones de calcular la clave de registración que habilite el programa de acuerdo con lo pactado al realizar la compra.

 

Podemos utilizar la utilidad KeyGen o el RegMonitor para calcular la claves de registración que necesitamos. Probemos con la utilidad KeyGen.

Supongamos que su usuario pagó por una registración temporaria (usamos el módulo 0) para un usuario y dos instancias.

 

keygen02

 

 

demo1_06a

 

Entonces abramos la utilidad KeyGen.exe y entremos los valores correspondientes de AppID, Version, Encryption Key, Module, Users and Instances. Ingrese el InstallCode de la máquina del usuario, seleccione Temporary y asigne  Authorized days = 95. Podrá ver la clave generada en el campo Registration Key. En un caso real debería enviar esta clave al usuario para que la registre en su computador pero como se trata de una prueba Ud. mismo la va a registrar en el Demo1, así que copiemos y peguemos la clave en el formulario de registración (abajo)

 

demo1_08

 

Presionamos el botón [Register Online] y obtenemos la confirmación de que se ha registrado la clave.

 

demo1_09

 

Haciendo click nuevamente sobre el botón [About Box] vemos el cambio realizado en la registración:

 

about03

 

Con el botón [Show Registration Data] vea los nuevos datos de registración:

 

demo1_03

 

 

El código fuente del ejemplo 5 (Demo1)

 

Ud tiene el código fuente de este ejemplo Demo1. Está bien documentado y lo que hace cada Función/Procedimiento es bastante obvio, sin embargo si hay algo que no entiende o necesita ser explicado en mayor detalle por favor queremos que nos lo haga saber.