Gestión dinámica de cuentas de gestión de licencias de juegos: Scripting

La gestión dinámica de cuentas de acceso a licencias de juegos, es de propósito general, no está enfocada a un único “management client” (ejemplo: Steam client), sino que está pensado para todos los “Management clients”, los actuales (ORIGIN y BATTLENET) y los que vengan en el futuro, aún sin inventar). Es por ello que la plataforma FlulpyCrea soporta Scripting, para que no tenga que modificarse los EXEs por cualquier cambio en mgmt-clients actuales o futuros.

Invocación de la configuración

IMPORTANTE: La configuración de un “Mgmt Client” (ejemplo: plataforma Steam) se invoca únicamente cuando ambas variables especiales están presentes al mismo tiempo, las definidas como la de USUARIO y la de PASSWORD, sin importar si son funcionales o no.

Ejemplo: La configuración típica de un juego que usa la plataforma steam, se tipifica por ejecutar el cliente steam:

………Steam.exe -login %%STEAMUSER%% %%STEAMPASS%% -applaunch ###

En ese caso, las variables especiales inventadas son funcionales.

Pero en Origin, que no acepta logueo por línea de comandos, igual se deben colocar aunque no sean funcionales, para que actúe la script de origin.

…….Origin.exe %%ORIGINUSER%% %%ORIGINPASS%%

Al usar las dos variables inventadas, se invocan las scripts para la plataforma Origin, no importa que luego la script no use esa configuración registrada en el GameRegister.

Diferentes scripts según evento/necesidad/situación

platform

  • Script CHANGE se ejecuta solo cuando el servidor necesita solamente cambiar el juego sin cambiar la cuenta de acceso del mgmt-client, esto es muy común porque el servidor tratará siempre de preferenciar la cuenta previamente en uso en cada PC a la hora de buscar ejecutar el juego pedido.
    Si CHANGE está presente ya no se enviará el comando shell tradicional para ejecutar el juego. Deberá ser la script quien lo ordene.
  • Script SHUTDOWN se ejecuta primero cuando el servidor necesita cambiar el juego y también cambiar la cuenta de acceso del mgmt-client, esto es porque el juego deseado se encuentra accesible solamente desde otra cuenta.
  • Script FIRST se ejecuta luego de shutdown cuando se cambia una cuenta de acceso en el mgmt-client, y también se ejecuta cuando es la primera vez que se pide un juego.
    Si la script FIRST está presente
    ya no se enviará el comando shell tradicional para ejecutar el juego. Deberá ser la script quien lo ordene.

En resumen:

First <—- Primera ejecución de juego.

Change <—– Cambia solo juego.

Shutdown + First <—— Cambia cuenta de acceso y juego.

Manejo de errores

Si cualquiera de las scripts devuelve un error, toda la cadena de comandos es desechada y el juego no se ejecuta.

Hay comandos que devuelven un error a propósito si su testeo falla. Ejemplo: Si el hash de un archivo no es válido, devuelve error y detiene toda la script, impidiendo que el USER/PASS sea transmitido.

Manejo de variables especiales

Todas las variables deben estar encerradas entre doble porcentaje, de apertura y cierre.

  • %%TARGETDRIVE%% = letra de unidad y el caracter dos puntintos (formato Windows).
  • %%TARGETPATH%% = letra de unidad + ruta de acceso, incluye caracter \ final.
  • %%TARGETPATHEXE%% = letra de unidad + ruta de acceso + nombre de archivo, todo encerrado entre comillas.
  • %%TARGETPATHEXEPARAMS%% = letra de unidad + ruta de acceso + nombre de archivo, todo encerrado entre comillas. Y luego los parámetros de ejecución.
  • %%TARGETPARAMS%% = Únicamente los parámetros de ejecución.
  • %%<variable de plataforma USER>%% = La variable que definió en la configuración como nombre de usuario.
  • %%<variable de plataforma PASS>%% = La variable que definió en la configuración como password.
  • %%<variables estáticas de dispositivo>%% = Todas las variables de dispositivos definidas en el modo estático de manejo de cuentas.
  • %%<variables estáticas globales%% = Todas las variables globales definidas en el modo estático de manejo de cuentas.

Separación de comandos

Cada comando en la script se encierra entre doble-corchetes {{ se separa por un }}.

Ejemplo:

{{comando1}}{{comando2}}{{comando3}}

