Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Y-a-t-il un moyen de contrôler et de paramètrer un nombre de licences ?
Dans un premier temps, je souhaiterais faire çà sur des bases Oracle et PB10.
Merci d'avance,
Sebastouche
Hors ligne
salut,
tu parles de licence pb ?
ou de gestion de nombre d'utilisateurs ?
Hors ligne
Effectivement, je n'avais pas précisé.
Il s'agit de licences applicatives.
Je souhaite pouvoir paramètrer un nombre maxi d'utilisateurs en simultané.
Sebastouche
Dernière modification par Sebastouche (10-06-2008 07:26:16)
Hors ligne
Bonjour, un moyen consiste à regarder le nombre de connexions à Oracle, du genre :
select * from v$session where username is not null order by logon_time, sid
Hors ligne
Identifer, le nombre de connexions, je savais à peu près le faire.
Mon souci est plutôt de trouver un moyen de paramètrer un nombre de connexions.
Que cette information puisse être modifiable (ex: Achat de licenses supplémentaires), mais non compréhensible par les clients.
Une sorte d'encryptage en somme.
Sebastouche
Hors ligne
En principe 1 session d'application lancée => 1 connexion dans la BDD
Tu peux envisager de rechercher cela dans le Open de ton appli et de quitter si le nombre dépasse ta limite. (limite que tu pourrais stocker dans la base voire en dur dans ton exe selon)
Hors ligne
C'est l'idée que j'envisageais pour contrôler le nombre de connexions effectives.
C'est pour le paramétrage du nombre de licences maxi, je recherchais quelquechose d'un peu "Sioux".
Je souhaite éviter des informations en "dur". Si un client achète de nouvelles licences, je n'ai pas trop envie de recompiler tout ou partie de l'application.
C'est un peu tordu ce que je recherche...
Sebastouche
Dernière modification par Sebastouche (10-06-2008 07:25:32)
Hors ligne
Le plus simple reste de crypter et stocker le nombre de licences utilisables en base dans une table de paramètre propre à la gestion des licences(attention au restore ).
Pour le contrôle des clients à la connexion, le nombre de session permet de brider le nombre de clients simultanés mais pas le nombre total de clients installés.
Une autre solution serait de gérer des jetons. C'est à dire d'avoir une autre table où chaque client s'identifie de façon unique (adresse mac, nom hote, etc). A chaque connexion d'un client, soit il existe déjà un enreg pour lui et il peut se reconnecter, soit il n'existe pas dans la liste et l'application vérifie si le nombre de clients déjà déclarés est inférieur au nombre maxi de licence si oui, elle ajoute le nouveau client automatiquement sinon il ne peut pas se connecter.
Un mixte des deux solutions permet de définir un nombre maxi de licence utilisable et un nombre maxi d'utilisateur connectés en simultanés.
Pour des raisons de sécurité, tu peux stocker le nombre de jetons déjà enregistrés dans la même table que le nombre maxi de licence (en le cryptant également bien sur). Comme ça si un utilisateur vire des lignes de la table des jetons à la main en pensant en récupérer il ne le pourra pas... Si tu gères une désinstallation, il suffit que la procédure de désinstallation vire le jeton du poste concerné et mette à jour le nombre maxi de jetons utilisés.
En gros, tout le problème se résume à écrire un algo de cryptage/décryptage de nombre. Il doit en exister des tonnes sur le net. Sinon reste la solution de le faire soit même : un nombre + clé => résultat crypté ; résultat crypté + clé => nombre en clair.
Hors ligne
juste pour dire qu'il exste dan orecle des triggers de connection
CREATE OR REPLACE TRIGGER SYS.CONNECTIONOFF BEFORE LOGOFF ON DATABASE BEGIN SYS.P_CONNECTIONOFF; END;
CREATE OR REPLACE TRIGGER SYS.CONNECTIONON AFTER LOGON ON DATABASE DECLARE BEGIN SYS.P_CONNECTIONON; END;
reste a coder les procedures SYS.P_CONNECTIONON & SYS.P_CONNECTIONOFF;
Hors ligne
Bonjour,
Cà c'en est une idée qu'elle est bonne !
Je vous tiendrai au courant sur la solution envisagée.
Merci,
Sebastouche
P.S. : Si d'autres ont des solutions à proposer, je suis preneur
Hors ligne
Bonjour,
Pour information, nous allons certainement utiliser le package Oracle DBMS_OBFUSCATION_TOOLKIT qui permet un cryptage/décryptage.
Sébastouche
Hors ligne