Gestion des fonctionnalités sur une base de licence pour une application C++ [fermé]

nous essayons d'offrir un mécanisme de licence pour chaque fonctionnalité de notre application Linux est en cours d'exécution, et nous envisageons de le contrôler d'une manière centralisée en utilisant un serveur de licence:

notre objectif de licence est:

  1. Refuser les caractéristiques de l'exploitant n'a pas acheté.
  2. Offre des essais (fonctionnalités qui expirent si ils ne sont pas achetés).
  3. activer les caractéristiques pour les périodes de temps, et les rendre disponible seulement pour une certaine période de temps.

y a-t-il une licence de serveur qui nous permette de le faire (en gros, nous utiliserions des sockets pour communiquer avec notre application)? Que pouvons-nous faire d'autre (par exemple, utiliser un logiciel libre, Lire, etc.)?) pour commencer?

8
demandé sur Peter Mortensen 2009-03-12 13:22:19

8 réponses

avez-vous vraiment besoin de "téléphone maison"?

j'ai vu un système de licence relativement indolore, par lequel l'Utilisateur a été fourni un fichier XML qui décrit la période de validité de la licence, une adresse IP optionnelle, et la liste des caractéristiques" déverrouillées". Une signature numérique a été générée à l'aide de la clé privée du fournisseur, qui a été réinsérée dans le fichier de licence. Au démarrage, l'application lisait la licence, la validait, vérifiait L'IP et déverrouillait la caractéristiques en conséquence.

le fournisseur peut fournir de nouvelles licences au client lorsque cela est nécessaire.

bien que vous puissiez théoriquement tromper la licence en changeant l'heure locale de la machine et en faisant un faux pas avec l'adresse IP, dans ce cas, cela aurait rendu l'application assez difficile à utiliser, donc ce n'était pas un problème.

4
répondu small_duck 2009-03-12 23:18:50

si vous voulez vraiment utiliser un serveur de licence, assurez - vous que votre application n'a pas à le contacter tout le temps pour autoriser l'utilisation-cela ne conduira à aucune fin des problèmes lorsque les gens perdent leur connexion Internet ou votre serveur tombe en panne.

je suggère d'avoir quelque chose où une clé est téléchargée et stockée localement, réduisant ainsi les allers-retours vers le serveur tout le temps. La clé peut être cryptée en fonction des détails de la machine de l'utilisateur afin ces clés ne peuvent pas être partagées.

nous avons utilisé la clé matérielle HASP dans le passé et bien qu'ils travaillent defniely et fournissent une solution, je ne pense pas qu'ils sont ce que vous voulez car ils sont programmés une fois et c'est tout. Par exemple, vous ne seriez pas en mesure de mettre à jour la touche HASP pour fermer une période d'essai.

4
répondu Steve Claridge 2013-02-24 10:08:57

Il ya des moments où le logiciel a besoin de protection - consultez ces gars ici - ils fournissent des solutions matérielles et logicielles.

2
répondu James Fisher 2015-06-22 17:06:43

FLEXnet (anciennement connu sous le nom de FLEXlm) est un progiciel de licence couramment utilisé par les progiciels haut de gamme ou spécialisés, par exemple sur le marché de l'automatisation de la conception électronique. Vous pouvez verrouiller une licence sur une seule machine (par hostid, généralement une adresse MAC Ethernet) ou sur un dongle matériel portable, ou avoir un serveur en réseau pour gérer le partage d'un nombre limité de licences concurrentes pour les clients exécutant votre logiciel. Des licences peuvent être accordées pour une durée limitée temporel ou permanent, et peut aussi être limité par un numéro de version. Un fichier de licence décrit les fonctionnalités qui sont autorisés.

FLEXnet inclut plusieurs API pour l'intégration avec votre application, dont une pour C++. J'imagine qu'il utilise de la cryptographie à clé publique. Généralement, une application utilisant FLEXnet ne "Téléphone à la maison" que lorsque vous lui demandez par le biais de votre utilisation de l'API. De nombreuses applications vérifient la licence une fois, au démarrage, ou réservent une licence à partir du pool pour la durée de l'exécution de l'application.

vous payez un droit de licence annuel, bien sûr, pour utiliser FLEXnet dans vos produits, à partir de USD 1k. La redevance varie en fonction des revenus de votre entreprise et du nombre de plateformes (combinaison OS/CPU) sur lesquelles vous souhaitez que votre système de licence puisse fonctionner.

je dirais qu'il ne vaut pas la peine d'utiliser quelque chose comme FLEXnet si votre produit se vend pour moins de plusieurs milliers de dollars américains par siège. Il est difficile de s' utilisation (la source d'un bon pourcentage d'appels de soutien pour notre entreprise), mais les clients d'entreprise peuvent déjà être familiers avec l'utilisation, selon le marché.

FLEXnet, comme tous les stratagèmes de DRM dont j'ai entendu parler, est facilement craqué. Du moins je le suppose, puisque les versions déverrouillées de nos produits sont régulièrement trouvées sur les sites de warez.

1
répondu rkb 2009-04-07 12:29:23

C'est un Dilbert-esque façon de faire les choses. Suffit de dire non.

bien que détesté, il s'agit d'une caractéristique standard dans les logiciels spécialisés haut de gamme qui coûte des dizaines de milliers de dollars. Pensez aux scanners 3D et aux trucs CNC .

1
répondu shoosh 2013-02-24 09:22:56

ayant utilisé divers paquets qui utilisent des serveurs sous licence comme celui-ci, je peux vous dire que c'est un moyen sûr de rendre votre logiciel universellement détesté par ses utilisateurs.

0
répondu 2009-03-12 10:25:36

un logiciel de licence commun est flexlm . Cependant, j'y réfléchirais à deux fois si j'imposais ces restrictions à mes utilisateurs. Beaucoup d'utilisateurs ne les aiment pas, surtout dans L'environnement FOSS/Linux.

0
répondu lothar 2009-04-07 03:46:01

si vous prévoyez de coder quelque chose vous-même, un mécanisme commun que j'ai vu est de lier la licence à une adresse MAC .

0
répondu Bill Lynch 2013-02-24 10:13:21