El nombre del comando debe estar luego de los corchetes de apertura y hasta un signo de dos puntos.

{{com: parametros}}{{com2: parámetros}}

Y así…

Lista de comandos

EXPIRE

{{expire:hh:mm:ss}}

Indica el tiempo máximo de validez de toda la script. Si la script tarda más que dicho tiempo, se cancela.

El parámetro está expresado en horas, minutos, segundos desde el comienzo de ejecución de la script.

WAIT

{{wait:hh:mm:ss}}

Ordena esperar cierto tiempo, expresado en horas, minutos, segundos.

PROCISPRESENT

{{ProcIsPresent:ProccessName}}

Ordena esperar hasta tanto el proceso esté presente.

PROCISABSENT

{{ProcIsAbsent:ProccessName}}

Ordena esperar hasta tanto el proceso esté ausente.

IFACTIVEWINDOW

{{IfActiveWindow:name}}

Ordena esperar hasta tanto la ventana indicada sea la ventana activa.

IFNOTACTIVEWINDOW

{{IfNotActiveWindow:name}}

Ordena esperar hasta tanto la ventana indicada NO sea la ventana activa.

IFACTIVEWINDOWCLASS

{{IfActiveWindowClass}}

Ordena esperar hasta tanto la clase de ventana indicada sea la ventana activa.

IFNOTACTIVEWINDOWCLASS

{{IfActiveWindowClass}}

Ordena esperar hasta tanto la clase de ventana indicada NO sea la ventana activa.

KILLPROC

{{KillProc:ProccessName}}

Ordena eliminar un proceso, o todos los procesos con dicho nombre. El comando devuelve ok sin importar si pudo o no pudo eliminar el proceso, o si el proceso en realidad no existía.

TYPE

{{Type:text}}

Ordena tipear el siguiente texto. Pero no soporta todos los caracteres ASCII. Por razones de idioma y región, el teclado objetivo puede variar, y por eso no se soportan caracteres símbolos salvo los símbolos listados.

Además se soportan las siguientes palabras claves para invocar a las teclas aludidas.

‘BackSpace’ ‘Tab’ ‘Return’ ‘Esc’ ‘Home’ ‘End’ ‘Insert’ ‘Delete’ ‘Up’ ‘Left’ ‘Right’ ‘Down’ ‘F1’ ‘F2’ ‘F3’ ‘F4’ ‘F5’ ‘F6’ ‘F7’ ‘F8’ ‘F9’ ‘F10’ ‘F11’ ‘F12’ ‘PageDown’ ‘PageUp’ ‘Print’

Y se soporta el tipeado de los símolos: * + , – . / y la barra espaciadora.

Los dígitos del 0 a 9, y las letras A a la Z tanto en mayúsculas como en minúsculas así como la letra “Ñ” y “ñ”.

Como este comando es usado para enviar el usuario y password, es recomendable que los mismos no tengan caracteres que no sean soportados aquí.

IFSIGN

{{IfSign:DrivePathFileName,hash,hash,hash…}}

Ordena chequear si un archivo tiene el hash o uno de los hashes correctos.

Si tiene un hash correcto continua, caso contrario devuelve un error interrumpiendo la ejecución de la script, evitando el envío de passwords hacia archivos ejecutables sospechosos.

Esto es usado para validar lo que se ejecutará.

Se utilizará un hash de cáculo rápido, no estandarizado, para evitar laguear la ejecución y la script.

El uso más común es:

{{IfSign:%%TARGETPATHEXE%%,sign,sign,sign…}}

IFVISUAL

{{IfVisual:ox,oy,sign1,sign2,…..}}

Si reconoce cualquiera de las firmas visuales en la posición X e Y relativas al interior de la ventana activa permitirá continuar con la script, caso contrario espera.

Use la app Visual Signer para obtener la firma visual de lo que quieres que reconozca.

CLICK

{{Click:ox,oy}}

Ordena un click primario (el izquierdo), en la posición X e Y relativa al interior de la ventana activa.

SHELL

{{shell:DrivePath,command line}}

Ordena alguna ejecución. DrivePath define el contexto “directorio de trabajo” (directorio actual) bajo el cual se ejecutará la línea de comandos.

El uso más común es:

{{shell:%%TARGETPATH%%,%%TARGETPATHEXEPARAMS%%}}

END

{{END}}

Finaliza la script.

 

Herramientas necesarias

Title capturer app

File Signer

Class Viewer app

Visual Signer